1 dnl sxe-linker.m4 -- Linker stuff, esp. dynamic linking
2 dnl needed for emodules for one
4 AC_DEFUN([SXE_CHECK_LINKER_FLAGS], [dnl
5 dnl just like SXE_CHECK_COMPILER_FLAGS but calls the linker
6 AC_MSG_CHECKING([whether linker accepts $1])
8 dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
9 SXE_LANG_WERROR([push+on])
11 AC_CACHE_VAL(AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1), [
12 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
13 _AC_LANG_PREFIX[]FLAGS="${XFLAG} $1"
14 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
15 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
16 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
17 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])], [
18 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
19 _AC_LANG_PREFIX[]FLAGS="$1"
20 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
21 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
22 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
23 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])
24 eval sxe_check_linker_flags=$AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)
25 SXE_LANG_WERROR([pop])
27 AC_MSG_RESULT([$sxe_check_linker_flags])
28 if test "$sxe_check_linker_flags" = "yes"; then
33 ])dnl SXE_CHECK_LINKER_FLAGS
36 AC_DEFUN([SXE_CHECK_LD_ZFLAG], [dnl
37 pushdef([LD_ZFLAG], [$1])
38 pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
40 AC_CACHE_CHECK([whether linker supports -z ]LD_ZFLAG[],
41 []cv_zflag[], [_SXE_CHECK_LD_ZFLAG(LD_ZFLAG)])
45 ])dnl SXE_CHECK_LD_ZFLAG
47 AC_DEFUN([_SXE_CHECK_LD_ZFLAG], [dnl
48 ## arg1 is the flag to check for
49 pushdef([LD_ZFLAG], [$1])
50 pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
52 SXE_CHECK_LINKER_FLAGS([-z ]LD_ZFLAG[])
54 dnl if test "$GCC" = "yes"; then
55 dnl if test "($CC -Xlinker --help 2>&1 | \
56 dnl grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 ) "; then
61 dnl elif test -n "$LD"; then
62 dnl if test "($LD --help 2>&1 | \
63 dnl grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 )"; then
74 ])dnl _SXE_CHECK_LD_ZFLAG
77 AC_DEFUN([SXE_CHECK_LDFLAGS], [dnl
92 SXE_CHECK_LD_ZFLAG([combreloc])
93 SXE_CHECK_LD_ZFLAG([nocombreloc])
95 SXE_CHECK_LD_ZFLAG([defs])
96 SXE_CHECK_LD_ZFLAG([muldefs])
98 SXE_CHECK_LD_ZFLAG([nodefaultlib])
100 SXE_CHECK_LD_ZFLAG([lazy])
101 SXE_CHECK_LD_ZFLAG([now])
104 ## default flags for needed features
105 SXE_CHECK_LINKER_FLAGS([-static-intel], [
106 ldflags="${ldflags} ${XFLAG} -static-intel"])
107 SXE_CHECK_LINKER_FLAGS([-static-libgcc], [
108 ldflags="${ldflags} ${XFLAG} -static-libgcc"])
110 LDFLAGS="${ldflags} ${ac_cv_env_LDFLAGS_value}"
111 AC_MSG_CHECKING([for preferred LDFLAGS])
112 AC_MSG_RESULT([${LDFLAGS}])
115 If you wish to ADD your own flags you want to stop here and rerun the
116 configure script like so:
117 configure LDFLAGS=<to-be-added-flags>
119 You can always override the determined LDFLAGS, partially or totally,
121 make -C <directory> LDFLAGS=<your-own-flags> [target]
123 make LDFLAGS=<your-own-flags> [target]
126 NOTE: -C <directory> option is not available on all systems
128 ])dnl SXE_CHECK_LDFLAGS
130 AC_DEFUN([SXE_PREPEND_LINKER_FLAG], [dnl
131 ## a convenience function to add such linker flags to variables
132 ## arg1 is the flag to add (must include -z if applicable)
133 ## arg2 is the variable whither to prepend
134 pushdef([FLAG], [$1])
135 pushdef([__FLAG], [-Wl,]patsubst([$1], [ ], [[,]]))
138 []VAR[]="[]__FLAG[] $[]VAR[]"
139 if test "$extra_verbose" = "yes"; then
140 echo " Prepending linker flag \"[]__FLAG[]\" to \$[]VAR[]"
146 ])dnl SXE_PREPEND_LINKER_FLAG
148 dnl sxe-linker.m4 ends here