From decded66c332ae2a31cb30402e1c55ce11177845 Mon Sep 17 00:00:00 2001 From: Jeff Trawick Date: Fri, 7 Dec 2001 17:48:36 +0000 Subject: [PATCH] Do special install processing for Apache DSO modules on HP-UX, Tru64, 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 | 6 ++++++ build/instdso.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ build/special.mk | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100755 build/instdso.sh diff --git a/CHANGES b/CHANGES index f111c5d2a3..9694d39e57 100644 --- 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 index 0000000000..c7b5d61564 --- /dev/null +++ b/build/instdso.sh @@ -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 diff --git a/build/special.mk b/build/special.mk index cb3e8d1662..5be54a7c19 100644 --- a/build/special.mk +++ b/build/special.mk @@ -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 -- 2.50.1