]> granicus.if.org Git - apache/commitdiff
Do special install processing for Apache DSO modules on HP-UX, Tru64,
authorJeff Trawick <trawick@apache.org>
Fri, 7 Dec 2001 17:48:36 +0000 (17:48 +0000)
committerJeff Trawick <trawick@apache.org>
Fri, 7 Dec 2001 17:48:36 +0000 (17:48 +0000)
and AIX so that we get mod_foo.so installed instead of the stuff that
libtool installed.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92370 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
build/instdso.sh [new file with mode: 0755]
build/special.mk

diff --git a/CHANGES b/CHANGES
index f111c5d2a3992c472b105ab7e6d63d1f545e3603..9694d39e575f82c2955a40595583f7fbc594481b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,11 @@
 Changes with Apache 2.0.30-dev
 
+  *) Change make install processing of DSO modules to perform special
+     handling on platforms where libtool doesn't install mod_foo.so.
+     This fixes some wonkiness on HP-UX, Tru64, and AIX which
+     prevented standard LoadModule statements from working.
+     [Jeff Trawick]
+
   *) Whenever mod_so is enabled (not just when there are DSOs for
      our modules), do whatever special magic is required for compiling/
      loading third-party modules.  This allows third-party DSOs to
diff --git a/build/instdso.sh b/build/instdso.sh
new file mode 100755 (executable)
index 0000000..c7b5d61
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# instdso.sh - install Apache DSO modules
+#
+# usually this just passes through to libtool but on a few
+# platforms libtool doesn't install DSOs exactly like we'd
+# want so more effort is required
+
+if test "$#" != "3"; then
+    echo "wrong number of arguments to instdso.sh"
+    echo "Usage: instdso.sh SH_LIBTOOL-value dso-name path-to-modules"
+    exit 1
+fi
+
+SH_LIBTOOL=`echo $1 | sed -e 's/^SH_LIBTOOL=//'`
+DSOARCHIVE=$2
+TARGETDIR=$3
+DSOBASE=`echo $DSOARCHIVE | sed -e 's/\.la$//'`
+TARGET_NAME="$DSOBASE.so"
+
+# special logic for systems where libtool doesn't install
+# the DSO exactly like we'd want
+
+SYS=`uname -s`
+case $SYS in
+    AIX)
+        # on AIX, shared libraries remain in storage even when
+        # all processes using them have exited; standard practice
+        # prior to installing a shared library is to rm -f first
+        CMD="rm -f $TARGETDIR/$TARGET_NAME"
+        echo $CMD
+        $CMD || exit $?
+        CMD="cp .libs/lib$DSOBASE.so.0 $TARGETDIR/$TARGET_NAME"
+        echo $CMD
+        $CMD || exit $?
+        ;;
+    HP-UX)
+        CMD="cp .libs/$DSOBASE.sl $TARGETDIR/$TARGET_NAME"
+        echo $CMD
+        $CMD || exit $?
+        ;;
+    OSF1)
+        CMD="cp .libs/lib$DSOBASE.so $TARGETDIR/$TARGET_NAME"
+        echo $CMD
+        $CMD || exit $?
+        ;;
+    *)
+        CMD="$SH_LIBTOOL --mode=install cp $DSOARCHIVE $TARGETDIR"
+        echo $CMD
+        $CMD || exit $?
+        ;;
+esac
+
+exit 0
index cb3e8d1662bbbd66edd2e6cdab1ea88808b67a26..5be54a7c197b1ccfa6cb3dbff93c64ed278f277d 100644 (file)
@@ -68,7 +68,7 @@ install-modules:
        if [ "x$$has_mod_so" = "xhas_mod_so" ]; then \
                list='$(shared)'; \
                for i in $$list; do \
-                       $(SH_LIBTOOL) --mode=install cp $$i $(libexecdir); \
+                       $(top_builddir)/build/instdso.sh SH_LIBTOOL='$(SH_LIBTOOL)' $$i $(libexecdir); \
                done; \
        fi