diff options
author | Jay Berkenbilt <ejb@ql.org> | 2012-06-20 18:48:27 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2012-06-20 21:18:12 +0200 |
commit | 92c94e7df230dd86eb46e8edf8e9d92531d5f6ef (patch) | |
tree | c64e1c979f910884bddd47d42cf9a7913cb56cc4 /configure.ac | |
parent | 81fc594342925137b55b3decb4992b283a52967f (diff) | |
download | qpdf-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.ac | 34 |
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 |