summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/Makefile.in8
-rw-r--r--source3/configure.in42
2 files changed, 46 insertions, 4 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 69a08a0c2a..01aba442da 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -18,7 +18,7 @@ datarootdir=@datarootdir@
selftest_prefix=@selftest_prefix@
smbtorture4_path=@smbtorture4_path@
-LIBS=@LIBS@
+LIBS=@LIBS@ @LIBTALLOC_LIBS@
CC=@CC@
SHLD=@SHLD@
LIB_PATH_VAR=@LIB_PATH_VAR@
@@ -300,7 +300,7 @@ TALLOC_OBJ = @TALLOC_OBJS@
LIBTALLOC_OBJ0 = $(TALLOC_OBJ)
LIBTALLOC_OBJ = $(LIBTALLOC_OBJ0)
-LIBSAMBAUTIL_OBJ = $(TALLOC_OBJ) \
+LIBSAMBAUTIL_OBJ = @LIBTALLOC_STATIC@ \
$(LIBREPLACE_OBJ) \
$(SOCKET_WRAPPER_OBJ) \
$(NSS_WRAPPER_OBJ)
@@ -353,7 +353,7 @@ KRBCLIENT_OBJ = libads/kerberos.o libads/ads_status.o
LIBADDNS_OBJ0 = libaddns/dnsrecord.o libaddns/dnsutils.o libaddns/dnssock.o \
libaddns/dnsgss.o libaddns/dnsmarshall.o
-LIBADDNS_OBJ = $(LIBADDNS_OBJ0) $(TALLOC_OBJ)
+LIBADDNS_OBJ = $(LIBADDNS_OBJ0) @LIBTALLOC_STATIC@
LIBWBCLIENT_OBJ0 = nsswitch/libwbclient/wbclient.o \
nsswitch/libwbclient/wbc_util.o \
@@ -361,7 +361,7 @@ LIBWBCLIENT_OBJ0 = nsswitch/libwbclient/wbclient.o \
nsswitch/libwbclient/wbc_idmap.o \
nsswitch/libwbclient/wbc_sid.o \
nsswitch/libwbclient/wbc_pam.o
-LIBWBCLIENT_OBJ = $(LIBWBCLIENT_OBJ0) $(WBCOMMON_OBJ) $(TALLOC_OBJ) $(LIBREPLACE_OBJ)
+LIBWBCLIENT_OBJ = $(LIBWBCLIENT_OBJ0) $(WBCOMMON_OBJ) @LIBTALLOC_STATIC@ $(LIBREPLACE_OBJ)
LIBGPO_OBJ0 = libgpo/gpo_ldap.o libgpo/gpo_ini.o libgpo/gpo_util.o \
libgpo/gpo_fetch.o libgpo/gpo_filesync.o libgpo/gpo_sec.o
diff --git a/source3/configure.in b/source3/configure.in
index 8d8fcab03d..eab8645b37 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -336,6 +336,8 @@ AC_SUBST(INSTALL_LIBTALLOC)
AC_SUBST(UNINSTALL_LIBTALLOC)
AC_SUBST(LIBTALLOC_SHARED)
AC_SUBST(LIBTALLOC)
+AC_SUBST(LIBTALLOC_STATIC)
+AC_SUBST(LIBTALLOC_LIBS)
AC_SUBST(INSTALL_LIBWBCLIENT)
AC_SUBST(UNINSTALL_LIBWBCLIENT)
@@ -5127,11 +5129,45 @@ if test $enable_static = yes; then
fi
#################################################
+# --with-static-libs=LIBS:
+# link (internal) libs dynamically or statically?
+#
+# If a subsystem is built as a library then this controls whether they are
+# linked into Samba targets statically or dynamically:
+#
+# * If we build the shared library at all, we link dynamically by default.
+#
+# * We only link statically if we don't build shared or if the library
+# appears in the --with-static-libs configure option.
+#
+# Example:
+# --with-static-libs=talloc makes use of libtalloc.a instead
+# of linking the dynamic variant with -ltalloc.
+#
+# NOTE: This option only affects libraries that we do not only build
+# but that samba also links against as libraries (as opposed to linking
+# the plain object files. - This has to be configured in Makefile.in.
+# So in particular it does not harm to give invalid or unknown names here.
+#
+
+AC_ARG_WITH([static-libs],
+ [AC_HELP_STRING([--with-static-libs=LIBS],
+ [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
+ [AS_IF([test $withval],
+ [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
+ [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
+ eval LIB_$lib=STATIC
+ done], [])],
+ [])
+
+#################################################
# should we build libtalloc?
INSTALL_LIBTALLOC=
UNINSTALL_LIBTALLOC=
LIBTALLOC_SHARED=
LIBTALLOC=
+LIBTALLOC_STATIC=
+LIBTALLOC_LIBS=
AC_MSG_CHECKING(whether to build the libtalloc shared library)
AC_ARG_WITH(libtalloc,
@@ -5157,12 +5193,18 @@ if test x"$samba_cv_with_libtalloc" = "xyes" -a $BLDSHARED = true; then
LIBTALLOC_SHARED=bin/libtalloc.$SHLIBEXT
LIBTALLOC=libtalloc
AC_MSG_RESULT(yes)
+ if test x"$LIB_TALLOC" = "xSTATIC" ; then
+ LIBTALLOC_STATIC=bin/libtalloc.a
+ else
+ LIBTALLOC_LIBS=-ltalloc
+ fi
else
enable_static=yes
AC_MSG_RESULT(no shared library support -- will supply static library)
fi
if test $enable_static = yes; then
LIBTALLOC=libtalloc
+ LIBTALLOC_STATIC=bin/libtalloc.a
fi
INSTALL_LIBTALLOC=installlibtalloc
UNINSTALL_LIBTALLOC=uninstalllibtalloc