1 | dnl SMB Build Environment LD Checks
|
---|
2 | dnl -------------------------------------------------------
|
---|
3 | dnl Copyright (C) Stefan (metze) Metzmacher 2004
|
---|
4 | dnl Copyright (C) Jelmer Vernooij 2006
|
---|
5 | dnl Released under the GNU GPL
|
---|
6 | dnl -------------------------------------------------------
|
---|
7 | dnl
|
---|
8 |
|
---|
9 | AC_PATH_PROG(PROG_LD,ld)
|
---|
10 | LD=${PROG_LD}
|
---|
11 | AC_PROG_LD_GNU
|
---|
12 | LD=""
|
---|
13 |
|
---|
14 | AC_SUBST(BLDSHARED)
|
---|
15 | AC_SUBST(LD)
|
---|
16 | AC_SUBST(SYS_LDFLAGS)
|
---|
17 | AC_SUBST(LDFLAGS)
|
---|
18 |
|
---|
19 | # Assume non-shared by default and override below
|
---|
20 | # these are the defaults, good for lots of systems
|
---|
21 | BLDSHARED="false"
|
---|
22 | LD="${CC}"
|
---|
23 | PICFLAG=""
|
---|
24 |
|
---|
25 | # allow for --with-hostld=gcc
|
---|
26 | AC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker],
|
---|
27 | [HOSTLD=$withval],
|
---|
28 | [HOSTLD=$HOSTCC])
|
---|
29 |
|
---|
30 | AC_MSG_CHECKING([whether to try to build shared libraries on $host_os])
|
---|
31 |
|
---|
32 | # and these are for particular systems
|
---|
33 | case "$host_os" in
|
---|
34 | *linux*)
|
---|
35 | BLDSHARED="true"
|
---|
36 | SYS_LDFLAGS="-Wl,--export-dynamic"
|
---|
37 | ;;
|
---|
38 | *solaris*)
|
---|
39 | BLDSHARED="true"
|
---|
40 | if test "${GCC}" = "yes"; then
|
---|
41 | if test "${ac_cv_prog_gnu_ld}" = "yes"; then
|
---|
42 | SYS_LDFLAGS="-Wl,-E"
|
---|
43 | fi
|
---|
44 | fi
|
---|
45 | ;;
|
---|
46 | *sunos*)
|
---|
47 | BLDSHARED="true"
|
---|
48 | ;;
|
---|
49 | *netbsd* | *freebsd* | *dragonfly* )
|
---|
50 | BLDSHARED="true"
|
---|
51 | SYS_LDFLAGS="-Wl,--export-dynamic"
|
---|
52 | ;;
|
---|
53 | *openbsd*)
|
---|
54 | BLDSHARED="true"
|
---|
55 | SYS_LDFLAGS="-Wl,-Bdynamic"
|
---|
56 | ;;
|
---|
57 | *irix*)
|
---|
58 | BLDSHARED="true"
|
---|
59 | ;;
|
---|
60 | *aix*)
|
---|
61 | BLDSHARED="true"
|
---|
62 | SYS_LDFLAGS="-Wl,-brtl,-bexpall,-bbigtoc"
|
---|
63 | ;;
|
---|
64 | *hpux*)
|
---|
65 | # Use special PIC flags for the native HP-UX compiler.
|
---|
66 | BLDSHARED="true" # I hope this is correct
|
---|
67 | if test "$host_cpu" = "ia64"; then
|
---|
68 | SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
|
---|
69 | else
|
---|
70 | SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib:/usr/lib"
|
---|
71 | fi
|
---|
72 | ;;
|
---|
73 | *osf*)
|
---|
74 | BLDSHARED="true"
|
---|
75 | ;;
|
---|
76 | *unixware*)
|
---|
77 | BLDSHARED="true"
|
---|
78 | ;;
|
---|
79 | *darwin*)
|
---|
80 | BLDSHARED="true"
|
---|
81 | ;;
|
---|
82 | esac
|
---|
83 |
|
---|
84 | AC_MSG_RESULT($BLDSHARED)
|
---|
85 |
|
---|
86 | AC_MSG_CHECKING([LD])
|
---|
87 | AC_MSG_RESULT([$LD])
|
---|
88 | AC_MSG_CHECKING([LDFLAGS])
|
---|
89 | AC_MSG_RESULT([$LDFLAGS])
|
---|
90 | AC_MSG_CHECKING([SYS_LDFLAGS])
|
---|
91 | AC_MSG_RESULT([$SYS_LDFLAGS])
|
---|
92 |
|
---|
93 | AC_SUBST(HOSTLD)
|
---|
94 |
|
---|
95 | AC_LIBREPLACE_STLD
|
---|
96 | AC_LIBREPLACE_STLD_FLAGS
|
---|
97 |
|
---|
98 | AC_MSG_CHECKING([STLD])
|
---|
99 | AC_MSG_RESULT([$STLD])
|
---|
100 | AC_MSG_CHECKING([STLD_FLAGS])
|
---|
101 | AC_MSG_RESULT([$STLD_FLAGS])
|
---|
102 |
|
---|
103 | AC_LD_PICFLAG
|
---|
104 | AC_LD_EXPORT_DYNAMIC
|
---|
105 | AC_LD_SHLIBEXT
|
---|
106 | AC_LD_SONAMEFLAG
|
---|
107 | AC_LIBREPLACE_SHLD
|
---|
108 | AC_LIBREPLACE_SHLD_FLAGS
|
---|
109 | AC_LIBREPLACE_MDLD
|
---|
110 | AC_LIBREPLACE_MDLD_FLAGS
|
---|
111 | AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
|
---|
112 |
|
---|
113 | #######################################################
|
---|
114 | # test whether building a shared library actually works
|
---|
115 | if test $BLDSHARED = true; then
|
---|
116 |
|
---|
117 | AC_MSG_CHECKING([SHLD])
|
---|
118 | AC_MSG_RESULT([$SHLD])
|
---|
119 | AC_MSG_CHECKING([SHLD_FLAGS])
|
---|
120 | AC_MSG_RESULT([$SHLD_FLAGS])
|
---|
121 |
|
---|
122 | AC_MSG_CHECKING([MDLD])
|
---|
123 | AC_MSG_RESULT([$MDLD])
|
---|
124 | AC_MSG_CHECKING([MDLD_FLAGS])
|
---|
125 | AC_MSG_RESULT([$MDLD_FLAGS])
|
---|
126 |
|
---|
127 | AC_MSG_CHECKING([SHLIBEXT])
|
---|
128 | AC_MSG_RESULT([$SHLIBEXT])
|
---|
129 | AC_MSG_CHECKING([SONAMEFLAG])
|
---|
130 | AC_MSG_RESULT([$SONAMEFLAG])
|
---|
131 |
|
---|
132 | AC_MSG_CHECKING([PICFLAG])
|
---|
133 | AC_MSG_RESULT([$PICFLAG])
|
---|
134 |
|
---|
135 | AC_CACHE_CHECK([whether building shared libraries actually works],
|
---|
136 | [ac_cv_shlib_works],[
|
---|
137 | ac_cv_shlib_works=no
|
---|
138 | # try building a trivial shared library
|
---|
139 | # TODO: also test SONAMEFLAG
|
---|
140 | ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/../tests/shlib.c -o shlib.o &&
|
---|
141 | ${SHLD} ${SHLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
|
---|
142 | ac_cv_shlib_works=yes
|
---|
143 | rm -f shlib.${SHLIBEXT} shlib.o
|
---|
144 | ])
|
---|
145 | AC_CACHE_CHECK([whether building shared modules actually works],
|
---|
146 | [ac_cv_shmod_works],[
|
---|
147 | ac_cv_shmod_works=no
|
---|
148 | # try building a trivial shared library
|
---|
149 | ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/../tests/shlib.c -o shlib.o &&
|
---|
150 | ${MDLD} ${MDLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
|
---|
151 | ac_cv_shmod_works=yes
|
---|
152 | rm -f shlib.${SHLIBEXT} shlib.o
|
---|
153 | ])
|
---|
154 | if test $ac_cv_shlib_works = no; then
|
---|
155 | AC_MSG_ERROR(unable to build shared libraries)
|
---|
156 | fi
|
---|
157 | if test $ac_cv_shmod_works = no; then
|
---|
158 | AC_MSG_ERROR(unable to build shared modules)
|
---|
159 | fi
|
---|
160 | fi
|
---|
161 |
|
---|
162 | AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
|
---|
163 |
|
---|
164 | AC_MSG_CHECKING([if we can link using the selected flags])
|
---|
165 | AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
|
---|
166 | AC_MSG_RESULT(yes),
|
---|
167 | AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]),
|
---|
168 | AC_MSG_WARN([cannot run when cross-compiling]))
|
---|
169 |
|
---|
170 |
|
---|
171 | USESHARED=false
|
---|
172 | AC_SUBST(USESHARED)
|
---|
173 |
|
---|
174 | AC_ARG_ENABLE(dso,
|
---|
175 | [ --enable-dso Enable using shared libraries internally (experimental)],
|
---|
176 | [],[enable_dso=no])
|
---|
177 |
|
---|
178 | if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then
|
---|
179 | AC_MSG_ERROR([--enable-dso: no support for shared libraries])
|
---|
180 | fi
|
---|
181 |
|
---|
182 | if test x"$enable_dso" != x"no"; then
|
---|
183 | USESHARED=$BLDSHARED
|
---|
184 | fi
|
---|
185 |
|
---|
186 | AC_MSG_CHECKING([if binaries will use shared libraries])
|
---|
187 | AC_MSG_RESULT([$USESHARED])
|
---|