use system-wide libtalloc with --enable-system-talloc

This introduces a new configure flag by which the libosmocore-internal
talloc code is not compiled, but rather a system-wide libtalloc is used.

When we started openbsc/libosmocore in 2008, libtalloc was not widely
present on systems yet.  This has changed meanwhile, and we should
simply use the system-wide library
diff --git a/configure.ac b/configure.ac
index 9a744b1..126e9a5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -97,11 +97,25 @@
 AC_ARG_ENABLE(talloc,
 	[AS_HELP_STRING(
 		[--disable-talloc],
-		[Disable building talloc memory allocator]
+		[Disable building libosmocore internal talloc memory allocator]
 	)],
 	[enable_talloc=$enableval], [enable_talloc="yes"])
 AM_CONDITIONAL(ENABLE_TALLOC, [test x"$enable_talloc" = x"yes"])
 
+AC_ARG_ENABLE(system-talloc,
+	[AS_HELP_STRING(
+		[--enable-system-talloc],
+		[Enable using a system-level talloc library]
+	)],
+	[enable_system_talloc=$enableval], [enable_system_talloc="no"])
+AM_CONDITIONAL(ENABLE_SYSTEM_TALLOC, [test x"$enable_system_talloc" = x"yes"])
+if test x"$enable_system_talloc" = x"yes"; then
+	PKG_CHECK_MODULES(TALLOC, talloc)
+	if test x"$enable_talloc" = x"yes"; then
+		AC_MSG_ERROR([You cannot enable both internal and system talloc])
+	fi
+fi
+
 AC_ARG_ENABLE(plugin,
 	[AS_HELP_STRING(
 		[--disable-plugin],
@@ -191,6 +205,35 @@
 	AC_DEFINE([PANIC_INFLOOP],[1],[Use infinite loop on panic rather than fprintf/abort])
 fi
 
+AC_OUTPUT_COMMANDS([
+	if test -n "$CONFIG_FILES" && test -n "$CONFIG_HEADERS"; then
+		CONFIG_OTHER=${CONFIG_OTHER-include/osmocom/core/talloc.h}
+	fi
+	case "$CONFIG_OTHER" in
+	"include/osmocom/core/talloc.h")
+		outfile=include/osmocom/core/talloc.h
+		stampfile=include/stamp-talloc
+		tmpfile=${outfile}T
+		dirname="sed s,^.*/,,g"
+
+		echo creating $outfile
+		cat > $outfile << _EOF_
+/* DO NOT EDIT THIS FILE!  It has been automaticall generated from
+ * configure.ac on host: `(hostname || uname -n) 2>/dev/null | sed 1q`
+ */
+#pragma once
+_EOF_
+		if test x"$enable_system_talloc" = x"yes"; then
+			echo '#include <talloc.h>' >> $outfile
+		else
+			echo '#include <osmocom/core/talloc-internal.h>' >> $outfile
+		fi
+	esac
+],[
+   srcdir=$srcdir
+   enable_system_talloc=$enable_system_talloc
+])
+
 
 AC_OUTPUT(
 	libosmocore.pc