summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2012-06-20 18:48:27 +0200
committerJay Berkenbilt <ejb@ql.org>2012-06-20 21:18:12 +0200
commit92c94e7df230dd86eb46e8edf8e9d92531d5f6ef (patch)
treec64e1c979f910884bddd47d42cf9a7913cb56cc4 /configure.ac
parent81fc594342925137b55b3decb4992b283a52967f (diff)
downloadqpdf-92c94e7df230dd86eb46e8edf8e9d92531d5f6ef.tar.zst
Add symbol versioning
For ELF systems, turn on versioned symbols by default, and add a configure option to enable or disable them.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac34
1 files changed, 34 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 9cccec81..05082956 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,40 @@ AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_CHECK_FUNCS(random)
+# Check if LD supports linker scripts, and define conditional
+# HAVE_LD_VERSION_SCRIPT if so. This functionality is currently
+# constrained to compilers using GNU ld on ELF systems or systems
+# which provide an adequate emulation thereof.
+AC_ARG_ENABLE([ld-version-script],
+ AS_HELP_STRING([--enable-ld-version-script],
+ [enable linker version script (default is disabled)]),
+ [have_ld_version_script=$enableval], [have_ld_version_script=yes])
+if test "$have_ld_version_script" != no; then
+ AC_MSG_CHECKING([if LD -Wl,--version-script works])
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+ cat > conftest.map <<EOF
+VERS_1 {
+ global: sym;
+};
+
+VERS_2 {
+ global: sym;
+} VERS_1;
+EOF
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [have_ld_version_script=yes], [have_ld_version_script=no])
+ rm -f conftest.map
+ LDFLAGS="$save_LDFLAGS"
+ AC_MSG_RESULT($have_ld_version_script)
+fi
+if test "$have_ld_version_script" = "yes"; then
+ HAVE_LD_VERSION_SCRIPT=1
+else
+ HAVE_LD_VERSION_SCRIPT=0
+fi
+AC_SUBST(HAVE_LD_VERSION_SCRIPT)
+
AC_MSG_CHECKING(for gnu make >= 3.81)
make_okay=0
if make --version >/dev/null 2>&1; then