Blame m4/ld-version-script.m4

Packit e9ba0d
# ld-version-script.m4 serial 3
Packit e9ba0d
dnl Copyright (C) 2008-2014 Free Software Foundation, Inc.
Packit e9ba0d
dnl This file is free software; the Free Software Foundation
Packit e9ba0d
dnl gives unlimited permission to copy and/or distribute it,
Packit e9ba0d
dnl with or without modifications, as long as this notice is preserved.
Packit e9ba0d
Packit e9ba0d
dnl From Simon Josefsson
Packit e9ba0d
Packit e9ba0d
# FIXME: The test below returns a false positive for mingw
Packit e9ba0d
# cross-compiles, 'local:' statements does not reduce number of
Packit e9ba0d
# exported symbols in a DLL.  Use --disable-ld-version-script to work
Packit e9ba0d
# around the problem.
Packit e9ba0d
Packit e9ba0d
# gl_LD_VERSION_SCRIPT
Packit e9ba0d
# --------------------
Packit e9ba0d
# Check if LD supports linker scripts, and define automake conditional
Packit e9ba0d
# HAVE_LD_VERSION_SCRIPT if so.
Packit e9ba0d
AC_DEFUN([gl_LD_VERSION_SCRIPT],
Packit e9ba0d
[
Packit e9ba0d
  AC_ARG_ENABLE([ld-version-script],
Packit e9ba0d
    AS_HELP_STRING([--enable-ld-version-script],
Packit e9ba0d
      [enable linker version script (default is enabled when possible)]),
Packit e9ba0d
      [have_ld_version_script=$enableval], [])
Packit e9ba0d
  if test -z "$have_ld_version_script"; then
Packit e9ba0d
    AC_MSG_CHECKING([if LD -Wl,--version-script works])
Packit e9ba0d
    save_LDFLAGS="$LDFLAGS"
Packit e9ba0d
    LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
Packit e9ba0d
    cat > conftest.map <
Packit e9ba0d
foo
Packit e9ba0d
EOF
Packit e9ba0d
    AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
Packit e9ba0d
                   [accepts_syntax_errors=yes], [accepts_syntax_errors=no])
Packit e9ba0d
    if test "$accepts_syntax_errors" = no; then
Packit e9ba0d
      cat > conftest.map <
Packit e9ba0d
VERS_1 {
Packit e9ba0d
        global: sym;
Packit e9ba0d
};
Packit e9ba0d
Packit e9ba0d
VERS_2 {
Packit e9ba0d
        global: sym;
Packit e9ba0d
} VERS_1;
Packit e9ba0d
EOF
Packit e9ba0d
      AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
Packit e9ba0d
                     [have_ld_version_script=yes], [have_ld_version_script=no])
Packit e9ba0d
    else
Packit e9ba0d
      have_ld_version_script=no
Packit e9ba0d
    fi
Packit e9ba0d
    rm -f conftest.map
Packit e9ba0d
    LDFLAGS="$save_LDFLAGS"
Packit e9ba0d
    AC_MSG_RESULT($have_ld_version_script)
Packit e9ba0d
  fi
Packit e9ba0d
  AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
Packit e9ba0d
])