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)
21 AC_SUBST(SHLD_UNDEF_FLAGS)
24 # Assume non-shared by default and override below
25 # these are the defaults, good for lots of systems
34 # allow for --with-hostld=gcc
35 AC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker],
38 if test z"$cross_compiling" = "yes"; then
45 AC_MSG_CHECKING([whether to try to build shared libraries on $host_os])
47 # and these are for particular systems
51 SHLD_UNDEF_FLAGS="-Wl,--allow-shlib-undefined"
52 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
53 SONAMEFLAG="-Wl,-soname="
58 if test "${GCC}" = "yes"; then
59 SONAMEFLAG="-Wl,-soname="
60 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
61 LDFLAGS="$LDFLAGS -Wl,-E"
69 *netbsd* | *freebsd* | *dragonfly* )
71 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
72 SONAMEFLAG="-Wl,-soname,"
76 LDFLAGS="$LDFLAGS -Wl,-Bdynamic"
77 SONAMEFLAG="-Wl,-soname,"
86 LDFLAGS="$LDFLAGS -Wl,-brtl,-bexpall,-bbigtoc"
89 # Use special PIC flags for the native HP-UX compiler.
90 if test $ac_cv_prog_cc_Ae = yes; then
92 elif test "${GCC}" = "yes"; then
94 BLDSHARED="true" # I hope this is correct
95 if test "$host_cpu" = "ia64"; then
96 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
98 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib:/usr/lib"
103 SONAMEFLAG="-Wl,-soname,"
107 SONAMEFLAG="-Wl,-soname,"
114 AC_MSG_RESULT($BLDSHARED)
116 AC_MSG_CHECKING([LD])
118 AC_MSG_CHECKING([LDFLAGS])
119 AC_MSG_RESULT([$LDFLAGS])
123 AC_MSG_CHECKING([STLD])
124 AC_MSG_RESULT([$STLD])
125 AC_MSG_CHECKING([STLD_FLAGS])
126 AC_MSG_RESULT([$STLD_FLAGS])
133 AC_ARG_ENABLE(shared,
134 [ --disable-shared Disable testing for building shared libraries],
135 [],[enable_shared=yes])
137 if test x"$enable_shared" = x"no" -o x"$enable_shared" = x"false"; then
141 #######################################################
142 # test whether building a shared library actually works
143 if test $BLDSHARED = true; then
145 AC_MSG_CHECKING([SHLD])
146 AC_MSG_RESULT([$SHLD])
147 AC_MSG_CHECKING([SHLD_FLAGS])
148 AC_MSG_RESULT([$SHLD_FLAGS])
150 AC_MSG_CHECKING([SHLIBEXT])
151 AC_MSG_RESULT([$SHLIBEXT])
152 AC_MSG_CHECKING([SONAMEFLAG])
153 AC_MSG_RESULT([$SONAMEFLAG])
155 AC_MSG_CHECKING([PICFLAG])
156 AC_MSG_RESULT([$PICFLAG])
158 AC_CACHE_CHECK([whether building shared libraries actually works],
159 [ac_cv_shlib_works],[
161 # try building a trivial shared library
162 ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
163 ${SHLD} `eval echo ${SHLD_FLAGS} ` -o shlib.${SHLIBEXT} shlib.o &&
164 ac_cv_shlib_works=yes
165 rm -f shlib.${SHLIBEXT} shlib.o
167 if test $ac_cv_shlib_works = no; then
172 if test $BLDSHARED != true; then
173 SHLD="shared-libraries-disabled"
174 SHLD_FLAGS="shared-libraries-disabled"
175 SHLIBEXT="shared_libraries_disabled"
176 SONAMEFLAG="shared-libraries-disabled"
178 AC_MSG_CHECKING([SHLD])
179 AC_MSG_RESULT([$SHLD])
180 AC_MSG_CHECKING([SHLD_FLAGS])
181 AC_MSG_RESULT([$SHLD_FLAGS])
183 AC_MSG_CHECKING([SHLIBEXT])
184 AC_MSG_RESULT([$SHLIBEXT])
185 AC_MSG_CHECKING([SONAMEFLAG])
186 AC_MSG_RESULT([$SONAMEFLAG])
188 AC_MSG_CHECKING([PICFLAG])
189 AC_MSG_RESULT([$PICFLAG])
192 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
194 AC_MSG_CHECKING([if we can link using the selected flags])
195 AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
197 AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]),
198 AC_MSG_WARN([cannot run when cross-compiling]))
205 [ --enable-dso Enable using shared libraries internally (experimental)],
208 if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then
209 AC_MSG_ERROR([--enable-dso: no support for shared libraries])
212 if test x"$enable_dso" != x"no"; then
216 AC_MSG_CHECKING([if binaries will use shared libraries])
217 AC_MSG_RESULT([$USESHARED])