+++ /dev/null
-## _ _
-## _ __ ___ ___ __| | ___ ___| | mod_ssl
-## | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL
-## | | | | | | (_) | (_| | \__ \__ \ | www.modssl.org
-## |_| |_| |_|\___/ \__,_|___|___/___/_| ftp.modssl.org
-## |_____|
-## libssl.module
-## Apache 1.3 Configuration mechanism module stub
-##
-
-##
-## ====================================================================
-## The Apache Software License, Version 1.1
-##
-## Copyright (c) 2000-2001 The Apache Software Foundation. All rights
-## reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions
-## are met:
-##
-## 1. Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-##
-## 2. Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-##
-## 3. The end-user documentation included with the redistribution,
-## if any, must include the following acknowledgment:
-## "This product includes software developed by the
-## Apache Software Foundation (http://www.apache.org/)."
-## Alternately, this acknowledgment may appear in the software itself,
-## if and wherever such third-party acknowledgments normally appear.
-##
-## 4. The names "Apache" and "Apache Software Foundation" must
-## not be used to endorse or promote products derived from this
-## software without prior written permission. For written
-## permission, please contact apache@apache.org.
-##
-## 5. Products derived from this software may not be called "Apache",
-## nor may "Apache" appear in their name, without prior written
-## permission of the Apache Software Foundation.
-##
-## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
-## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-## OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-## DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
-## ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-## SUCH DAMAGE.
-## ====================================================================
-##
- # ``What you are missing, I suppose, is that I'm not
- # prepared to give equal rights to Ralf on the basis
- # that he's spent a few hours doing what he thinks is
- # better than what I've spent the last 4 years on,
- # and so he isn't prepared to cooperate with me.''
- # -- Ben Laurie, Apache-SSL author
-
-Name: ssl_module
-ConfigStart
-
- #
- # interface to the src/Configure script
- #
- my_dir="`echo ${modfile} | sed -e 's:/[^/]*$::'`"
- my_version="$my_dir/libssl.version"
- my_outfile="Makefile.config"
- my_prefix=" +"
- my_prefixe=" "
- SSL_CFLAGS=''
- SSL_LDFLAGS=''
- SSL_LIBS=''
-
- #
- # find a reasonable Bourne Shell for sub-shell calls
- #
- SH=sh
- if [ -f /bin/bash ]; then
- SH=/bin/bash
- elif [ -f /bin/sh5 ]; then
- SH=/bin/sh5
- elif [ -f /bin/sh ]; then
- SH=/bin/sh
- fi
-
- #
- # determine mod_ssl author version
- #
- A_ID=`cat $my_version | sed -e 's; .*;;'`
- A_NAME=`echo $A_ID | sed -e 's;/.*;;'`
- A_VER=`echo $A_ID | sed -e 's;.*/;;'`
- A_VER_STR=`echo $A_VER | sed -e 's;-.*;;'`
- case $A_VER_STR in
- *.*b* )
- A_VER_HEX=`echo "$A_VER_STR" | sed -e 's/b.*//' | awk -F. '{ printf("%d%02d", $1, $2); }' &&
- echo "$A_VER_STR" | sed -e 's/.*b//' | awk '{ printf("0%02d", $1); }'`
- ;;
- *.*.* )
- A_VER_HEX=`echo "$A_VER_STR" | awk -F. '{ printf("%d%02d1%02d", $1, $2, $3); }'`
- ;;
- esac
- echo "$my_prefix SSL interface: $A_NAME/$A_VER_STR"
- SSL_VERSION="-DMOD_SSL_VERSION=\\\"$A_VER_STR\\\""
-
- #
- # determine optional mod_ssl product version
- #
- if [ ".`egrep '.*/.* .*/.*' $my_version`" != . ]; then
- P_ID=`cat $my_version | sed -e 's;.* ;;'`
- P_NAME=`echo $P_ID | sed -e 's;/.*;;'`
- P_VER=`echo $P_ID | sed -e 's;.*/;;'`
- P_VER_STR=`echo $P_VER | sed -e 's;-.*;;'`
- case $P_VER_STR in
- *.*b* )
- P_VER_HEX=`echo "$P_VER_STR" | sed -e 's/b.*//' | awk -F. '{ printf("%d%02d", $1, $2); }' &&
- echo "$P_VER_STR" | sed -e 's/.*b//' | awk '{ printf("0%02d", $1); }'`
- ;;
- *.*.* )
- P_VER_HEX=`echo "$P_VER_STR" | awk -F. '{ printf("%d%02d1%02d", $1, $2, $3); }'`
- ;;
- esac
- echo "$my_prefix SSL product: $P_NAME/$P_VER_STR"
- SSL_VERSION="$SSL_VERSION -DSSL_PRODUCT_NAME=\\\"$P_NAME\\\""
- SSL_VERSION="$SSL_VERSION -DSSL_PRODUCT_VERSION=\\\"$P_VER_STR\\\""
- fi
-
- #
- # determine object build type
- #
- case $modfile in
- *.so ) my_buildtype="DSO" ;;
- * ) my_buildtype="OBJ" ;;
- esac
- echo "$my_prefix SSL interface build type: $my_buildtype"
-
- #
- # determine SSL rules
- #
- if [ ".$APXS_MODE" = .YES ]; then
- my_rule_SSL_COMPAT=$SSL_COMPAT
- my_rule_SSL_SDBM=$SSL_SDBM
- my_rule_SSL_EXPERIMENTAL=$SSL_EXPERIMENTAL
- my_rule_SSL_CONSERVATIVE=$SSL_CONSERVATIVE
- my_rule_SSL_VENDOR=$SSL_VENDOR
- else
- my_rule_SSL_COMPAT=`$SH helpers/CutRule SSL_COMPAT $file`
- my_rule_SSL_SDBM=`$SH helpers/CutRule SSL_SDBM $file`
- my_rule_SSL_EXPERIMENTAL=`$SH helpers/CutRule SSL_EXPERIMENTAL $file`
- my_rule_SSL_CONSERVATIVE=`$SH helpers/CutRule SSL_CONSERVATIVE $file`
- my_rule_SSL_VENDOR=`$SH helpers/CutRule SSL_VENDOR $file`
- fi
-
- #
- # determine compatibility mode
- #
- if [ ".$my_rule_SSL_COMPAT" = .yes ]; then
- echo "$my_prefix SSL interface compatibility: enabled"
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_COMPAT"
- else
- echo "$my_prefix SSL interface compatibility: disabled"
- fi
-
- #
- # determine experimental mode
- #
- if [ ".$my_rule_SSL_EXPERIMENTAL" = .yes ]; then
- echo "$my_prefix SSL interface experimental code: enabled"
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_EXPERIMENTAL"
- else
- echo "$my_prefix SSL interface experimental code: disabled"
- fi
-
- #
- # determine conservative mode
- #
- if [ ".$my_rule_SSL_CONSERVATIVE" = .yes ]; then
- echo "$my_prefix SSL interface conservative code: enabled"
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_CONSERVATIVE"
- else
- echo "$my_prefix SSL interface conservative code: disabled"
- fi
-
- #
- # determine vendor mode
- #
- SSL_VENDOR_OBJS=''
- SSL_VENDOR_OBJS_PIC=''
- if [ ".$my_rule_SSL_VENDOR" = .yes ]; then
- echo "$my_prefix SSL interface vendor extensions: enabled"
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_VENDOR"
- my_src="`cd $my_dir && echo ssl_vendor*.c`"
- if [ ".$my_src" != . -a ".$my_src" != ".ssl_vendor*.c" ]; then
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_VENDOR_OBJS"
- SSL_VENDOR_OBJS="`echo $my_src | sed -e 's;\.c;.o;g'`"
- SSL_VENDOR_OBJS_PIC="`echo $my_src | sed -e 's;\.c;.lo;g'`"
- echo "$my_prefix SSL interface vendor objects: $SSL_VENDOR_OBJS"
- fi
- else
- echo "$my_prefix SSL interface vendor extensions: disabled"
- fi
-
- #
- # determine DBM support library
- # (src/Configure has DBM_LIB predefined for some platforms)
- #
- if [ ".$APXS_MODE" != .YES ]; then
- SSL_DBM_NAME=''
- # 1. check for predefined DBM lib
- if [ ".$DBM_LIB" != . ]; then
- LIBS_ORIG="$LIBS"
- LIBS="$LIBS $DBM_LIB"
- if $SH helpers/TestCompile func dbm_open; then
- SSL_DBM_NAME="Configured DBM ($DBM_LIB)"
- SSL_DBM_FLAG="$DBM_LIB"
- fi
- LIBS="$LIBS_ORIG"
- fi
- # 2. check for various vendor DBM libs
- if [ ".$SSL_DBM_NAME" = . ]; then
- if $SH helpers/TestCompile func dbm_open; then
- SSL_DBM_NAME='Vendor DBM (libc)'
- SSL_DBM_FLAG=''
- elif $SH helpers/TestCompile lib dbm dbm_open; then
- SSL_DBM_NAME='Vendor DBM (libdbm)'
- SSL_DBM_FLAG='-ldbm'
- elif $SH helpers/TestCompile lib ndbm dbm_open; then
- SSL_DBM_NAME='Vendor DBM (libndbm)'
- SSL_DBM_FLAG='-lndbm'
- fi
- fi
- # 3. let the SSL_SDBM rule override decisions
- if [ ".$my_rule_SSL_SDBM" = .yes ]; then
- # force us to fallback to SDBM
- SSL_DBM_NAME=''
- fi
- if [ ".$my_rule_SSL_SDBM" = .no ]; then
- # for us to never use SDBM, but be
- # careful when no DBM was found at all
- if [ ".$SSL_DBM_NAME" = . ]; then
- echo "Error: SDBM is needed, because no custom or vendor DBM library available!" 1>&2
- echo "Hint: Allow us to choose SDBM by changing the rule SSL_SDBM, please." 1>&2
- exit 1
- fi
- fi
- # 4. override decision on a few brain-dead platforms
- if [ ".$my_rule_SSL_SDBM" = .default ]; then
- case "$OS" in
- Linux )
- # force Linux boxes to use builtin SDBM per default because
- # of too much broken vendor DBM libraries on this platform
- SSL_DBM_NAME=''
- ;;
- esac
- fi
- # 5. finally configure the chosen DBM lib
- if [ ".$SSL_DBM_NAME" != . ]; then
- echo "$my_prefix SSL interface plugin: $SSL_DBM_NAME"
- my_dbm_already_used=`echo $LIBS | grep -- " $SSL_DBM_FLAG"`
- if [ ".$my_buildtype" = .OBJ -a ".$my_dbm_already_used" != . ]; then
- :
- else
- SSL_LIBS="$SSL_LIBS $SSL_DBM_FLAG"
- fi
- else
- echo "$my_prefix SSL interface plugin: Built-in SDBM"
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_USE_SDBM"
- fi
- fi
-
- #
- # determine SSL_BASE
- #
- if [ ".$SSL_BASE" = . ]; then
- SSL_BASE=`egrep '^SSL_BASE=' $file | tail -1 | awk -F= '{print $2}'`
- if [ ".$SSL_BASE" = . ]; then
- if [ -d /usr/local/ssl ]; then
- SSL_BASE="/usr/local/ssl"
- else
- SSL_BASE="SYSTEM"
- fi
- fi
- fi
- case $SSL_BASE in
- SYSTEM ) ;;
- /* ) ;;
- * ) SSL_BASE="`cd ../$SSL_BASE; pwd`" ;;
- esac
- if [ ".$SSL_BASE" = .SYSTEM ]; then
- echo "$my_prefix SSL library path: [SYSTEM]"
- else
- if [ ! -d "$SSL_BASE" ]; then
- echo "Error: Cannot find SSL installation in $SSL_BASE" 1>&2
- echo "Hint: Please provide us with the location of OpenSSL" 1>&2
- echo " via the environment variable SSL_BASE." 1>&2
- exit 1
- fi
- echo "$my_prefix SSL library path: $SSL_BASE"
- fi
-
- #
- # determine location of OpenSSL binaries
- # (we still search also for `ssleay' to allow us to
- # better complain about the actually installed version)
- #
- SSL_BINDIR=""
- if [ ".$SSL_BASE" = .SYSTEM ]; then
- for name in openssl ssleay; do
- for p in . `echo $PATH | sed -e 's/:/ /g'`; do
- if [ -f "$p/$name" ]; then
- SSL_PROGRAM="$p/$name"
- SSL_BINDIR="$p"
- break
- fi
- done
- if [ ".$SSL_BINDIR" != . ]; then
- break;
- fi
- done
- if [ ".$SSL_BINDIR" = . ]; then
- echo "Error: Cannot find SSL binaries in $PATH" 1>&2
- exit 1
- fi
- else
- for name in openssl ssleay; do
- if [ -f "$SSL_BASE/bin/$name" ]; then
- SSL_PROGRAM="$SSL_BASE/bin/$name"
- SSL_BINDIR='$(SSL_BASE)/bin'
- break;
- fi
- if [ -f "$SSL_BASE/apps/$name" ]; then
- SSL_PROGRAM="$SSL_BASE/apps/$name"
- SSL_BINDIR='$(SSL_BASE)/apps'
- break;
- fi
- done
- if [ ".$SSL_BINDIR" = . ]; then
- echo "Error: Cannot find SSL binaries under $SSL_BASE" 1>&2
- exit 1
- fi
- fi
-
- #
- # SSL version
- #
- SSL_VERSION_ID="`$SSL_PROGRAM version`"
- echo "$my_prefix SSL library version: $SSL_VERSION_ID"
- case $SSL_VERSION_ID in
- *0.[5678].*|*0.9.[012]* )
- echo "Error: OpenSSL VERSIONS BELOW 0.9.3 ARE NO LONGER SUPPORTED."
- echo "Hint: Use OpenSSL version 0.9.3 or higher!"
- exit 1
- ;;
- esac
-
- #
- # SSL engine support
- #
- case $SSL_VERSION_ID in
- *0.9.6*engine* | *0.9.6a*engine* | *0.9.[789]* )
- SSL_CFLAGS="$SSL_CFLAGS -DSSL_ENGINE"
- ;;
- esac
-
- #
- # determine location of OpenSSL headers
- #
- if [ ".$SSL_BASE" = .SYSTEM ]; then
- SSL_INCDIR=""
- for p in . /usr/include /usr/include/ssl/ /usr/local/include /usr/local/include/ssl; do
- if [ -f "$p/openssl/ssl.h" ]; then
- SSL_INCDIR="$p"
- break
- fi
- done
- if [ ".$SSL_INCDIR" = . ]; then
- echo "Error: Cannot find SSL header files in any of the following dirs:" 1>&2
- echo "Error: . /usr/include /usr/include/ssl/ /usr/local/include /usr/local/include/ssl" 1>&2
- exit 1
- fi
- else
- if [ -f "$SSL_BASE/include/openssl/ssl.h" ]; then
- SSL_INCDIR='$(SSL_BASE)/include'
- else
- echo "Error: Cannot find SSL header files under $SSL_BASE" 1>&2
- exit 1
- fi
- fi
- if [ ".$SSL_INCDIR" != "./usr/include" ]; then
- SSL_CFLAGS="$SSL_CFLAGS -I\$(SSL_INCDIR)"
- fi
-
- #
- # determine location of OpenSSL libraries
- #
- if [ ".$SSL_BASE" = .SYSTEM ]; then
- SSL_LIBDIR=""
- for p in . /lib /usr/lib /usr/local/lib; do
- if [ -f "$p/libssl.a" -o -f "$p/libssl.so" ]; then
- SSL_LIBDIR="$p"
- my_real_ssl_libdir="$p"
- break
- fi
- done
- if [ ".$SSL_LIBDIR" = . ]; then
- echo "Error: Cannot find SSL library files in any of the following dirs:" 1>&2
- echo "Error: . /lib /usr/lib /usr/local/lib" 1>&2
- exit 1
- fi
- else
- if [ -f "$SSL_BASE/libssl.a" -o -f "$SSL_BASE/libssl.so" ]; then
- SSL_LIBDIR='$(SSL_BASE)'
- my_real_ssl_libdir="$SSL_BASE"
- elif [ -f "$SSL_BASE/lib/libssl.a" -o -f "$SSL_BASE/lib/libssl.so" ]; then
- SSL_LIBDIR='$(SSL_BASE)/lib'
- my_real_ssl_libdir="$SSL_BASE/lib"
- else
- echo "Error: Cannot find SSL library files under $SSL_BASE" 1>&2
- exit 1
- fi
- fi
- SSL_LDFLAGS="$SSL_LDFLAGS -L\$(SSL_LIBDIR)"
- SSL_LIBS="$SSL_LIBS -lssl -lcrypto"
-
- #
- # SSL installation type
- #
- case $SSL_BINDIR in
- */apps ) my_type="source tree only" ;;
- * ) my_type="installed package" ;;
- esac
- case $SSL_BASE in
- SYSTEM ) my_note="(system-wide)" ;;
- * ) my_note="(stand-alone)" ;;
- esac
- echo "$my_prefix SSL library type: $my_type $my_note"
-
- #
- # Special GCC/DSO support
- #
- # Under some platforms where GCC is used we have to link the DSO
- # (libssl.so) explicitly against the GCC library (libgcc) to avoid
- # problems with missing symbols like __umoddi3, etc.
- #
- # Notice: When GCC is installed as "cc" we assume it's really
- # well incorporated into the system and no hack is
- # needed (like on FreeBSD, Linux, etc.)
- #
- if [ ".$my_buildtype" = .DSO ]; then
- my_CC=`echo "$CC" | sed -e 's/ .*//'`
- case $my_CC in
- gcc|*/gcc|egcs|*/egcs|egcc|*/egcc|pgcc|*/pgcc )
- gcclibdir="`$CC --print-libgcc-file-name | sed -e 's;/[^/]*$;;'`"
- SSL_LIBS="$SSL_LIBS -L$gcclibdir -lgcc"
- ;;
- esac
- fi
-
- #
- # adjust the Apache build environment
- #
- echo "SSL_BASE=$SSL_BASE" >>$my_outfile
- echo "SSL_BINDIR=$SSL_BINDIR" >>$my_outfile
- echo "SSL_INCDIR=$SSL_INCDIR" >>$my_outfile
- echo "SSL_LIBDIR=$SSL_LIBDIR" >>$my_outfile
- echo "SSL_PROGRAM=$SSL_PROGRAM" >>$my_outfile
- echo "SSL_VERSION=$SSL_VERSION" >>$my_outfile
- echo "SSL_CFLAGS=$SSL_CFLAGS" >>$my_outfile
- echo "SSL_VENDOR_OBJS=$SSL_VENDOR_OBJS" >>$my_outfile
- echo "SSL_VENDOR_OBJS_PIC=$SSL_VENDOR_OBJS_PIC" >>$my_outfile
- if [ ".$my_buildtype" = .DSO ]; then
- # under DSO we link ourself
- echo "SSL_LIBS=$SSL_LIBS" >>$my_outfile
- echo "SSL_LDFLAGS=$SSL_LDFLAGS" >>$my_outfile
- else
- # else we are linked with httpd
- LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
- LIBS="$LIBS $SSL_LIBS"
- fi
- CFLAGS="$CFLAGS -DMOD_SSL=$A_VER_HEX"
- if [ ".$P_ID" != . ]; then
- CFLAGS="$CFLAGS -DSSL_PRODUCT=$P_VER_HEX"
- fi
- RULE_EAPI=yes
-
-ConfigEnd
-