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)
18 # Assume non-shared by default and override below
19 # these are the defaults, good for lots of systems
24 # allow for --with-hostld=gcc
25 AC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker],
29 AC_MSG_CHECKING([whether to try to build shared libraries on $host_os])
31 # and these are for particular systems
35 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
39 if test "${GCC}" = "yes"; then
40 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
41 LDFLAGS="$LDFLAGS -Wl,-E"
48 *netbsd* | *freebsd* | *dragonfly* )
50 LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
54 LDFLAGS="$LDFLAGS -Wl,-Bdynamic"
61 LDFLAGS="$LDFLAGS -Wl,-brtl,-bexpall,-bbigtoc"
64 # Use special PIC flags for the native HP-UX compiler.
65 BLDSHARED="true" # I hope this is correct
66 if test "$host_cpu" = "ia64"; then
67 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
69 LDFLAGS="$LDFLAGS -Wl,-E,+b/usr/local/lib:/usr/lib"
83 AC_MSG_RESULT($BLDSHARED)
87 AC_MSG_CHECKING([LDFLAGS])
88 AC_MSG_RESULT([$LDFLAGS])
93 AC_LIBREPLACE_STLD_FLAGS
95 AC_MSG_CHECKING([STLD])
96 AC_MSG_RESULT([$STLD])
97 AC_MSG_CHECKING([STLD_FLAGS])
98 AC_MSG_RESULT([$STLD_FLAGS])
105 AC_LIBREPLACE_SHLD_FLAGS
107 AC_LIBREPLACE_MDLD_FLAGS
108 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
110 #######################################################
111 # test whether building a shared library actually works
112 if test $BLDSHARED = true; then
114 AC_MSG_CHECKING([SHLD])
115 AC_MSG_RESULT([$SHLD])
116 AC_MSG_CHECKING([SHLD_FLAGS])
117 AC_MSG_RESULT([$SHLD_FLAGS])
119 AC_MSG_CHECKING([MDLD])
120 AC_MSG_RESULT([$MDLD])
121 AC_MSG_CHECKING([MDLD_FLAGS])
122 AC_MSG_RESULT([$MDLD_FLAGS])
124 AC_MSG_CHECKING([SHLIBEXT])
125 AC_MSG_RESULT([$SHLIBEXT])
126 AC_MSG_CHECKING([SONAMEFLAG])
127 AC_MSG_RESULT([$SONAMEFLAG])
129 AC_MSG_CHECKING([PICFLAG])
130 AC_MSG_RESULT([$PICFLAG])
132 AC_CACHE_CHECK([whether building shared libraries actually works],
133 [ac_cv_shlib_works],[
135 # try building a trivial shared library
136 # TODO: also test SONAMEFLAG
137 ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
138 ${SHLD} ${SHLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
139 ac_cv_shlib_works=yes
140 rm -f shlib.${SHLIBEXT} shlib.o
142 AC_CACHE_CHECK([whether building shared modules actually works],
143 [ac_cv_shmod_works],[
145 # try building a trivial shared library
146 ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
147 ${MDLD} ${MDLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
148 ac_cv_shmod_works=yes
149 rm -f shlib.${SHLIBEXT} shlib.o
151 if test $ac_cv_shlib_works = no -o $ac_cv_shmod_works = no; then
156 if test $BLDSHARED != true; then
157 SHLD="shared-libraries-disabled"
158 SHLD_FLAGS="shared-libraries-disabled"
159 MDLD="shared-modules-disabled"
160 MDLD_FLAGS="shared-modules-disabled"
161 SHLIBEXT="shared_libraries_disabled"
162 SONAMEFLAG="shared-libraries-disabled"
164 AC_MSG_CHECKING([SHLD])
165 AC_MSG_RESULT([$SHLD])
166 AC_MSG_CHECKING([SHLD_FLAGS])
167 AC_MSG_RESULT([$SHLD_FLAGS])
169 AC_MSG_CHECKING([MDLD])
170 AC_MSG_RESULT([$MDLD])
171 AC_MSG_CHECKING([MDLD_FLAGS])
172 AC_MSG_RESULT([$MDLD_FLAGS])
174 AC_MSG_CHECKING([SHLIBEXT])
175 AC_MSG_RESULT([$SHLIBEXT])
176 AC_MSG_CHECKING([SONAMEFLAG])
177 AC_MSG_RESULT([$SONAMEFLAG])
179 AC_MSG_CHECKING([PICFLAG])
180 AC_MSG_RESULT([$PICFLAG])
183 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
185 AC_MSG_CHECKING([if we can link using the selected flags])
186 AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
188 AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]),
189 AC_MSG_WARN([cannot run when cross-compiling]))
196 [ --enable-dso Enable using shared libraries internally (experimental)],
199 if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then
200 AC_MSG_ERROR([--enable-dso: no support for shared libraries])
203 if test x"$enable_dso" != x"no"; then
207 AC_MSG_CHECKING([if binaries will use shared libraries])
208 AC_MSG_RESULT([$USESHARED])