From 3a246ac46b9ae2bbc62498092a616b87732ab818 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 3 Jul 2007 19:55:02 +0000 Subject: r23689: Squashed commit of the following: commit 0d4bbd197198a94bf4e29e0ccd175a40a60097f3 Author: Gerald (Jerry) Carter Date: Mon Jul 2 20:08:19 2007 -0500 Introduce GNU ld linker export-script for hiding non-public symbols in shared libraries. Based on initial patch from Julien Cristau and suggestions from James Peach . Currently the libsmbsharemodes libraries still exports *. Signed off on my Derrell as well. (This used to be commit c42cf731b4b259c5c1a874fd1837ca85144f1a58) --- source3/Makefile.in | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) (limited to 'source3/Makefile.in') diff --git a/source3/Makefile.in b/source3/Makefile.in index 9910f0feb5..bc0fb2b0ff 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -21,6 +21,12 @@ LIBS=@LIBS@ CC=@CC@ SHLD=@SHLD@ +## Dynamic shared libraries build settings +DSO_EXPORTS_CMD=-Wl,--version-script,exports/`basename $@ | sed 's/@SHLIBEXT@$$/syms/'` +DSO_EXPORTS=@DSO_EXPORTS@ +SONAME_VER=`grep ^$@ $(srcdir)/library-versions | cut -d: -f2` +SHLD_DSO = $(SHLD) $(LDSHFLAGS) $(DSO_EXPORTS) + # Add $(DEVELOPER_CFLAGS) to $(CFLAGS) to enable extra compiler # (GCC) warnings. This is done automtically for --enable-developer # and --enable-krb5developer. @@ -125,20 +131,9 @@ LOCKDIR = @lockdir@ PIDDIR = @piddir@ LIBSMBCLIENT=bin/libsmbclient.a @LIBSMBCLIENT_SHARED@ -LIBSMBCLIENT_MAJOR=0 -LIBSMBCLIENT_MINOR=1 - LIBMSRPC=bin/libmsrpc.a @LIBMSRPC_SHARED@ -LIBMSRPC_MAJOR=0 -LIBMSRPC_MINOR=1 - LIBSMBSHAREMODES=bin/libsmbsharemodes.a @LIBSMBSHAREMODES_SHARED@ -LIBSMBSHAREMODES_MAJOR=0 -LIBSMBSHAREMODES_MINOR=2 - LIBADDNS=bin/libaddns.a @LIBADDNS_SHARED@ -LIBADDNS_MAJOR=0 -LIBADDNS_MINOR=1 FLAGS1 = $(CFLAGS) @FLAGS1@ @SAMBA_CPPFLAGS@ $(CPPFLAGS) FLAGS2 = @@ -1357,9 +1352,9 @@ bin/ldbdel: $(BINARY_PREREQS) $(LDBDEL_OBJ) @BUILD_POPT@ bin/libaddns.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBADDNS_OBJ) @echo Linking libaddns shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBADDNS_OBJ) $(LDFLAGS) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBADDNS_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(UUID_LIBS)\ - @SONAMEFLAG@`basename $@`.$(LIBADDNS_MAJOR) + @SONAMEFLAG@`basename $@`.$(SONAME_VER) bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ) @echo Linking libaddns non-shared library $@ @@ -1367,9 +1362,9 @@ bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ) bin/libsmbclient.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) @echo Linking libsmbclient shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_OBJ) $(LDFLAGS) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBSMBCLIENT_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \ - @SONAMEFLAG@`basename $@`.$(LIBSMBCLIENT_MAJOR) + @SONAMEFLAG@`basename $@`.$(SONAME_VER) bin/libsmbclient.a: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) @echo Linking libsmbclient non-shared library $@ @@ -1377,9 +1372,9 @@ bin/libsmbclient.a: $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) bin/libsmbsharemodes.@SHLIBEXT@: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @echo Linking libsmbsharemodes shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBSHAREMODES_OBJ) $(LDFLAGS) $(LIBS) \ + @$(SHLD_DSO) -o $@ $(LIBSMBSHAREMODES_OBJ) $(LDFLAGS) $(LIBS) \ $(KRB5LIBS) $(LDAP_LIBS) \ - @SONAMEFLAG@`basename $@`.$(LIBSMBSHAREMODES_MAJOR) + @SONAMEFLAG@`basename $@`.$(SONAME_VER) bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @echo Linking libsmbsharemodes non-shared library $@ @@ -1387,8 +1382,8 @@ bin/libsmbsharemodes.a: $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) bin/libmsrpc.@SHLIBEXT@: $(BINARY_PREREQS) $(CAC_OBJ) @echo Linking libmsrpc shared library $@ - @$(SHLD) $(LDSHFLAGS) -o $@ $(CAC_OBJ) $(LDFLAGS) $(LIBS) \ - @SONAMEFLAG@`basename $@`.$(LIBMSRPC_MAJOR) + @$(SHLD_DSO) -o $@ $(CAC_OBJ) $(LDFLAGS) $(LIBS) \ + @SONAMEFLAG@`basename $@`.$(SONAME_VER) bin/libmsrpc.a: $(BINARY_PREREQS) $(CAC_OBJ) @echo Linking libmsrpc non-shared library $@ -- cgit