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 dnl SXE_CHECK_LINKER_FLAGS(<FLAG>, <ACTION-IF-FOUND>, <ACTION-IF-NOT-FOUND>,
7 dnl <ADDITIONAL-FLAGS>)
8 AC_MSG_CHECKING([whether linker accepts $1])
10 dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
11 SXE_LANG_WERROR([push+on])
13 AC_CACHE_VAL(AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1), [
14 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
15 _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} $1"
16 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
17 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
18 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
19 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])], [
20 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
21 _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} $1"
22 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
23 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
24 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
25 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])
26 eval sxe_check_linker_flags=$AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)
27 SXE_LANG_WERROR([pop])
29 AC_MSG_RESULT([$sxe_check_linker_flags])
30 if test "$sxe_check_linker_flags" = "yes"; then
35 ])dnl SXE_CHECK_LINKER_FLAGS
37 AC_DEFUN([SXE_CHECK_LINK_LIB], [dnl
38 dnl just like SXE_CHECK_LINKER_FLAGS but calls the linker with -l <LIB>
39 dnl SXE_CHECK_LINK_LIB(<LIB>, <ACTION-IF-FOUND>, <ACTION-IF-NOT-FOUND>,
40 dnl <ADDITIONAL-FLAGS>)
41 AC_MSG_CHECKING([whether library $1 can be linked])
43 dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
44 SXE_LANG_WERROR([push+on])
46 AC_CACHE_VAL(AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1), [
47 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
48 _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} -l$1"
49 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
50 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_lib_$1)="yes",
51 AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_lib_$1)="no")
52 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])], [
53 sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
54 _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} -l$1"
55 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
56 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_lib_$1)="yes",
57 eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_lib_$1)="no")
58 _AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])
59 eval sxe_check_linker_lib=$AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_lib_$1)
60 SXE_LANG_WERROR([pop])
62 AC_MSG_RESULT([$sxe_check_linker_lib])
63 if test "$sxe_check_linker_lib" = "yes"; then
68 ])dnl SXE_CHECK_LINK_LIB
70 AC_DEFUN([SXE_CHECK_LD_ZFLAG], [dnl
71 pushdef([LD_ZFLAG], [$1])
72 pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
74 SXE_CHECK_LINKER_FLAGS([-z ]LD_ZFLAG[])
76 dnl Use the check that actually calls the compiler/linker to examine the flags
77 dnl AC_CACHE_CHECK([whether linker supports -z ]LD_ZFLAG[],
78 dnl []cv_zflag[], [_SXE_CHECK_LD_ZFLAG(LD_ZFLAG)])
82 ])dnl SXE_CHECK_LD_ZFLAG
84 AC_DEFUN([_SXE_CHECK_LD_ZFLAG], [dnl
85 ## arg1 is the flag to check for
86 pushdef([LD_ZFLAG], [$1])
87 pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
89 if test "$GCC" = "yes"; then
90 if test "($CC -Xlinker --help 2>&1 | \
91 grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 ) "; then
96 elif test -n "$LD"; then
97 if test "($LD --help 2>&1 | \
98 grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 )"; then
109 ])dnl _SXE_CHECK_LD_ZFLAG
111 AC_DEFUN([SXE_CHECK_LDFLAGS], [dnl
112 AC_REQUIRE([SXE_CHECK_COMPILER_XFLAG])
115 SXE_CHECK_LD_ZFLAG([combreloc])
116 SXE_CHECK_LD_ZFLAG([nocombreloc])
118 SXE_CHECK_LD_ZFLAG([defs])
119 SXE_CHECK_LD_ZFLAG([muldefs])
121 SXE_CHECK_LD_ZFLAG([nodefaultlib])
123 SXE_CHECK_LD_ZFLAG([lazy])
124 SXE_CHECK_LD_ZFLAG([now])
126 LDFLAGS="${ldflags} ${ac_cv_env_LDFLAGS_value}"
127 AC_MSG_CHECKING([for preferred LDFLAGS])
128 AC_MSG_RESULT([${LDFLAGS}])
131 If you wish to ADD your own flags you want to stop here and rerun the
132 configure script like so:
133 configure LDFLAGS=<to-be-added-flags>
135 You can always override the determined LDFLAGS, partially or totally,
137 make -C <directory> LDFLAGS=<your-own-flags> [target]
139 make LDFLAGS=<your-own-flags> [target]
142 NOTE: -C <directory> option is not available on all systems
144 ])dnl SXE_CHECK_LDFLAGS
146 AC_DEFUN([SXE_PREPEND_LINKER_FLAG], [dnl
147 ## a convenience function to add such linker flags to variables
148 ## arg1 is the flag to add (must include -z if applicable)
149 ## arg2 is the variable whither to prepend
150 pushdef([FLAG], [$1])
151 pushdef([__FLAG], [-Wl,]patsubst([$1], [ ], [[,]]))
154 []VAR[]="[]__FLAG[] $[]VAR[]"
155 if test "$extra_verbose" = "yes"; then
156 echo " Prepending linker flag \"[]__FLAG[]\" to \$[]VAR[]"
162 ])dnl SXE_PREPEND_LINKER_FLAG
164 dnl sxe-linker.m4 ends here