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
This commit is contained in:
Harald Welte 2015-11-21 00:41:43 +01:00
parent b32a19467f
commit a10ef29b47
4 changed files with 59 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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}/