2008-01-05 23:09:25 +01:00
#
# This offers a nice overview how to build shared libraries on all platforms
# http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html
#
AC_DEFUN([AC_LIBREPLACE_STLD],
[
AC_PATH_PROG(PROG_AR, ar)
STLD=${PROG_AR}
AC_SUBST(STLD)
])
AC_DEFUN([AC_LIBREPLACE_STLD_FLAGS],
[
STLD_FLAGS="-rcs"
AC_SUBST(STLD_FLAGS)
])
2007-11-06 01:05:19 +00:00
AC_DEFUN([AC_LD_EXPORT_DYNAMIC],
[
saved_LDFLAGS="$LDFLAGS"
2007-11-06 04:59:50 +00:00
if AC_TRY_COMMAND([${CC-cc} $CFLAGS -Wl,--version 2>&1 | grep "GNU ld" >/dev/null]); then
LD_EXPORT_DYNAMIC="-Wl,-export-dynamic"
else
case "$host_os" in
hpux* )
LD_EXPORT_DYNAMIC="-Wl,-E"
;;
2007-11-06 18:25:34 +00:00
*)
2007-11-06 04:59:50 +00:00
LD_EXPORT_DYNAMIC=""
;;
esac
fi
2007-11-06 01:05:19 +00:00
AC_SUBST(LD_EXPORT_DYNAMIC)
LDFLAGS="$saved_LDFLAGS"
])
2007-11-06 02:16:55 +00:00
AC_DEFUN([AC_LD_PICFLAG],
[
case "$host_os" in
2009-05-16 04:05:53 +02:00
*linux*|*gnu*)
2007-11-06 02:16:55 +00:00
PICFLAG="-fPIC"
;;
*solaris*)
if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
else
PICFLAG="-KPIC"
fi
;;
*sunos*)
PICFLAG="-KPIC" # Is this correct for SunOS
;;
*netbsd* | *freebsd* | *dragonfly* )
PICFLAG="-fPIC -DPIC"
;;
*openbsd*)
PICFLAG="-fPIC"
;;
*irix*)
if test "${GCC}" = "yes"; then
PICFLAG="-fPIC"
else
PICFLAG="-KPIC"
fi
;;
*aix*)
# as AIX code is always position independent...
PICFLAG="-O2"
;;
*hpux*)
2009-06-09 14:18:58 +10:00
if test "${GCC}" = "yes"; then
2007-11-06 02:16:55 +00:00
PICFLAG="-fPIC"
2009-06-09 14:18:58 +10:00
elif test "$host_cpu" = "ia64"; then
PICFLAG="+z"
elif test $ac_cv_prog_cc_Ae = yes; then
PICFLAG="+z +ESnolit"
2007-11-06 02:16:55 +00:00
fi
;;
*osf*)
PICFLAG="-fPIC"
;;
*unixware*)
PICFLAG="-KPIC"
;;
*darwin*)
2008-01-05 23:09:25 +01:00
PICFLAG="-fno-common"
2007-11-06 02:16:55 +00:00
;;
esac
AC_SUBST(PICFLAG)
])
2007-11-06 02:17:05 +00:00
2008-01-05 23:09:25 +01:00
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_LINKER],
[
LD_SHLIB_LINKER="${CC}"
case "$host_os" in
*irix*)
LD_SHLIB_LINKER="${PROG_LD}"
;;
esac
AC_SUBST(LD_SHLIB_LINKER)
])
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_FLAGS],
2007-11-06 02:17:05 +00:00
[
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-shared"
2007-11-06 02:17:05 +00:00
case "$host_os" in
2009-05-16 04:05:53 +02:00
*linux*|*gnu*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-shared -Wl,-Bsymbolic"
2007-11-06 02:17:05 +00:00
;;
*solaris*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-G"
2007-11-06 02:17:05 +00:00
if test "${GCC}" = "no"; then
## ${CFLAGS} added for building 64-bit shared
## libs using Sun's Compiler
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-G \${CFLAGS}"
2007-11-06 02:17:05 +00:00
fi
;;
*sunos*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-G"
2007-11-06 02:17:05 +00:00
;;
*irix*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-shared"
2007-11-06 02:17:05 +00:00
;;
*aix*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
2007-11-06 02:17:05 +00:00
;;
*hpux*)
2007-11-07 01:32:17 +00:00
if test "${GCC}" = "yes"; then
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-shared"
2007-11-07 01:32:17 +00:00
else
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-b"
2007-11-07 01:32:17 +00:00
fi
2007-11-06 02:17:05 +00:00
;;
2008-01-05 23:09:25 +01:00
*osf*)
LD_SHLIB_FLAGS="-shared"
;;
2007-11-06 02:17:05 +00:00
*darwin*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_FLAGS="-dynamiclib -Wl,-search_paths_first"
2007-11-06 02:17:05 +00:00
;;
esac
2008-01-05 23:09:25 +01:00
AC_SUBST(LD_SHLIB_FLAGS)
])
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG],
[
LD_SHLIB_DISALLOW_UNDEF_FLAG=""
#
# TODO: enforce error not only warnings
#
# NOTE: -Wl,--no-allow-shlib-undefined isn't what we want...
# as it bails out on broken system libraries
#
case "$host_os" in
*osf*)
LD_SHLIB_DISALLOW_UNDEF_FLAG="-warning_unresolved"
;;
*darwin*)
LD_SHLIB_DISALLOW_UNDEF_FLAG="-undefined error"
;;
esac
AC_SUBST(LD_SHLIB_DISALLOW_UNDEF_FLAG)
])
AC_DEFUN([AC_LIBREPLACE_SHLD],
[
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
SHLD="$LD_SHLIB_LINKER"
AC_SUBST(SHLD)
])
AC_DEFUN([AC_LIBREPLACE_SHLD_FLAGS],
[
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG])
SHLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_DISALLOW_UNDEF_FLAG"
2007-11-06 02:17:05 +00:00
AC_SUBST(SHLD_FLAGS)
])
2007-11-06 02:35:46 +00:00
AC_DEFUN([AC_LD_SHLIBEXT],
[
SHLIBEXT="so"
case "$host_os" in
*hpux*)
if test "$host_cpu" = "ia64"; then
SHLIBEXT="so"
else
SHLIBEXT="sl"
fi
;;
*darwin*)
SHLIBEXT="dylib"
;;
esac
AC_SUBST(SHLIBEXT)
])
2007-11-06 16:23:18 +00:00
AC_DEFUN([AC_LD_SONAMEFLAG],
[
AC_SUBST(SONAMEFLAG)
SONAMEFLAG=""
case "$host_os" in
2009-08-07 13:58:52 -07:00
*linux*|*gnu*|*qnx*)
2007-11-06 16:23:18 +00:00
SONAMEFLAG="-Wl,-soname="
;;
*solaris*)
SONAMEFLAG="-h "
if test "${GCC}" = "yes"; then
SONAMEFLAG="-Wl,-soname="
fi
;;
*sunos*)
SONAMEFLAG="-Wl,-h,"
;;
*netbsd* | *freebsd* | *dragonfly* )
SONAMEFLAG="-Wl,-soname,"
;;
*openbsd*)
SONAMEFLAG="-Wl,-soname,"
;;
*irix*)
2007-11-06 18:25:34 +00:00
SONAMEFLAG="-Wl,-soname,"
2007-11-06 16:23:18 +00:00
;;
*hpux*)
2008-01-05 23:09:25 +01:00
SONAMEFLAG="-Wl,+h,"
2007-11-06 16:23:18 +00:00
;;
*osf*)
SONAMEFLAG="-Wl,-soname,"
;;
*unixware*)
SONAMEFLAG="-Wl,-soname,"
;;
*darwin*)
2008-01-05 23:09:25 +01:00
SONAMEFLAG="#"
;;
*aix*)
# Not supported
SONAMEFLAG="#"
2007-11-06 16:23:18 +00:00
;;
esac
])
2008-01-05 23:09:25 +01:00
2009-06-15 16:20:06 -04:00
AC_DEFUN([AC_LD_VERSIONSCRIPT],
[
AC_SUBST(VERSIONSCRIPT)
VERSIONSCRIPT=""
case "$host_os" in
*linux*|*gnu*)
VERSIONSCRIPT="-Wl,--version-script"
;;
*solaris*)
if test "${GCC}" = "yes"; then
VERSIONSCRIPT="-Wl,--version-script"
fi
;;
esac
])
2008-01-05 23:09:25 +01:00
AC_DEFUN([AC_LIBREPLACE_MDLD],
[
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
MDLD="$LD_SHLIB_LINKER"
AC_SUBST(MDLD)
])
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG],
[
LD_ALLOW_SHLIB_UNDEF_FLAG=""
case "$host_os" in
2009-05-16 04:05:53 +02:00
*linux*|*gnu*)
2008-01-05 23:09:25 +01:00
LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,--allow-shlib-undefined"
;;
*osf*)
2008-01-14 22:24:07 +01:00
LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-expect_unresolved,\"*\""
2008-01-05 23:09:25 +01:00
;;
*darwin*)
LD_SHLIB_ALLOW_UNDEF_FLAG="-undefined dynamic_lookup"
;;
2008-05-08 12:41:57 +02:00
*aix*)
2008-05-29 15:50:52 +02:00
LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-bnoentry"
2008-05-08 12:41:57 +02:00
;;
2008-01-05 23:09:25 +01:00
esac
AC_SUBST(LD_SHLIB_ALLOW_UNDEF_FLAG)
])
AC_DEFUN([AC_LIBREPLACE_MDLD_FLAGS],
[
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG])
MDLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_ALLOW_UNDEF_FLAG"
AC_SUBST(MDLD_FLAGS)
])
AC_DEFUN([AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR],
[
case "$host_os" in
2009-05-16 04:05:53 +02:00
*linux*|*gnu*)
2008-01-05 23:09:25 +01:00
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
2009-02-22 00:43:38 +01:00
*bsd*)
2008-02-01 20:03:05 +01:00
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
2008-01-05 23:09:25 +01:00
*solaris*)
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
*hpux*)
LIB_PATH_VAR=SHLIB_PATH
;;
*osf*)
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
*aix*)
2009-07-05 22:42:29 +02:00
LIB_PATH_VAR=LIBPATH
2008-01-05 23:09:25 +01:00
;;
*irix*)
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
*darwin*)
LIB_PATH_VAR=DYLD_LIBRARY_PATH
;;
2009-07-05 22:42:29 +02:00
*)
LIB_PATH_VAR=LD_LIBRARY_PATH
;;
2008-01-05 23:09:25 +01:00
esac
AC_SUBST(LIB_PATH_VAR)
])