mirror of
https://github.com/samba-team/samba.git
synced 2024-12-28 07:21:54 +03:00
ca6ac11b46
(This used to be commit bd089818a3
)
320 lines
5.4 KiB
Plaintext
320 lines
5.4 KiB
Plaintext
#
|
|
# 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)
|
|
])
|
|
|
|
AC_DEFUN([AC_LD_EXPORT_DYNAMIC],
|
|
[
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
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"
|
|
;;
|
|
*)
|
|
LD_EXPORT_DYNAMIC=""
|
|
;;
|
|
esac
|
|
fi
|
|
AC_SUBST(LD_EXPORT_DYNAMIC)
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
])
|
|
|
|
AC_DEFUN([AC_LD_PICFLAG],
|
|
[
|
|
case "$host_os" in
|
|
*linux*)
|
|
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*)
|
|
if test $ac_cv_prog_cc_Ae = yes; then
|
|
PICFLAG="+z +ESnolit"
|
|
elif test "${GCC}" = "yes"; then
|
|
PICFLAG="-fPIC"
|
|
fi
|
|
if test "$host_cpu" = "ia64"; then
|
|
PICFLAG="+z"
|
|
fi
|
|
;;
|
|
*osf*)
|
|
PICFLAG="-fPIC"
|
|
;;
|
|
*unixware*)
|
|
PICFLAG="-KPIC"
|
|
;;
|
|
*darwin*)
|
|
PICFLAG="-fno-common"
|
|
;;
|
|
esac
|
|
AC_SUBST(PICFLAG)
|
|
])
|
|
|
|
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],
|
|
[
|
|
LD_SHLIB_FLAGS="-shared"
|
|
|
|
case "$host_os" in
|
|
*linux*)
|
|
LD_SHLIB_FLAGS="-shared -Wl,-Bsymbolic"
|
|
;;
|
|
*solaris*)
|
|
LD_SHLIB_FLAGS="-G"
|
|
if test "${GCC}" = "no"; then
|
|
## ${CFLAGS} added for building 64-bit shared
|
|
## libs using Sun's Compiler
|
|
LD_SHLIB_FLAGS="-G \${CFLAGS}"
|
|
fi
|
|
;;
|
|
*sunos*)
|
|
LD_SHLIB_FLAGS="-G"
|
|
;;
|
|
*irix*)
|
|
LD_SHLIB_FLAGS="-shared"
|
|
;;
|
|
*aix*)
|
|
LD_SHLIB_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
|
|
;;
|
|
*hpux*)
|
|
if test "${GCC}" = "yes"; then
|
|
LD_SHLIB_FLAGS="-shared"
|
|
else
|
|
LD_SHLIB_FLAGS="-b"
|
|
fi
|
|
;;
|
|
*osf*)
|
|
LD_SHLIB_FLAGS="-shared"
|
|
;;
|
|
*darwin*)
|
|
LD_SHLIB_FLAGS="-dynamiclib -Wl,-search_paths_first"
|
|
;;
|
|
esac
|
|
|
|
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"
|
|
AC_SUBST(SHLD_FLAGS)
|
|
])
|
|
|
|
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)
|
|
])
|
|
|
|
AC_DEFUN([AC_LD_SONAMEFLAG],
|
|
[
|
|
AC_SUBST(SONAMEFLAG)
|
|
SONAMEFLAG=""
|
|
case "$host_os" in
|
|
*linux*)
|
|
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*)
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
;;
|
|
*hpux*)
|
|
SONAMEFLAG="-Wl,+h,"
|
|
;;
|
|
*osf*)
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
;;
|
|
*unixware*)
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
;;
|
|
*darwin*)
|
|
SONAMEFLAG="#"
|
|
;;
|
|
*aix*)
|
|
# Not supported
|
|
SONAMEFLAG="#"
|
|
;;
|
|
esac
|
|
])
|
|
|
|
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
|
|
*linux*)
|
|
LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,--allow-shlib-undefined"
|
|
;;
|
|
*osf*)
|
|
LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-expect_unresolved,\"*\""
|
|
;;
|
|
*darwin*)
|
|
LD_SHLIB_ALLOW_UNDEF_FLAG="-undefined dynamic_lookup"
|
|
;;
|
|
*aix*)
|
|
LD_SHLIB_ALLOW_UNDEF_FLAG="--Wl,-bnoentry"
|
|
;;
|
|
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
|
|
*linux*)
|
|
LIB_PATH_VAR=LD_LIBRARY_PATH
|
|
;;
|
|
*netbsd*)
|
|
LIB_PATH_VAR=LD_LIBRARY_PATH
|
|
;;
|
|
*solaris*)
|
|
LIB_PATH_VAR=LD_LIBRARY_PATH
|
|
;;
|
|
*hpux*)
|
|
LIB_PATH_VAR=SHLIB_PATH
|
|
;;
|
|
*osf*)
|
|
LIB_PATH_VAR=LD_LIBRARY_PATH
|
|
;;
|
|
*aix*)
|
|
LIB_PATH_VAR=LIB_PATH
|
|
;;
|
|
*irix*)
|
|
LIB_PATH_VAR=LD_LIBRARY_PATH
|
|
;;
|
|
*darwin*)
|
|
LIB_PATH_VAR=DYLD_LIBRARY_PATH
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(LIB_PATH_VAR)
|
|
])
|