1# ld-version-script.m4 serial 3
2dnl Copyright (C) 2008-2014 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Simon Josefsson
8
9# FIXME: The test below returns a false positive for mingw
10# cross-compiles, 'local:' statements does not reduce number of
11# exported symbols in a DLL.  Use --disable-ld-version-script to work
12# around the problem.
13
14# gl_LD_VERSION_SCRIPT
15# --------------------
16# Check if LD supports linker scripts, and define automake conditional
17# HAVE_LD_VERSION_SCRIPT if so.
18AC_DEFUN([gl_LD_VERSION_SCRIPT],
19[
20  AC_ARG_ENABLE([ld-version-script],
21    AS_HELP_STRING([--enable-ld-version-script],
22      [enable linker version script (default is enabled when possible)]),
23      [have_ld_version_script=$enableval], [])
24  if test -z "$have_ld_version_script"; then
25    AC_MSG_CHECKING([if LD -Wl,--version-script works])
26    save_LDFLAGS="$LDFLAGS"
27    LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
28    cat > conftest.map <<EOF
29foo
30EOF
31    AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
32                   [accepts_syntax_errors=yes], [accepts_syntax_errors=no])
33    if test "$accepts_syntax_errors" = no; then
34      cat > conftest.map <<EOF
35VERS_1 {
36        global: sym;
37};
38
39VERS_2 {
40        global: sym;
41} VERS_1;
42EOF
43      AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
44                     [have_ld_version_script=yes], [have_ld_version_script=no])
45    else
46      have_ld_version_script=no
47    fi
48    rm -f conftest.map
49    LDFLAGS="$save_LDFLAGS"
50    AC_MSG_RESULT($have_ld_version_script)
51  fi
52  AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
53])
54