[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2159-gbc4482c

Michael Adam obnox at samba.org
Wed Feb 13 08:26:18 GMT 2008


The branch, v3-2-test has been updated
       via  bc4482cde1571bb1cb2d55106fc8ee22d26efa23 (commit)
       via  97a60565ad6657af8e4a3b8b38b69b48597e3eec (commit)
       via  d1bec3882908086747e1176a275617700cada097 (commit)
       via  dddfdee90ee30d225e08d7f1685409f62fabf7c1 (commit)
       via  71b990d9d687b517dec3d4eff67b6a3fe417a12a (commit)
       via  880238c65c13c8b280e2f34431aa331a16af4a7b (commit)
       via  ed2337e3a24e800e0a445a9ffc7d735d49abc6d7 (commit)
       via  cb7f42bcbc6cbe84823402cd3c7bb9327669ed9b (commit)
      from  5116c9d9f4bd1a523ac7a2a31b3b1552388f040f (commit)

http://gitweb.samba.org/?samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit bc4482cde1571bb1cb2d55106fc8ee22d26efa23
Author: Michael Adam <obnox at samba.org>
Date:   Tue Feb 12 15:28:51 2008 +0100

    Fix some comment typos.
    
    Michael

commit 97a60565ad6657af8e4a3b8b38b69b48597e3eec
Author: Michael Adam <obnox at samba.org>
Date:   Tue Feb 12 15:26:00 2008 +0100

    Remove some unneded variables: we always build and install some talloc libs.
    
    LIBTALLOC, INSTALL_LIBTALLOC, UNINSTALL_LIBTALLOC
    
    Michael

commit d1bec3882908086747e1176a275617700cada097
Author: Michael Adam <obnox at samba.org>
Date:   Tue Feb 12 15:18:56 2008 +0100

    Put talloc lib targets into variables and uses these.
    
    LIBTALLOC_STATIC_TARGET and LIBTALLOC_SHARED_TARGET.
    
    Michael

commit dddfdee90ee30d225e08d7f1685409f62fabf7c1
Author: Michael Adam <obnox at samba.org>
Date:   Tue Feb 12 14:43:20 2008 +0100

    Simplify code by moving duplicate assignment to common place.
    
    Michael

commit 71b990d9d687b517dec3d4eff67b6a3fe417a12a
Author: Michael Adam <obnox at samba.org>
Date:   Fri Feb 8 14:41:30 2008 +0100

    Add support for linking talloc library statically or dynamically into samba.
    
    This also establishes a general configure mechanism to control static vs
    dynamic linking of internal subsystems built as libraries:
    This first simple approach is as follows.
    
    * It applies only to "subsystems" that we build as libraries and for
      that linking samba against the libraries (as opposed to linking in
      the plain object files) has been configured in Makefile.in.
    
    * If we do build the shared library, then we link dynamically by default.
    
    * We only link statically if we don't build shared or if the library
      appears in the new --with-static-libs configure option
      (comma-separated list).
    
    Example (currently only one):
      --with-static-libs=talloc makes use of libtalloc.a instead
      of linking the dynamic variant with -ltalloc.
    
    A possilble way to setup linking against libraries in Makefile.in is this:
    For a subsystem, "mylib" say, we build bin/libmylib.a and bin/libmylib.so.
    The subsystem usually has a MYLIB_OBJ definition in Makefile.in.  Define
    LIBMYLIB_STATIC=bin/libmylib.a and and LIBMYLIB_LIBS=-lmylib in configure.in
    as controlled by presence of "mylib" in the list given to --with-static-libs
    and change uses of $(MYLIB_OBJ) to @LIBMYLIB_STATIC@ in Makefile.in and
    add @LIBMYLIB_LIBS@ to the link targets as needed.
    
    In the example of talloc, which is needed everywhere, I have simply
    added @LIBTALLOC_LIBS@ to the definition of "LIBS" in Makefile.in.
    For other subsystems, one will have to be more careful.
    
    Michael

commit 880238c65c13c8b280e2f34431aa331a16af4a7b
Author: Michael Adam <obnox at samba.org>
Date:   Fri Feb 8 17:16:51 2008 +0100

    Use data from lib/talloc/libtalloc.m4 instead of hard coded data.
    
    Michael

commit ed2337e3a24e800e0a445a9ffc7d735d49abc6d7
Author: Michael Adam <obnox at samba.org>
Date:   Mon Feb 11 16:09:19 2008 +0100

    Move the AC_LIBREPLACE_CC_CHECKS up before building SAMBA_CPPFLAGS.
    
    Michael

commit cb7f42bcbc6cbe84823402cd3c7bb9327669ed9b
Author: Michael Adam <obnox at samba.org>
Date:   Fri Feb 8 01:00:03 2008 +0100

    Add support for building libtalloc.a and libtalloc.so.
    
    Michael

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile.in         |   46 +++++++++++++++----
 source/configure.in        |  105 +++++++++++++++++++++++++++++++++++++++++---
 source/library-versions.in |    1 +
 3 files changed, 135 insertions(+), 17 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index 4c1fef4..5de5bc4 100644
--- a/source/Makefile.in
+++ b/source/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@
@@ -141,6 +141,9 @@ CODEPAGEDIR = @codepagedir@
 # the directory where pid files go
 PIDDIR = @piddir@
 
+LIBTALLOC_SHARED_TARGET=@LIBTALLOC_SHARED_TARGET@
+LIBTALLOC_STATIC_TARGET=@LIBTALLOC_STATIC_TARGET@
+LIBTALLOC=$(LIBTALLOC_STATIC_TARGET) @LIBTALLOC_SHARED@
 LIBSMBCLIENT=bin/libsmbclient.a @LIBSMBCLIENT_SHARED@
 LIBSMBSHAREMODES=bin/libsmbsharemodes.a @LIBSMBSHAREMODES_SHARED@
 LIBADDNS=bin/libaddns.a @LIBADDNS_SHARED@
@@ -203,7 +206,7 @@ EVERYTHING_PROGS = bin/debug2html at EXEEXT@ bin/smbfilter at EXEEXT@ \
 	bin/log2pcap at EXEEXT@ bin/sharesec at EXEEXT@ bin/ndrdump at EXEEXT@ \
 	bin/vlp at EXEEXT@
 
-SHLIBS = @LIBWBCLIENT@ @LIBSMBCLIENT@ @LIBSMBSHAREMODES@ @LIBADDNS@ @LIBNETAPI@
+SHLIBS = libtalloc @LIBWBCLIENT@ @LIBSMBCLIENT@ @LIBSMBSHAREMODES@ @LIBADDNS@ @LIBNETAPI@
 
 PAM_MODULES = @PAM_MODULES@
 
@@ -293,9 +296,13 @@ LIBREPLACE_OBJ = @LIBREPLACE_OBJS@
 SOCKET_WRAPPER_OBJ = @SOCKET_WRAPPER_OBJS@
 NSS_WRAPPER_OBJ = @NSS_WRAPPER_OBJS@
 
-TALLOC_OBJ = lib/talloc/talloc.o
+TALLOC_OBJ = @TALLOC_OBJS@
 
-LIBSAMBAUTIL_OBJ = $(TALLOC_OBJ) \
+
+LIBTALLOC_OBJ0 = $(TALLOC_OBJ)
+LIBTALLOC_OBJ = $(LIBTALLOC_OBJ0)
+
+LIBSAMBAUTIL_OBJ = @LIBTALLOC_STATIC@ \
 		$(LIBREPLACE_OBJ) \
 		$(SOCKET_WRAPPER_OBJ) \
 		$(NSS_WRAPPER_OBJ)
@@ -348,7 +355,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 \
@@ -356,7 +363,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
@@ -877,7 +884,7 @@ SHARESEC_OBJ  = $(SHARESEC_OBJ0) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(REGOBJS_OBJ)
 		$(ERRORMAP_OBJ) $(RPC_PARSE_OBJ1) $(LIBSAMBA_OBJ) $(DOSERR_OBJ) \
                 $(POPT_LIB_OBJ) $(SECRETS_OBJ)
 
-TALLOCTORT_OBJ = lib/talloc/testsuite.o $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
+TALLOCTORT_OBJ = @tallocdir@/testsuite.o $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
                  $(RPC_PARSE_OBJ1) $(DOSERR_OBJ) $(LIBSAMBA_OBJ) $(SECRETS_OBJ)
 
 REPLACETORT_OBJ = lib/replace/test/testsuite.o \
@@ -1110,7 +1117,7 @@ idl:
 #####################################################################
 
 
-everything: all libsmbclient libnetapi debug2html smbfilter talloctort replacetort modules torture \
+everything: all libtalloc libsmbclient libnetapi debug2html smbfilter talloctort replacetort modules torture \
 	$(EVERYTHING_PROGS)
 
 .SUFFIXES:
@@ -1436,6 +1443,16 @@ bin/ldbdel: $(BINARY_PREREQS) $(LDBDEL_OBJ) @BUILD_POPT@ @LIBWBCLIENT_SHARED@
 		@POPTLIBS@ $(KRB5LIBS) $(UUID_LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) \
 		$(TERMLDFLAGS) $(TERMLIBS) $(NSCD_LIBS) @WINBIND_LIBS@
 
+$(LIBTALLOC_SHARED_TARGET): $(BINARY_PREREQS) $(LIBTALLOC_OBJ)
+	@echo Linking shared library $@
+	@$(SHLD_DSO) $(LIBTALLOC_OBJ) \
+		@SONAMEFLAG@`basename $@`.$(SONAME_VER)
+	@ln -s -f `basename $@` $@.$(SONAME_VER)
+
+$(LIBTALLOC_STATIC_TARGET): $(BINARY_PREREQS) $(LIBTALLOC_OBJ0)
+	@echo Linking non-shared library $@
+	@-$(AR) -rc $@ $(LIBTALLOC_OBJ0)
+
 bin/libwbclient. at SHLIBEXT@: $(BINARY_PREREQS) $(LIBWBCLIENT_OBJ)
 	@echo Linking shared library $@
 	@$(SHLD_DSO) $(LIBWBCLIENT_OBJ) \
@@ -1499,6 +1516,7 @@ bin/libbigballofmud. at SHLIBEXT@: $(BINARY_PREREQS) $(LIBBIGBALLOFMUD_OBJ)
 # it can be fixed or if they just can't be called from a static
 # library.
 
+libtalloc: $(LIBTALLOC)
 libsmbclient: $(LIBSMBCLIENT)
 libsmbsharemodes: $(LIBSMBSHAREMODES)
 libaddns: $(LIBADDNS)
@@ -1868,6 +1886,7 @@ bin/timelimit at EXEEXT@: script/tests/timelimit.o
 
 install: installservers installbin @INSTALL_CIFSMOUNT@ @INSTALL_CIFSSPNEGO@ installman \
 		installscripts installdat installmodules @SWAT_INSTALL_TARGETS@ \
+		installlibtalloc \
 		@INSTALL_LIBSMBCLIENT@ @INSTALL_PAM_MODULES@ \
 		@INSTALL_LIBSMBSHAREMODES@ @INSTALL_LIBWBCLIENT@ @INSTALL_LIBNETAPI@
 
@@ -1936,6 +1955,12 @@ installclientlib: installdirs libsmbclient
 	@$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) ${prefix}/include
 	-$(INSTALLCMD) -m $(INSTALLPERMS_DATA) $(srcdir)/include/libsmbclient.h $(DESTDIR)${prefix}/include
 
+installlibtalloc: installdirs libtalloc
+	@$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
+	-$(INSTALLLIBCMD_SH) $(LIBTALLOC_SHARED_TARGET) $(DESTDIR)$(LIBDIR)
+	-$(INSTALLLIBCMD_A) $(LIBTALLOC_STATIC_TARGET) $(DESTDIR)$(LIBDIR)
+	-$(INSTALLCMD) -m $(INSTALLPERMS_DATA) @tallocdir@/talloc.h $(DESTDIR)${prefix}/include
+
 installlibsmbsharemodes: installdirs libsmbsharemodes
 	@$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(LIBDIR)
 	-$(INSTALLLIBCMD_SH) bin/libsmbsharemodes. at SHLIBEXT@ $(DESTDIR)$(LIBDIR)
@@ -1993,7 +2018,7 @@ showlayout:
 	@echo "  swatdir:     $(SWATDIR)"
 
 
-uninstall: uninstallman uninstallservers uninstallbin @UNINSTALL_CIFSMOUNT@ @UNINSTALL_CIFSSPNEGO@ uninstallscripts uninstalldat uninstallswat uninstallmodules @UNINSTALL_LIBSMBCLIENT@ @UNINSTALL_PAM_MODULES@ @UNINSTALL_LIBSMBSHAREMODES@ @UNINSTALL_LIBNETAPI@
+uninstall: uninstallman uninstallservers uninstallbin @UNINSTALL_CIFSMOUNT@ @UNINSTALL_CIFSSPNEGO@ uninstallscripts uninstalldat uninstallswat uninstallmodules uninstalllibtalloc @UNINSTALL_LIBSMBCLIENT@ @UNINSTALL_PAM_MODULES@ @UNINSTALL_LIBSMBSHAREMODES@ @UNINSTALL_LIBNETAPI@
 
 uninstallman:
 	@$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) C
@@ -2064,7 +2089,8 @@ clean: delheaders
 		../testsuite/*/*.o \
 		*/*. at SHLIBEXT@ */*/*. at SHLIBEXT@ */*/*/*. at SHLIBEXT@ \
 		$(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(ROOT_SBIN_PROGS) \
-		$(MODULES) $(TORTURE_PROGS) $(LIBSMBCLIENT) $(LIBADDNS) \
+		$(MODULES) $(TORTURE_PROGS) \
+		$(LIBTALLOC) $(LIBSMBCLIENT) $(LIBADDNS) \
 		$(LIBSMBSHAREMODES) $(EVERYTHING_PROGS) $(LIBNETAPI) \
 		bin/libwbclient.so.0 bin/timelimit \
 		.headers.stamp */src/*.o proto_exists
diff --git a/source/configure.in b/source/configure.in
index 9e4692b..074bdfa 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -271,9 +271,19 @@ do
 done
 ])
 
+AC_LIBREPLACE_CC_CHECKS
+
+m4_include(lib/talloc/libtalloc.m4)
+
+TALLOC_OBJS=""
+for obj in ${TALLOC_OBJ}; do
+	TALLOC_OBJS="${TALLOCOBJS} ${tallocdir}/${obj}"
+done
+AC_SUBST(TALLOC_OBJS)
+
 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
-SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
@@ -322,6 +332,12 @@ AC_SUBST(UNINSTALL_LIBADDNS)
 AC_SUBST(LIBADDNS_SHARED)
 AC_SUBST(LIBADDNS)
 
+AC_SUBST(LIBTALLOC_STATIC_TARGET)
+AC_SUBST(LIBTALLOC_SHARED_TARGET)
+AC_SUBST(LIBTALLOC_SHARED)
+AC_SUBST(LIBTALLOC_STATIC)
+AC_SUBST(LIBTALLOC_LIBS)
+
 AC_SUBST(INSTALL_LIBWBCLIENT)
 AC_SUBST(UNINSTALL_LIBWBCLIENT)
 AC_SUBST(LIBWBCLIENT_SHARED)
@@ -387,8 +403,6 @@ fi
 
 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
 
-AC_LIBREPLACE_CC_CHECKS
-
 m4_include(lib/socket_wrapper/config.m4)
 m4_include(lib/nss_wrapper/config.m4)
 
@@ -5114,6 +5128,83 @@ 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?
+LIBTALLOC_SHARED_TARGET=bin/libtalloc.$SHLIBEXT
+LIBTALLOC_STATIC_TARGET=bin/libtalloc.a
+LIBTALLOC_SHARED=
+LIBTALLOC_STATIC=
+LIBTALLOC_LIBS=
+
+AC_MSG_CHECKING(whether to build the libtalloc shared library)
+AC_ARG_WITH(libtalloc,
+[AS_HELP_STRING([--with-libtalloc],
+	[Build the libtalloc shared library (default=yes if shared libs supported)])],
+[
+case "$withval" in
+	*)
+		AC_MSG_RESULT(no)
+		;;
+	yes)
+		samba_cv_with_libtalloc=yes
+		;;
+esac
+],
+[
+# if unspecified, default is to build it if possible.
+samba_cv_with_libtalloc=yes
+]
+)
+
+if test x"$samba_cv_with_libtalloc" = "xyes" -a $BLDSHARED = true; then
+	LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET
+	AC_MSG_RESULT(yes)
+	if test x"$LIB_TALLOC" = "xSTATIC" ; then
+		LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
+	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_STATIC=$LIBTALLOC_STATIC_TARGET
+fi
+
+
+#################################################
 # should we build libnetapi?
 INSTALL_LIBNETAPI=
 UNINSTALL_LIBNETAPI=
@@ -5143,7 +5234,7 @@ AC_ARG_WITH(libnetapi,
      ;;
   esac ],
 [
-# if unspecified, default is to built it if possible.
+# if unspecified, default is to build it if possible.
   if test $BLDSHARED = true; then
      LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
      LIBNETAPI=libnetapi
@@ -5221,7 +5312,7 @@ AC_ARG_WITH(libsmbclient,
      ;;
   esac ],
 [
-# if unspecified, default is to built it if possible.
+# if unspecified, default is to build it if possible.
   if test $BLDSHARED = true; then
      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
      LIBSMBCLIENT=libsmbclient
@@ -5264,7 +5355,7 @@ AC_ARG_WITH(libsmbsharemodes,
      ;;
   esac ],
 [
-# if unspecified, default is to built it if possible.
+# if unspecified, default is to build it if possible.
   if test $BLDSHARED = true; then
      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
      LIBSMBSHAREMODES=libsmbsharemodes
@@ -6416,7 +6507,7 @@ do
 	fi
 done
 
-dnl Always built these modules static
+dnl Always build these modules static
 MODULE_rpc_spoolss=STATIC
 MODULE_rpc_srvsvc2=STATIC
 MODULE_idmap_tdb=STATIC
diff --git a/source/library-versions.in b/source/library-versions.in
index cdd1807..2d69d3e 100644
--- a/source/library-versions.in
+++ b/source/library-versions.in
@@ -2,6 +2,7 @@
 ## Basic script for defining the major and minor library revision numbers
 ## Makefile_target:major:minor
 ##
+bin/libtalloc. at SHLIBEXT@:1:0
 bin/libsmbclient. at SHLIBEXT@:0:1
 bin/libsmbsharemodes. at SHLIBEXT@:0:2
 bin/libaddns. at SHLIBEXT@:0:1


-- 
Samba Shared Repository


More information about the samba-cvs mailing list