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 -------------------------------------------------------
9 AC_PATH_PROG(PROG_LD,ld)
13 AC_PATH_PROG(PROG_AR, ar)
22 AC_SUBST(SHLD_UNDEF_FLAGS)
27 # Assume non-shared by default and override below
28 # these are the defaults, good for lots of systems
39 AC_MSG_CHECKING([ability to build shared libraries])
41 # and these are for particular systems
45 SHLD_FLAGS="-shared -Wl,-Bsymbolic"
46 SHLD_UNDEF_FLAGS="-Wl,--allow-shlib-undefined"
47 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
49 SONAMEFLAG="-Wl,-soname="
55 if test "${GCC}" = "yes"; then
57 SONAMEFLAG="-Wl,-soname="
58 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
59 LDFLAGS="$LDFLAGS -Wl,-E"
63 ## ${CFLAGS} added for building 64-bit shared
64 ## libs using Sun's Compiler
65 SHLD_FLAGS="-G \${CFLAGS}"
72 PICFLAG="-KPIC" # Is this correct for SunOS
74 *netbsd* | *freebsd* | *dragonfly* )
76 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
77 SONAMEFLAG="-Wl,-soname,"
82 LDFLAGS="$LDFLAGS -Wl,-Bdynamic"
83 SONAMEFLAG="-Wl,-soname,"
88 SHLD_FLAGS="-set_version sgi1.0 -shared"
91 if test "${GCC}" = "yes"; then
99 SHLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
100 LDFLAGS="$LDFLAGS -Wl,-brtl,-bexpall,-bbigtoc"
101 # as AIX code is always position independent...
105 # Use special PIC flags for the native HP-UX compiler.
106 if test $ac_cv_prog_cc_Ae = yes; then
108 SHLD_FLAGS="-b -Wl,-B,symbolic,-b,-z"
111 elif test "${GCC}" = "yes"; then
112 BLDSHARED="true" # I hope this is correct
115 if test "$host_cpu" = "ia64"; then
117 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
120 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib:/usr/lib"
125 SONAMEFLAG="-Wl,-soname,"
130 SONAMEFLAG="-Wl,-soname,"
135 SHLD_FLAGS="-bundle -flat_namespace -undefined suppress"
140 AC_MSG_RESULT($BLDSHARED)
142 AC_MSG_CHECKING([LD])
144 AC_MSG_CHECKING([LDFLAGS])
145 AC_MSG_RESULT([$LDFLAGS])
147 AC_MSG_CHECKING([STLD])
148 AC_MSG_RESULT([$STLD])
149 AC_MSG_CHECKING([STLD_FLAGS])
150 AC_MSG_RESULT([$STLD_FLAGS])
152 #######################################################
153 # test whether building a shared library actually works
154 if test $BLDSHARED = true; then
156 AC_MSG_CHECKING([SHLD])
157 AC_MSG_RESULT([$SHLD])
158 AC_MSG_CHECKING([SHLD_FLAGS])
159 AC_MSG_RESULT([$SHLD_FLAGS])
161 AC_MSG_CHECKING([SHLIBEXT])
162 AC_MSG_RESULT([$SHLIBEXT])
163 AC_MSG_CHECKING([SONAMEFLAG])
164 AC_MSG_RESULT([$SONAMEFLAG])
166 AC_MSG_CHECKING([PICFLAG])
167 AC_MSG_RESULT([$PICFLAG])
169 AC_CACHE_CHECK([whether building shared libraries actually works],
170 [ac_cv_shlib_works],[
172 # try building a trivial shared library
173 ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
174 ${SHLD} `eval echo ${SHLD_FLAGS} ` -o shlib.${SHLIBEXT} shlib.o &&
175 ac_cv_shlib_works=yes
176 rm -f shlib.${SHLIBEXT} shlib.o
178 if test $ac_cv_shlib_works = no; then
183 if test $BLDSHARED != true; then
184 SHLD="shared-libraries-disabled"
185 SHLD_FLAGS="shared-libraries-disabled"
186 SHLIBEXT="shared_libraries_disabled"
187 SONAMEFLAG="shared-libraries-disabled"
189 AC_MSG_CHECKING([SHLD])
190 AC_MSG_RESULT([$SHLD])
191 AC_MSG_CHECKING([SHLD_FLAGS])
192 AC_MSG_RESULT([$SHLD_FLAGS])
194 AC_MSG_CHECKING([SHLIBEXT])
195 AC_MSG_RESULT([$SHLIBEXT])
196 AC_MSG_CHECKING([SONAMEFLAG])
197 AC_MSG_RESULT([$SONAMEFLAG])
199 AC_MSG_CHECKING([PICFLAG])
200 AC_MSG_RESULT([$PICFLAG])
203 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
205 AC_MSG_CHECKING([if we can link using the selected flags])
206 AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
208 AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]),
209 AC_MSG_WARN([cannot run when cross-compiling]))
216 [ --enable-dso Enable using shared libraries internally (experimental)],
219 if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then
220 AC_MSG_ERROR([--enable-dso: no support for shared libraries])
223 if test x"$enable_dso" != x"no"; then
227 AC_MSG_CHECKING([if binaries will use shared libraries])
228 AC_MSG_RESULT([$USESHARED])