LD=${PROG_LD}
AC_PROG_LD_GNU
LD=""
-AC_PATH_PROG(PROG_AR, ar)
-AC_SUBST(STLD)
-AC_SUBST(STLD_FLAGS)
AC_SUBST(BLDSHARED)
AC_SUBST(LD)
+AC_SUBST(SYS_LDFLAGS)
AC_SUBST(LDFLAGS)
-AC_SUBST(SHLD)
-AC_SUBST(SHLD_FLAGS)
-AC_SUBST(SHLD_UNDEF_FLAGS)
-AC_SUBST(SHLIBEXT)
-AC_SUBST(SONAMEFLAG)
-AC_SUBST(PICFLAG)
# Assume non-shared by default and override below
# these are the defaults, good for lots of systems
-STLD=${PROG_AR}
-STLD_FLAGS="-rcs"
BLDSHARED="false"
LD="${CC}"
-LDFLAGS=""
-SHLD="${CC}"
-SHLD_FLAGS="-shared"
-SHLIBEXT="so"
-SONAMEFLAG=""
PICFLAG=""
-AC_MSG_CHECKING([ability to build shared libraries])
+# allow for --with-hostld=gcc
+AC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker],
+[HOSTLD=$withval],
+[HOSTLD=$HOSTCC])
+
+AC_MSG_CHECKING([whether to try to build shared libraries on $host_os])
# and these are for particular systems
case "$host_os" in
*linux*)
BLDSHARED="true"
- SHLD_FLAGS="-shared -Wl,-Bsymbolic"
- SHLD_UNDEF_FLAGS="-Wl,--allow-shlib-undefined"
- LDFLAGS="-Wl,--export-dynamic"
- PICFLAG="-fPIC"
- SONAMEFLAG="-Wl,-soname="
+ SYS_LDFLAGS="-Wl,--export-dynamic"
;;
*solaris*)
BLDSHARED="true"
- SHLD_FLAGS="-G"
- SONAMEFLAG="-h "
if test "${GCC}" = "yes"; then
- PICFLAG="-fPIC"
- SONAMEFLAG="-Wl,-soname="
if test "${ac_cv_prog_gnu_ld}" = "yes"; then
- LDFLAGS="-Wl,-E"
+ SYS_LDFLAGS="-Wl,-E"
fi
- else
- PICFLAG="-KPIC"
- ## ${CFLAGS} added for building 64-bit shared
- ## libs using Sun's Compiler
- SHLD_FLAGS="-G \${CFLAGS}"
fi
;;
*sunos*)
BLDSHARED="true"
- SHLD_FLAGS="-G"
- SONAMEFLAG="-Wl,-h,"
- PICFLAG="-KPIC" # Is this correct for SunOS
;;
*netbsd* | *freebsd* | *dragonfly* )
BLDSHARED="true"
- LDFLAGS="-Wl,--export-dynamic"
- SONAMEFLAG="-Wl,-soname,"
- PICFLAG="-fPIC -DPIC"
+ SYS_LDFLAGS="-Wl,--export-dynamic"
;;
*openbsd*)
BLDSHARED="true"
- LDFLAGS="-Wl,-Bdynamic"
- SONAMEFLAG="-Wl,-soname,"
- PICFLAG="-fPIC"
+ SYS_LDFLAGS="-Wl,-Bdynamic"
;;
*irix*)
BLDSHARED="true"
- SHLD_FLAGS="-set_version sgi1.0 -shared"
- SONAMEFLAG="-soname "
- SHLD="${PROG_LD}"
- if test "${GCC}" = "yes"; then
- PICFLAG="-fPIC"
- else
- PICFLAG="-KPIC"
- fi
;;
*aix*)
BLDSHARED="true"
- SHLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
- LDFLAGS="-Wl,-brtl,-bexpall,-bbigtoc"
- # as AIX code is always position independent...
- PICFLAG="-O2"
+ SYS_LDFLAGS="-Wl,-brtl,-bexpall,-bbigtoc"
;;
*hpux*)
# Use special PIC flags for the native HP-UX compiler.
- if test $ac_cv_prog_cc_Ae = yes; then
- BLDSHARED="true"
- SHLD_FLAGS="-b -Wl,-B,symbolic,-b,-z"
- SONAMEFLAG="-Wl,+h "
- PICFLAG="+z"
- elif test "${GCC}" = "yes"; then
- BLDSHARED="true" # I hope this is correct
- PICFLAG="-fPIC"
- fi
+ BLDSHARED="true" # I hope this is correct
if test "$host_cpu" = "ia64"; then
- SHLIBEXT="so"
- LDFLAGS="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
+ SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
else
- SHLIBEXT="sl"
- LDFLAGS="-Wl,-E,+b/usr/local/lib:/usr/lib"
+ SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib:/usr/lib"
fi
;;
*osf*)
BLDSHARED="true"
- SONAMEFLAG="-Wl,-soname,"
- PICFLAG="-fPIC"
;;
*unixware*)
BLDSHARED="true"
- SONAMEFLAG="-Wl,-soname,"
- PICFLAG="-KPIC"
;;
*darwin*)
BLDSHARED="true"
- SHLD_FLAGS="-bundle -flat_namespace -undefined suppress"
- SHLIBEXT="dylib"
;;
esac
AC_MSG_RESULT([$LD])
AC_MSG_CHECKING([LDFLAGS])
AC_MSG_RESULT([$LDFLAGS])
+AC_MSG_CHECKING([SYS_LDFLAGS])
+AC_MSG_RESULT([$SYS_LDFLAGS])
+
+AC_SUBST(HOSTLD)
+
+AC_LIBREPLACE_STLD
+AC_LIBREPLACE_STLD_FLAGS
AC_MSG_CHECKING([STLD])
AC_MSG_RESULT([$STLD])
AC_MSG_CHECKING([STLD_FLAGS])
AC_MSG_RESULT([$STLD_FLAGS])
+AC_LD_PICFLAG
+AC_LD_EXPORT_DYNAMIC
+AC_LD_SHLIBEXT
+AC_LD_SONAMEFLAG
+AC_LIBREPLACE_SHLD
+AC_LIBREPLACE_SHLD_FLAGS
+AC_LIBREPLACE_MDLD
+AC_LIBREPLACE_MDLD_FLAGS
+AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
+
#######################################################
# test whether building a shared library actually works
if test $BLDSHARED = true; then
-AC_MSG_CHECKING([SHLD])
-AC_MSG_RESULT([$SHLD])
-AC_MSG_CHECKING([SHLD_FLAGS])
-AC_MSG_RESULT([$SHLD_FLAGS])
+ AC_MSG_CHECKING([SHLD])
+ AC_MSG_RESULT([$SHLD])
+ AC_MSG_CHECKING([SHLD_FLAGS])
+ AC_MSG_RESULT([$SHLD_FLAGS])
+
+ AC_MSG_CHECKING([MDLD])
+ AC_MSG_RESULT([$MDLD])
+ AC_MSG_CHECKING([MDLD_FLAGS])
+ AC_MSG_RESULT([$MDLD_FLAGS])
+
+ AC_MSG_CHECKING([SHLIBEXT])
+ AC_MSG_RESULT([$SHLIBEXT])
+ AC_MSG_CHECKING([SONAMEFLAG])
+ AC_MSG_RESULT([$SONAMEFLAG])
+
+ AC_MSG_CHECKING([PICFLAG])
+ AC_MSG_RESULT([$PICFLAG])
+
+ AC_CACHE_CHECK([whether building shared libraries actually works],
+ [ac_cv_shlib_works],[
+ ac_cv_shlib_works=no
+ # try building a trivial shared library
+ # TODO: also test SONAMEFLAG
+ ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
+ ${SHLD} ${SHLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
+ ac_cv_shlib_works=yes
+ rm -f shlib.${SHLIBEXT} shlib.o
+ ])
+ AC_CACHE_CHECK([whether building shared modules actually works],
+ [ac_cv_shmod_works],[
+ ac_cv_shmod_works=no
+ # try building a trivial shared library
+ ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
+ ${MDLD} ${MDLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o &&
+ ac_cv_shmod_works=yes
+ rm -f shlib.${SHLIBEXT} shlib.o
+ ])
+ if test $ac_cv_shlib_works = no; then
+ AC_MSG_ERROR(unable to build shared libraries)
+ fi
+ if test $ac_cv_shmod_works = no; then
+ AC_MSG_ERROR(unable to build shared modules)
+ fi
+fi
AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
-AC_MSG_CHECKING([SHLIBEXT])
-AC_MSG_RESULT([$SHLIBEXT])
-AC_MSG_CHECKING([SONAMEFLAG])
-AC_MSG_RESULT([$SONAMEFLAG])
-
-AC_MSG_CHECKING([PICFLAG])
-AC_MSG_RESULT([$PICFLAG])
-
-AC_CACHE_CHECK([whether building shared libraries actually works],
- [ac_cv_shlib_works],[
- ac_cv_shlib_works=no
- # try building a trivial shared library
- ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
- ${SHLD} `eval echo ${SHLD_FLAGS} ` -o shlib.${SHLIBEXT} shlib.o &&
- ac_cv_shlib_works=yes
- rm -f shlib.${SHLIBEXT} shlib.o
-])
-if test $ac_cv_shlib_works = no; then
- BLDSHARED=false
-fi
-fi
AC_MSG_CHECKING([if we can link using the selected flags])
AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
AC_SUBST(USESHARED)
AC_ARG_ENABLE(dso,
-[ --enable-dso Enable using shared libraries internally (experimental)],
+[ --enable-dso Enable using shared libraries internally (experimental)],
[],[enable_dso=no])
if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then