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,"
75 # disabled because us4 fails to link libtorture.so
77 LDFLAGS="$LDFLAGS -Wl,-Bdynamic"
78 SONAMEFLAG="-Wl,-soname,"
81 # disabled because us4 fails to link libtorture.so
87 # disabled because us4 fails to link libtorture.so
89 LDFLAGS="$LDFLAGS -Wl,-brtl,-bexpall,-bbigtoc"
92 # Use special PIC flags for the native HP-UX compiler.
93 if test $ac_cv_prog_cc_Ae = yes; then
96 elif test "${GCC}" = "yes"; then
97 BLDSHARED="true" # I hope this is correct
99 if test "$host_cpu" = "ia64"; then
100 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
102 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib:/usr/lib"
106 # disabled because tru64 fails to link libtorture.so
108 SONAMEFLAG="-Wl,-soname,"
112 SONAMEFLAG="-Wl,-soname,"
119 AC_MSG_RESULT($BLDSHARED)
121 AC_MSG_CHECKING([LD])
123 AC_MSG_CHECKING([LDFLAGS])
124 AC_MSG_RESULT([$LDFLAGS])
128 AC_MSG_CHECKING([STLD])
129 AC_MSG_RESULT([$STLD])
130 AC_MSG_CHECKING([STLD_FLAGS])
131 AC_MSG_RESULT([$STLD_FLAGS])
138 AC_ARG_ENABLE(shared,
139 [ --disable-shared Disable testing for building shared libraries],
140 [],[enable_shared=yes])
142 if test x"$enable_shared" = x"no" -o x"$enable_shared" = x"false"; then
146 #######################################################
147 # test whether building a shared library actually works
148 if test $BLDSHARED = true; then
150 AC_MSG_CHECKING([SHLD])
151 AC_MSG_RESULT([$SHLD])
152 AC_MSG_CHECKING([SHLD_FLAGS])
153 AC_MSG_RESULT([$SHLD_FLAGS])
155 AC_MSG_CHECKING([SHLIBEXT])
156 AC_MSG_RESULT([$SHLIBEXT])
157 AC_MSG_CHECKING([SONAMEFLAG])
158 AC_MSG_RESULT([$SONAMEFLAG])
160 AC_MSG_CHECKING([PICFLAG])
161 AC_MSG_RESULT([$PICFLAG])
163 AC_CACHE_CHECK([whether building shared libraries actually works],
164 [ac_cv_shlib_works],[
166 # try building a trivial shared library
167 ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
168 ${SHLD} `eval echo ${SHLD_FLAGS} ` -o shlib.${SHLIBEXT} shlib.o &&
169 ac_cv_shlib_works=yes
170 rm -f shlib.${SHLIBEXT} shlib.o
172 if test $ac_cv_shlib_works = no; then
177 if test $BLDSHARED != true; then
178 SHLD="shared-libraries-disabled"
179 SHLD_FLAGS="shared-libraries-disabled"
180 SHLIBEXT="shared_libraries_disabled"
181 SONAMEFLAG="shared-libraries-disabled"
183 AC_MSG_CHECKING([SHLD])
184 AC_MSG_RESULT([$SHLD])
185 AC_MSG_CHECKING([SHLD_FLAGS])
186 AC_MSG_RESULT([$SHLD_FLAGS])
188 AC_MSG_CHECKING([SHLIBEXT])
189 AC_MSG_RESULT([$SHLIBEXT])
190 AC_MSG_CHECKING([SONAMEFLAG])
191 AC_MSG_RESULT([$SONAMEFLAG])
193 AC_MSG_CHECKING([PICFLAG])
194 AC_MSG_RESULT([$PICFLAG])
197 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
199 AC_MSG_CHECKING([if we can link using the selected flags])
200 AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
202 AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]),
203 AC_MSG_WARN([cannot run when cross-compiling]))
210 [ --enable-dso Enable using shared libraries internally (experimental)],
213 if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then
214 AC_MSG_ERROR([--enable-dso: no support for shared libraries])
217 if test x"$enable_dso" != x"no"; then
221 AC_MSG_CHECKING([if binaries will use shared libraries])
222 AC_MSG_RESULT([$USESHARED])