selftest_prefix=@selftest_prefix@
smbtorture4_path=@smbtorture4_path@
-LIBS=@LIBS@
+LIBS=@LIBS@ @LIBTALLOC_LIBS@
CC=@CC@
SHLD=@SHLD@
LIB_PATH_VAR=@LIB_PATH_VAR@
LIBTALLOC_OBJ0 = $(TALLOC_OBJ)
LIBTALLOC_OBJ = $(LIBTALLOC_OBJ0)
-LIBSAMBAUTIL_OBJ = $(TALLOC_OBJ) \
+LIBSAMBAUTIL_OBJ = @LIBTALLOC_STATIC@ \
$(LIBREPLACE_OBJ) \
$(SOCKET_WRAPPER_OBJ) \
$(NSS_WRAPPER_OBJ)
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 \
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
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)
UNINSTALLLIBCMD_A="rm -f"
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,
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