From a76b0b967f7cab3a942a0d098cd202b1130342d3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 12 Jan 2019 16:18:26 +0000 Subject: [PATCH] Detect if linker supports --version-script= Signed-off-by: Michael Tremer --- Makefile.am | 9 ++++++-- configure.ac | 1 + m4/ld-version-script.m4 | 48 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 m4/ld-version-script.m4 diff --git a/Makefile.am b/Makefile.am index be8d94c..489458d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -98,8 +98,13 @@ src_libloc_la_CFLAGS = \ src_libloc_la_LDFLAGS = \ $(AM_LDFLAGS) \ - -version-info $(LIBLOC_CURRENT):$(LIBLOC_REVISION):$(LIBLOC_AGE) \ - -Wl,--version-script=$(top_srcdir)/src/libloc.sym + -version-info $(LIBLOC_CURRENT):$(LIBLOC_REVISION):$(LIBLOC_AGE) + +if HAVE_LD_VERSION_SCRIPT + src_libloc_la_LDFLAGS += -Wl,--version-script=$(top_srcdir)/src/libloc.sym +else + src_libloc_la_LDFLAGS += -export-symbols $(top_srcdir)/src/libloc.sym +endif src_libloc_la_DEPENDENCIES = \ ${top_srcdir}/src/libloc.sym diff --git a/configure.ac b/configure.ac index 2c1e8f3..c4ba1f3 100644 --- a/configure.ac +++ b/configure.ac @@ -28,6 +28,7 @@ LT_INIT([ pic-only ]) AC_PREFIX_DEFAULT([/usr]) +gl_LD_VERSION_SCRIPT IT_PROG_INTLTOOL([0.40.0]) GETTEXT_PACKAGE=${PACKAGE_TARNAME} diff --git a/m4/ld-version-script.m4 b/m4/ld-version-script.m4 new file mode 100644 index 0000000..211d67b --- /dev/null +++ b/m4/ld-version-script.m4 @@ -0,0 +1,48 @@ +# ld-version-script.m4 serial 4 +dnl Copyright (C) 2008-2015 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson + +# FIXME: The test below returns a false positive for mingw +# cross-compiles, 'local:' statements does not reduce number of +# exported symbols in a DLL. Use --disable-ld-version-script to work +# around the problem. + +# gl_LD_VERSION_SCRIPT +# -------------------- +# Check if LD supports linker scripts, and define automake conditional +# HAVE_LD_VERSION_SCRIPT if so. +AC_DEFUN([gl_LD_VERSION_SCRIPT], +[ + AC_ARG_ENABLE([ld-version-script], + [AS_HELP_STRING([--enable-ld-version-script], + [enable linker version script (default is enabled when possible)])], + [have_ld_version_script=$enableval], + [AC_CACHE_CHECK([if LD -Wl,--version-script works], + [gl_cv_sys_ld_version_script], + [gl_cv_sys_ld_version_script=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + echo foo >conftest.map + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [], + [cat > conftest.map <