Commit 7cc2e8b3 authored by Alessandro Ghedini's avatar Alessandro Ghedini Committed by Daniel Stenberg
Browse files

configure: add symbols versioning option

Allow, at configure time, the production of versioned symbols. The
symbols will look like "CURL_<FLAVOUR>_<VERSION> <SYMBOL>", where
<FLAVOUR> represents the SSL flavour (e.g. OPENSSL, GNUTLS, NSS, ...),
<VERSION> is the major SONAME version and <SYMBOL> is the actual symbol
name. If no SSL library is enabled the symbols will be just
"CURL_<VERSION> <SYMBOL>".
parent 3c18b38d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ winbuild/MakefileBuild.vc winbuild/Makefile.vc
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in	\
 curl-style.el sample.emacs RELEASE-NOTES buildconf 	\
 libcurl.pc.in vc6curl.dsw MacOSX-Framework Android.mk $(CMAKE_DIST)	\
 Makefile.msvc.names $(WINBUILD_DIST)
 Makefile.msvc.names $(WINBUILD_DIST) lib/libcurl.vers.in

bin_SCRIPTS = curl-config

+55 −0
Original line number Diff line number Diff line
@@ -2346,6 +2346,60 @@ if test X"$OPT_LIBRTMP" != Xno; then

fi

dnl **********************************************************************
dnl Check for linker switch for versioned symbols
dnl **********************************************************************

AC_MSG_CHECKING([if libraries can be versioned])
GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
if test -z "$GLD"; then
    versioned_symbols_flavour=
    AC_MSG_RESULT(no)
    AC_MSG_WARN(***
*** You need an ld version supporting the --version-script option.
)
else
    AC_MSG_RESULT(yes)

AC_MSG_CHECKING([whether versioned symbols are wanted])
versioned_symbols_flavour=

AC_ARG_ENABLE(versioned-symbols,
AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
[ case "$enableval" in
  yes) AC_MSG_RESULT(yes)
    if test "x$OPENSSL_ENABLED" = "x1"; then
      versioned_symbols_flavour="OPENSSL_"
    elif test "x$GNUTLS_ENABLED" == "x1"; then
      versioned_symbols_flavour="GNUTLS_"
    elif test "x$NSS_ENABLED" == "x1"; then
      versioned_symbols_flavour="NSS_"
    elif test "x$POLARSSL_ENABLED" == "x1"; then
      versioned_symbols_flavour="POLARSSL_"
    elif test "x$CYASSL_ENABLED" == "x1"; then
      versioned_symbols_flavour="CYASSL_"
    elif test "x$AXTLS_ENABLED" == "x1"; then
      versioned_symbols_flavour="AXTLS_"
    else
      versioned_symbols_flavour=""
    fi
    versioned_symbols="yes"
    ;;

  *)   AC_MSG_RESULT(no)
    ;;
  esac
], [
AC_MSG_RESULT(no)
]
)
fi

AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")


dnl **********************************************************************
dnl Check for the presence of IDN libraries and headers
dnl **********************************************************************
@@ -3215,6 +3269,7 @@ AC_CONFIG_FILES([Makefile \
           include/curl/Makefile \
           src/Makefile \
           lib/Makefile \
           lib/libcurl.vers \
           tests/Makefile \
           tests/data/Makefile \
           tests/server/Makefile \
+5 −1
Original line number Diff line number Diff line
@@ -116,7 +116,11 @@ if MIMPURE
MIMPURE = -mimpure-text
endif

libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(LIBCURL_LIBS)
if VERSIONED_SYMBOLS
VERSIONED_SYMBOLS = -Wl,--version-script=libcurl.vers
endif

libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(VERSIONED_SYMBOLS) $(LIBCURL_LIBS)

# unit testing static library built only along with unit tests
if BUILD_UNITTESTS

lib/libcurl.vers.in

0 → 100644
+13 −0
Original line number Diff line number Diff line
HIDDEN
{
  local:
    __*;
    _rest*;
    _save*;
};

CURL_@VERSIONED_FLAVOUR@4
{
  global: curl_*;
  local: *;
};