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