aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac45
-rw-r--r--include/Makefile.am15
-rw-r--r--include/osmocom/core/talloc-internal.h (renamed from include/osmocom/core/talloc.h)0
-rw-r--r--libosmocore.pc.in2
4 files changed, 59 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 9a744b10..126e9a56 100644
--- a/configure.ac
+++ b/configure.ac
@@ -97,11 +97,25 @@ AM_CONDITIONAL(ENABLE_PCSC, test "x$enable_pcsc" = "xyes")
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 @@ then
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
diff --git a/include/Makefile.am b/include/Makefile.am
index 20735800..b8739e02 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -35,6 +35,7 @@ nobase_include_HEADERS = \
osmocom/core/socket.h \
osmocom/core/statistics.h \
osmocom/core/strrb.h \
+ osmocom/core/talloc.h \
osmocom/core/timer.h \
osmocom/core/utils.h \
osmocom/core/write_queue.h \
@@ -97,7 +98,7 @@ nobase_include_HEADERS += osmocom/core/plugin.h
endif
if ENABLE_TALLOC
-nobase_include_HEADERS += osmocom/core/talloc.h
+nobase_include_HEADERS += osmocom/core/talloc-internal.h
endif
if ENABLE_MSGFILE
@@ -133,3 +134,15 @@ osmocom/core/bit%gen.h: osmocom/core/bitXXgen.h.tpl
osmocom/core/crc%gen.h: osmocom/core/crcXXgen.h.tpl
$(AM_V_GEN)$(MKDIR_P) $(dir $@)
$(AM_V_GEN)sed -e's/XX/$*/g' $< > $@
+
+# regenerate talloc.h with config.status every time config.status changes
+osmocom/core/talloc.h: stamp-talloc
+ :
+
+stamp-talloc: $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=osmocom/core/talloc.h \
+ $(SHELL) ./config.status
+ echo timestamp > $@
+
+DISTCLEANFILES = stamp-talloc
diff --git a/include/osmocom/core/talloc.h b/include/osmocom/core/talloc-internal.h
index dde102b2..dde102b2 100644
--- a/include/osmocom/core/talloc.h
+++ b/include/osmocom/core/talloc-internal.h
diff --git a/libosmocore.pc.in b/libosmocore.pc.in
index 7c298693..0666e0c7 100644
--- a/libosmocore.pc.in
+++ b/libosmocore.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: Osmocom Core Library
Description: C Utility Library
Version: @VERSION@
-Libs: -L${libdir} -losmocore
+Libs: -L${libdir} @TALLOC_LIBS@ -losmocore
Cflags: -I${includedir}/