Make the correct module name.
[nivanova/samba-autobuild/.git] / source4 / lib / replace / libreplace_ld.m4
index 2f9834838d8cdd9c33d49d81b45ede0d60b51cbd..81bde46219e8e0dcba72230904ed46b95b5e09c7 100644 (file)
@@ -3,6 +3,21 @@
 #        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"
@@ -78,43 +93,96 @@ esac
 AC_SUBST(PICFLAG)
 ])
 
-AC_DEFUN([AC_LD_SHLDFLAGS],
+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],
 [
-       SHLD_FLAGS="-shared"
+       LD_SHLIB_FLAGS="-shared"
 
        case "$host_os" in
                *linux*)
-                       SHLD_FLAGS="-shared -Wl,-Bsymbolic"
+                       LD_SHLIB_FLAGS="-shared -Wl,-Bsymbolic"
                        ;;
                *solaris*)
-                       SHLD_FLAGS="-G"
+                       LD_SHLIB_FLAGS="-G"
                        if test "${GCC}" = "no"; then
                                ## ${CFLAGS} added for building 64-bit shared 
                                ## libs using Sun's Compiler
-                               SHLD_FLAGS="-G \${CFLAGS}"
+                               LD_SHLIB_FLAGS="-G \${CFLAGS}"
                        fi
                        ;;
                *sunos*)
-                       SHLD_FLAGS="-G"
+                       LD_SHLIB_FLAGS="-G"
                        ;;
                *irix*)
-                       SHLD_FLAGS="-shared"
+                       LD_SHLIB_FLAGS="-shared"
                        ;;
                *aix*)
-                       SHLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
+                       LD_SHLIB_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
                        ;;
                *hpux*)
                        if test "${GCC}" = "yes"; then
-                               SHLD_FLAGS="-shared"
+                               LD_SHLIB_FLAGS="-shared"
                        else
-                               SHLD_FLAGS="-b"
+                               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*)
-                       SHLD_FLAGS="-bundle -flat_namespace -undefined suppress -Wl,-search_paths_first"
+                       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)
 ])
 
@@ -183,50 +251,69 @@ AC_DEFUN([AC_LD_SONAMEFLAG],
 
 AC_DEFUN([AC_LIBREPLACE_MDLD],
 [
-       MDLD="${CC}"
+       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
-               *irix*)
-                       MDLD="${PROG_LD}"
+               *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(MDLD)
+       AC_SUBST(LD_SHLIB_ALLOW_UNDEF_FLAG)
 ])
 
 AC_DEFUN([AC_LIBREPLACE_MDLD_FLAGS],
 [
-       MDLD_FLAGS="-shared"
+       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*)
-                       MDLD_FLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
-                       ;;
+                       LIB_PATH_VAR=LD_LIBRARY_PATH
+               ;;
+               *netbsd*)
+                       LIB_PATH_VAR=LD_LIBRARY_PATH
+               ;;
                *solaris*)
-                       MDLD_FLAGS="-G"
-                       if test "${GCC}" = "no"; then
-                               ## ${CFLAGS} added for building 64-bit shared
-                               ## libs using Sun's Compiler
-                               NDLD_FLAGS="-G \${CFLAGS}"
-                       fi
-                       ;;
-               *sunos*)
-                       MDLD_FLAGS="-G"
-                       ;;
+                       LIB_PATH_VAR=LD_LIBRARY_PATH
+               ;;
+               *hpux*)
+                       LIB_PATH_VAR=SHLIB_PATH
+               ;;
+               *osf*)
+                       LIB_PATH_VAR=LD_LIBRARY_PATH
+               ;;
                *aix*)
-                       MDLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
+                       LIB_PATH_VAR=LIB_PATH
                        ;;
-               *hpux*)
-                       if test "${GCC}" = "yes"; then
-                               MDLD_FLAGS="-shared"
-                       else
-                               MDLD_FLAGS="-b"
-                       fi
+               *irix*)
+                       LIB_PATH_VAR=LD_LIBRARY_PATH
                        ;;
                *darwin*)
-                       MDLD_FLAGS="-bundle -flat_namespace -undefined suppress -Wl,-search_paths_first"
+                       LIB_PATH_VAR=DYLD_LIBRARY_PATH
                        ;;
        esac
 
-       AC_SUBST(MDLD_FLAGS)
+       AC_SUBST(LIB_PATH_VAR)
 ])