MKSYMS_SH = $(srcdir)/script/mksyms.sh
-$(LIBTALLOC_SYMS): $(LIBTALLOC_HEADERS)
- @$(MKSYMS_SH) $(AWK) $@ $(LIBTALLOC_HEADERS)
+$(LIBTALLOC_SYMS): $(LIBTALLOC_HEADERS) $(builddir)/library-versions
+ @$(MKSYMS_SH) $(AWK) $(builddir)/library-versions $@ $(LIBTALLOC_HEADERS)
$(LIBTALLOC_SHARED_TARGET): $(BINARY_PREREQS) $(LIBTALLOC_OBJ) $(LIBTALLOC_SYMS)
@echo Linking shared library $@
@echo Linking non-shared library $@
@-$(AR) -rc $@ $(LIBTALLOC_OBJ0)
-$(LIBTDB_SYMS): $(LIBTDB_HEADERS)
- @$(MKSYMS_SH) $(AWK) $@ $(LIBTDB_HEADERS)
+$(LIBTDB_SYMS): $(LIBTDB_HEADERS) $(builddir)/library-versions
+ @$(MKSYMS_SH) $(AWK) $(builddir)/library-versions $@ $(LIBTDB_HEADERS)
$(LIBTDB_SHARED_TARGET): $(BINARY_PREREQS) $(LIBTDB_OBJ) $(LIBTDB_SYMS)
@echo Linking shared library $@
@echo Linking non-shared library $@
@-$(AR) -rc $@ $(LIBTDB_OBJ0)
-$(LIBWBCLIENT_SYMS): $(LIBWBCLIENT_HEADERS)
- @$(MKSYMS_SH) $(AWK) $@ $(LIBWBCLIENT_HEADERS)
+$(LIBWBCLIENT_SYMS): $(LIBWBCLIENT_HEADERS) $(builddir)/library-versions
+ @$(MKSYMS_SH) $(AWK) $(builddir)/library-versions $@ $(LIBWBCLIENT_HEADERS)
$(LIBWBCLIENT_SHARED_TARGET): $(BINARY_PREREQS) $(LIBWBCLIENT_OBJ) $(LIBWBCLIENT_SYMS) @LIBTALLOC_SHARED@
@echo Linking shared library $@
@echo Linking non-shared library $@
@-$(AR) -rc $@ $(LIBADDNS_OBJ)
-$(LIBNETAPI_SYMS): $(LIBNETAPI_HEADERS)
- @$(MKSYMS_SH) $(AWK) $@ $(LIBNETAPI_HEADERS)
+$(LIBNETAPI_SYMS): $(LIBNETAPI_HEADERS) $(builddir)/library-versions
+ @$(MKSYMS_SH) $(AWK) $(builddir)/library-versions $@ $(LIBNETAPI_HEADERS)
$(LIBNETAPI_SHARED_TARGET): $(BINARY_PREREQS) $(LIBNETAPI_OBJ) $(LIBNETAPI_SYMS) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
@echo Linking shared library $@
# Set defaults
SYMSEXT="syms"
AC_SUBST(SYMSEXT)
+use_symbol_versioning=no
+if test x"$ac_cv_gnu_ld_version_script" = x"yes"; then
+ use_symbol_versioning=yes
+fi
+AC_ARG_ENABLE(symbol-versioning,[
+ AS_HELP_STRING([--enable-symbol-versioning],
+ [Turn on symbol versioning support if available (default=auto)])
+])
+if test x"$enable_symbol_versioning" = x"no"; then
+ use_symbol_versioning=no
+fi
+
+AC_MSG_CHECKING([symbol versioning])
+if test "x$use_symbol_versioning" = x"yes"; then
+ SYMSEXT="version.syms"
+fi
+AC_MSG_RESULT($use_symbol_versioning)
# Assume non-shared by default and override below
BLDSHARED="false"
--- /dev/null
+#
+# we use no version symbols for libsmbclient
+# to be compatible with 3.0.x
+#
+{
+ global: smbc_*;
+ local: *;
+};
--- /dev/null
+#
+# we use no version symbols for libsmbsharemodes
+# to be compatible with 3.0.x
+#
+{
+ global: *;
+};
BEGIN {
inheader=0;
current_file="";
- print "#"
- print "# This file is automatically generated with \"make symbols\". DO NOT EDIT "
- print "#"
print "{"
print "\tglobal:"
}
LC_ALL=C; export LC_ALL
LC_COLLATE=C; export LC_COLLATE
-if [ $# -lt 2 ]
+if [ $# -lt 3 ]
then
- echo "Usage: $0 awk output_file header_files"
+ echo "Usage: $0 awk versionfile output_file header_files"
exit 1
fi
awk="$1"
shift
+versionfile="$1"
+shift
+
symsfile="$1"
shift
symsfile_tmp="$symsfile.$$.tmp~"
-proto_src="`echo $@ | tr ' ' '\n' | sort | uniq `"
+libname=`basename $symsfile | cut -d '.' -f1`
+verline=`grep $libname $versionfile`
+majver=`echo -n "$verline" | cut -d ':' -f2`
+minver=`echo -n "$verline" | cut -d ':' -f3`
+upname=`echo -n "$libname" | sed -e 's/^lib//' | tr '[a-z]' '[A-Z]'`
+symver="${upname}_${majver}.${minver}"
-echo creating $symsfile
+symsext=`basename $symsfile | cut -d '.' -f2-`
+
+if test x"$symsext" = x"version.syms"; then
+ echo "creating $symsfile for $symver"
+else
+ echo "creating $symsfile"
+ symver="# no symbol versioning"
+fi
+
+proto_src="`echo $@ | tr ' ' '\n' | sort | uniq `"
mkdir -p `dirname $symsfile`
-${awk} -f `dirname $0`/mksyms.awk $proto_src > $symsfile_tmp
+cat > $symsfile_tmp <<_ACEOF
+#
+# This file is automatically generated with "$0". DO NOT EDIT
+#
+$symver
+_ACEOF
+
+${awk} -f `dirname $0`/mksyms.awk $proto_src >> $symsfile_tmp
if cmp -s $symsfile $symsfile_tmp 2>/dev/null
then