Autoconf/buildchain fixes/improvements from Nelson
[sxemacs] / m4 / sxe-linker.m4
1 dnl sxe-linker.m4 -- Linker stuff, esp. dynamic linking
2 dnl needed for emodules for one
3
4
5 AC_DEFUN([SXE_CHECK_LD_ZFLAG], [dnl
6         pushdef([LD_ZFLAG], [$1])
7         pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
8
9         AC_CACHE_CHECK([whether linker supports -z ]LD_ZFLAG[],
10                 []cv_zflag[], [_SXE_CHECK_LD_ZFLAG(LD_ZFLAG)])
11
12         popdef([cv_zflag])
13         popdef([LD_ZFLAG])
14 ])dnl SXE_CHECK_LD_ZFLAG
15
16 AC_DEFUN([_SXE_CHECK_LD_ZFLAG], [dnl
17         ## arg1 is the flag to check for
18         pushdef([LD_ZFLAG], [$1])
19         pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
20
21         if test "$GCC" = "yes"; then
22                 if test "($CC -Xlinker --help 2>&1 | \
23                         grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 ) "; then
24                         cv_zflag="yes"
25                 else
26                         cv_zflag="no"
27                 fi
28         elif test -n "$LD"; then
29                 if test "($LD --help 2>&1 | \
30                         grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 )"; then
31                         cv_zflag="yes"
32                 else
33                         cv_zflag="no"
34                 fi
35         else
36                 cv_zflag="no"
37         fi
38
39         popdef([cv_zflag])
40         popdef([LD_ZFLAG])
41 ])dnl _SXE_CHECK_LD_ZFLAG
42
43 AC_DEFUN([SXE_CHECK_LD_NOCOMBRELOC], [dnl
44         SXE_CHECK_LD_ZFLAG([nocombreloc])
45 ])dnl SXE_CHECK_LD_NOCOMBRELOC
46
47
48 AC_DEFUN([SXE_CHECK_LINKER_FLAGS], [dnl
49         ## relocation
50         SXE_CHECK_LD_ZFLAG([combreloc])
51         SXE_CHECK_LD_ZFLAG([nocombreloc])
52         ## symbols
53         SXE_CHECK_LD_ZFLAG([defs])
54         SXE_CHECK_LD_ZFLAG([muldefs])
55         ## search paths
56         SXE_CHECK_LD_ZFLAG([nodefaultlib])
57         ## binding policy
58         SXE_CHECK_LD_ZFLAG([lazy])
59         SXE_CHECK_LD_ZFLAG([now])
60 ])dnl SXE_CHECK_LINKER_FLAGS
61
62 AC_DEFUN([SXE_PREPEND_LINKER_FLAG], [dnl
63         ## a convenience function to add such linker flags to variables
64         ## arg1 is the flag to add (must include -z if applicable)
65         ## arg2 is the variable whither to prepend
66         pushdef([FLAG], [$1])
67         pushdef([__FLAG], [-Wl,]patsubst([$1], [ ], [[,]]))
68         pushdef([VAR], [$2])
69
70         []VAR[]="[]__FLAG[] $[]VAR[]"
71         if test "$extra_verbose" = "yes"; then
72                 echo "    Prepending linker flag \"[]__FLAG[]\" to \$[]VAR[]"
73         fi
74
75         popdef([VAR])
76         popdef([__FLAG])
77         popdef([FLAG])
78 ])dnl SXE_PREPEND_LINKER_FLAG
79
80 dnl sxe-linker.m4 ends here