home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-01-02 | 46.5 KB | 1,323 lines |
- #!/bin/sh
- ## ====================================================================
- ## Copyright (c) 1998-1999 The Apache Group. 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. All advertising materials mentioning features or use of this
- ## software must display the following acknowledgment:
- ## "This product includes software developed by the Apache Group
- ## for use in the Apache HTTP server project (http://www.apache.org/)."
- ##
- ## 4. The names "Apache Server" and "Apache Group" 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 names without prior written
- ## permission of the Apache Group.
- ##
- ## 6. Redistributions of any form whatsoever must retain the following
- ## acknowledgment:
- ## "This product includes software developed by the Apache Group
- ## for use in the Apache HTTP server project (http://www.apache.org/)."
- ##
- ## THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``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 GROUP 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.
- ## ====================================================================
- ##
- ## This software consists of voluntary contributions made by many
- ## individuals on behalf of the Apache Group and was originally based
- ## on public domain software written at the National Center for
- ## Supercomputing Applications, University of Illinois, Urbana-Champaign.
- ## For more information on the Apache Group and the Apache HTTP server
- ## project, please see <http://www.apache.org/>.
- ##
-
- ##
- ## configure -- Apache Autoconf-style Interface (APACI)
- ##
- ## Initially written by Ralf S. Engelschall <rse@apache.org>
- ##
-
- # default input separator chars: <space><tab><cr>
- DIFS='
- '
-
- ##
- ## the paths to the Apache source tree
- ##
- top=.
- mkf=Makefile
- src=src
- aux=src/helpers
- sedsubst=src/.apaci.sedsubst
- addconf=src/.apaci.addconf
- tplconf=src/.apaci.tplconf
- pldconf=src/.apaci.pldconf
- configlayout=config.layout
- configstatus=config.status
- shadow=''
-
- ##
- ## pre-determine runtime modes
- ##
- help=no
- quiet=no
- verbose=no
- case "$*" in
- --help|*--help|*--help* ) help=yes; quiet=yes ;;
- --quiet|*--quiet|*--quiet* ) quiet=yes ;;
- --verbose|*--verbose|*--verbose*|-v|*-v|*-v* ) verbose=yes ;;
- * ) ;;
- esac
-
- ##
- ## display version information
- ##
- if [ ".$quiet" = .no ]; then
- APV=`cat $src/include/httpd.h |\
- grep "#define SERVER_BASEVERSION" |\
- sed -e 's/^[^"]*"//' -e 's/".*$//' -e 's/^Apache\///'`
- echo "Configuring for Apache, Version $APV"
- fi
-
- ##
- ## important hint for the first-time users
- ##
- if [ $# -eq 0 ]; then
- echo " + Warning: Configuring Apache with default settings."
- echo " + This is probably not what you really want."
- echo " + Please read the README.configure and INSTALL files"
- echo " + first or at least run '$0 --help' for"
- echo " + a compact summary of available options."
- fi
-
- ##
- ## determine path to (optional) Perl interpreter
- ##
- PERL=no-perl-on-this-system
- perlpath="`$aux/PrintPath perl5 perl miniperl`"
- if [ ".$perlpath" != . ]; then
- PERL="$perlpath"
- fi
-
- ##
- ## look for deadly broken echo commands which interpret escape
- ## sequences `\XX' *per default*. For those we first try the -E option
- ## and if it then is still broken we give a warning message.
- ## If it works set the `Safe Echo Option' (SEO) variable.
- ##
- SEO='' # CHANGE THIS VARIABLE HERE IF YOU HAVE PROBLEMS WITH ECHO!
- bytes=`echo $SEO '\1' | wc -c | awk '{ printf("%s", $1); }'`
- if [ ".$bytes" != .3 ]; then
- bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'`
- if [ ".$bytes" != .3 ]; then
- echo " + Warning: Your 'echo' command is slightly broken."
- echo " + It interprets escape sequences per default. We already"
- echo " + tried 'echo -E' but had no real success. If errors occur"
- echo " + please set the SEO variable in 'configure' manually to"
- echo " + the required 'echo' options, i.e. those which force your"
- echo " + 'echo' to not interpret escape sequences per default."
- else
- SEO='-E'
- fi
- fi
-
- ##
- ## look for the best Awk we can find because some
- ## standard Awks are really braindead and cause
- ## problems for our scripts under some platforms.
- ##
- AWK=awk
- awkpath="`$aux/PrintPath nawk gawk awk`"
- if [ ".$awkpath" != . ]; then
- AWK="$awkpath"
- fi
-
- ##
- ## determine default parameters
- ##
-
- # default paths
- prefix=UNSET
-
- # layout configuration
- with_layout=0
- show_layout=0
-
- # suexec defaults
- suexec=0
- suexec_ok=0
- suexec_docroot='$datadir/htdocs'
- suexec_logexec='$logfiledir/suexec_log'
- suexec_caller=www
- suexec_userdir=public_html
- suexec_uidmin=100
- suexec_gidmin=100
- suexec_safepath="/usr/local/bin:/usr/bin:/bin"
-
- # various other flags
- support=1
- confadjust=1
- permute=''
-
- # determine rules
- rules=''
- rulelist=''
- OIFS="$IFS" IFS='
- '
- for rule in `grep '^Rule' $src/Configuration.tmpl`; do
- rule=`echo "$rule" | sed -e 's/^Rule[ ]*//'`
- name=`echo "$rule" | sed -e 's/=.*$//'`
- namelow=`echo "$name" | tr 'A-Z' 'a-z'`
- arg=`echo "$rule" | sed -e 's/^.*=//'`
- eval "rule_$namelow=$arg"
- rules="$rules:$namelow"
- rulelist="$rulelist:$name=$arg"
- done
- IFS="$OIFS"
- rules=`echo $rules | sed -e 's/^://'`
-
- # determine modules
- modules=''
- modulelist=''
- OIFS="$IFS" IFS='
- '
- for module in `egrep '^[# ]*(Add|Shared)Module' $src/Configuration.tmpl`; do
- add=yes
- share=no
- if [ ".`echo $module | grep '^#'`" != . ]; then
- add=no
- fi
- if [ ".`echo $module | grep 'SharedModule'`" != . ]; then
- share=yes
- fi
- module=`echo "$module" |\
- sed -e 's%^.*/\(.*\)$%\1%' \
- -e 's/\.[oa]$//' \
- -e 's/\.module$//' \
- -e 's/^mod_//' \
- -e 's/^lib//'`
- eval "module_$module=$add"
- eval "shared_$module=$share"
- modules="${modules}:$module"
- modulelist="${modulelist}:$module=$add"
- if [ ".$share" = .yes ]; then
- modulelist="${modulelist}*"
- fi
- done
- IFS="$OIFS"
- modules=`echo $modules | sed -e 's/^://'`
-
- # backward compatibility for old src/Configuration.tmpl
- # parameter names to the canonical Autoconf-style shell
- # variable names.
- OIFS="$IFS" IFS="$DIFS"
- for var in CFLAGS LDFLAGS LIBS INCLUDES DEPS; do
- eval "val=\$EXTRA_$var"
- if [ ".$val" != . ]; then
- eval "$var=\$val"
- eval "EXTRA_$var=\"\"; export EXTRA_$var"
- echo " + Hint: please use $var instead of EXTRA_$var next time"
- fi
- done
- IFS="$OIFS"
-
- ##
- ## support for the default layout
- ##
- case "$*" in
- *--with-layout=* )
- ;;
- * )
- if [ ".$*" = . ]; then
- set -- '--with-layout=Apache'
- else
- set -- '--with-layout=Apache' "$@"
- fi
- ;;
- esac
-
- ##
- ## Iterate over the command line options the first time.
- ##
- ## This time we pre-process options which need high priority
- ## on the command line independent of their position, so they
- ## can be overridden by others.
- ##
- apc_prev=''
- OIFS1="$IFS" IFS="$DIFS"
- for apc_option
- do
- # if previous option needs an argument, assign it.
- if [ ".$apc_prev" != . ]; then
- eval "$apc_prev=\$apc_option"
- apc_prev=""
- continue
- fi
- # split out arguments
- case "$apc_option" in
- -*=*) apc_optarg=`echo "$apc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) apc_optarg= ;;
- esac
- # pre-process only a few options now
- case "$apc_option" in
- --help | -h | -help )
- echo "Usage: configure [options]"
- echo "Options: [defaults in brackets after descriptions]"
- echo "General options:"
- echo " --quiet, --silent do not print messages"
- echo " --verbose, -v print even more messages"
- echo " --shadow[=DIR] switch to a shadow tree (under DIR) for building"
- echo ""
- echo "Stand-alone options:"
- echo " --help, -h print this message"
- echo " --show-layout print installation path layout (check and debug)"
- echo ""
- echo "Installation layout options:"
- echo " --with-layout=[F:]ID use installation path layout ID (from file F)"
- echo " --target=TARGET install name-associated files using basename TARGET"
- echo " --prefix=PREFIX install architecture-independent files in PREFIX"
- echo " --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX"
- echo " --bindir=DIR install user executables in DIR"
- echo " --sbindir=DIR install sysadmin executables in DIR"
- echo " --libexecdir=DIR install program executables in DIR"
- echo " --mandir=DIR install manual pages in DIR"
- echo " --sysconfdir=DIR install configuration files in DIR"
- echo " --datadir=DIR install read-only data files in DIR"
- echo " --includedir=DIR install includes files in DIR"
- echo " --localstatedir=DIR install modifiable data files in DIR"
- echo " --runtimedir=DIR install runtime data in DIR"
- echo " --logfiledir=DIR install logfile data in DIR"
- echo " --proxycachedir=DIR install proxy cache data in DIR"
- echo ""
- echo "Configuration options:"
- echo " --enable-rule=NAME enable a particular Rule named 'NAME'"
- echo " --disable-rule=NAME disable a particular Rule named 'NAME'"
- $aux/ppl.sh $rulelist
- echo " --add-module=FILE on-the-fly copy & activate a 3rd-party Module"
- echo " --activate-module=FILE on-the-fly activate existing 3rd-party Module"
- echo " --permute-module=N1:N2 on-the-fly permute module 'N1' with module 'N2'"
- echo " --enable-module=NAME enable a particular Module named 'NAME'"
- echo " --disable-module=NAME disable a particular Module named 'NAME'"
- $aux/ppl.sh $modulelist
- echo " --enable-shared=NAME enable build of Module named 'NAME' as a DSO"
- echo " --disable-shared=NAME disable build of Module named 'NAME' as a DSO"
- echo " --with-perl=FILE path to the optional Perl interpreter"
- echo " --without-support disable the build and installation of support tools"
- echo " --without-confadjust disable the user/situation adjustments in config"
- echo ""
- echo "suEXEC options:"
- echo " --enable-suexec enable the suEXEC feature"
- echo " --suexec-caller=NAME set the suEXEC username of the allowed caller [$suexec_caller]"
- echo " --suexec-docroot=DIR set the suEXEC root directory [PREFIX/share/htdocs]"
- echo " --suexec-logfile=FILE set the suEXEC logfile [PREFIX/var/log/suexec_log]"
- echo " --suexec-userdir=DIR set the suEXEC user subdirectory [$suexec_userdir]"
- echo " --suexec-uidmin=UID set the suEXEC minimal allowed UID [$suexec_uidmin]"
- echo " --suexec-gidmin=GID set the suEXEC minimal allowed GID [$suexec_gidmin]"
- echo " --suexec-safepath=PATH set the suEXEC safe PATH [$suexec_safepath]"
- echo ""
- echo "Deprecated options:"
- echo " --layout backward compat only: use --show-layout"
- echo " --compat backward compat only: use --with-layout=Apache"
- exit 0
- ;;
- --with-layout=*|--compat)
- if [ ".$apc_option" = ".--compat" ]; then
- apc_optarg="Apache"
- fi
- case $apc_optarg in
- *:* )
- file=`echo $apc_optarg | sed -e 's/:.*//'`
- name=`echo $apc_optarg | sed -e 's/.*://'`
- ;;
- * )
- name=$apc_optarg
- file=$configlayout
- ;;
- esac
- if [ ! -f "$file" ]; then
- echo "configure:Error: Path layout definition file $file not found" 1>&2
- exit 1
- fi
- sed -e "1,/[ ]*<[Ll]ayout[ ]*$name[ ]*>[ ]*/d" \
- -e '/[ ]*<\/Layout>[ ]*/,$d' \
- -e "s/^[ ]*//g" \
- -e "s/:[ ]*/=\'/g" \
- -e "s/[ ]*$/'/g" \
- $file >$pldconf
- . $pldconf
- OIFS="$IFS" IFS="$DIFS"
- for var in prefix exec_prefix bindir sbindir libexecdir mandir \
- sysconfdir datadir includedir localstatedir runtimedir \
- logfiledir proxycachedir; do
- eval "val=\"\$$var\""
- case $val in
- *+ )
- val=`echo $val | sed -e 's;\+$;;'`
- eval "$var=\"\$val\""
- eval "autosuffix_$var=yes"
- ;;
- * )
- eval "autosuffix_$var=no"
- ;;
- esac
- done
- IFS="$OIFS"
- rm -f $pldconf 2>/dev/null
- if [ ".$prefix" = .UNSET ]; then
- echo "configure:Error: Path layout definition not found or incorrect" 1>&2
- exit 1
- fi
- if [ ".$quiet" = .no ]; then
- echo " + using installation path layout: $name ($file)"
- fi
- with_layout=1
- ;;
- *)
- ;;
- esac
- done
-
- ##
- ## Iterate over the command line options the second time.
- ##
- ## This time we parse the standard options.
- ##
- addconf_created=0
- apc_prev=''
- OIFS1="$IFS" IFS="$DIFS"
- for apc_option
- do
- # if previous option needs an argument, assign it.
- if [ ".$apc_prev" != . ]; then
- eval "$apc_prev=\$apc_option"
- apc_prev=""
- continue
- fi
- # split out arguments
- case "$apc_option" in
- -*=*) apc_optarg=`echo "$apc_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) apc_optarg= ;;
- esac
- # accept only the most important GNU Autoconf-style options
- case "$apc_option" in
- --help|-h|-help|--with-layout=*|-compat)
- # just ignore already parsed options
- ;;
- --quiet | --silent)
- quiet=yes
- ;;
- --verbose | -v)
- verbose=yes
- ;;
- --shadow*)
- # if we use an external shadow tree, first shadow all of ourself
- # to this tree and switch over to to it for internal (=platform)
- # shadowing...
- case "$apc_option" in
- --shadow=*)
- shadow="$apc_optarg"
- if [ .$quiet = .no ]; then
- echo " + creating external package shadow tree ($shadow)"
- fi
- rm -rf $shadow 2>/dev/null
- $aux/mkshadow.sh . $shadow
- for file in $mkf $sedsubst $addconf $tplconf $pldconf $configstatus; do
- rm -f $shadow/$file 2>/dev/null
- done
- if [ .$quiet = .no ]; then
- echo " + switching to external package shadow tree ($shadow)"
- fi
- cd $shadow
- ;;
- esac
- # determine GNU platform triple
- gnutriple=`$aux/GuessOS | sed -e 's:/:-:g' | $AWK '{ printf("%s",$1); }'`
- # create Makefile wrapper (the first time only)
- if [ ".`ls $top/src.* 2>/dev/null`" = . ]; then
- if [ .$quiet = .no ]; then
- echo " + creating Makefile (shadow wrapper)"
- fi
- echo "##" > Makefile
- echo "## Apache Makefile (shadow wrapper)" >> Makefile
- echo "##" >> Makefile
- echo "" >> Makefile
- if [ ".$shadow" != . ]; then
- echo "SHADOW=$shadow" >> Makefile
- else
- echo "SHADOW=." >> Makefile
- fi
- echo "GNUTRIPLE=\`$aux/GuessOS | sed -e 's:/:-:g' | $AWK '{ printf(\"%s\",\$\$1); }'\`" >> Makefile
- echo "" >> Makefile
- echo "all build install install-quiet clean distclean:" >> Makefile
- echo " @cd \$(SHADOW); \$(MAKE) -f Makefile.\$(GNUTRIPLE) \$(MFLAGS) \$@" >> Makefile
- echo "" >> Makefile
- fi
- # set shadow paths
- shadowmkf="Makefile.$gnutriple"
- shadowsrc="src.$gnutriple"
- shadowaux="src.$gnutriple/helpers"
- shadowsedsubst="src.$gnutriple/.apaci.sedsubst"
- shadowaddconf="src.$gnutriple/.apaci.addconf"
- shadowtplconf="src.$gnutriple/.apaci.tplconf"
- # (re)create shadow tree
- if [ .$quiet = .no ]; then
- echo " + creating internal platform shadow tree ($shadowsrc)"
- fi
- rm -rf $shadowsrc
- $aux/mkshadow.sh $src $shadowsrc
- # delegate us to the shadow paths
- mkf=$shadowmkf
- src=$shadowsrc
- aux=$shadowaux
- sedsubst=$shadowsedsubst
- addconf=$shadowaddconf
- tplconf=$shadowtplconf
- ;;
- --show-layout|--layout)
- show_layout=1
- ;;
- --target=*)
- TARGET="$apc_optarg"
- ;;
- --prefix=*)
- prefix="$apc_optarg"
- autosuffix_prefix=no
- ;;
- --exec-prefix=*)
- exec_prefix="$apc_optarg"
- autosuffix_exec_prefix=no
- ;;
- --bindir=*)
- bindir="$apc_optarg"
- autosuffix_bindir=no
- ;;
- --sbindir=*)
- sbindir="$apc_optarg"
- autosuffix_sbindir=no
- ;;
- --libexecdir=*)
- libexecdir="$apc_optarg"
- autosuffix_libexecdir=no
- ;;
- --mandir=*)
- mandir="$apc_optarg"
- autosuffix_mandir=no
- ;;
- --sysconfdir=*)
- sysconfdir="$apc_optarg"
- autosuffix_sysconfdir=no
- ;;
- --datadir=*)
- datadir="$apc_optarg"
- autosuffix_datadir=no
- ;;
- --includedir=*)
- includedir="$apc_optarg"
- autosuffix_includedir=no
- ;;
- --localstatedir=*)
- localstatedir="$apc_optarg"
- autosuffix_localstatedir=no
- ;;
- --runtimedir=*)
- runtimedir="$apc_optarg"
- autosuffix_runtimedir=no
- ;;
- --logfiledir=*)
- logfiledir="$apc_optarg"
- autosuffix_logfiledir=no
- ;;
- --proxycachedir=*)
- proxycachedir="$apc_optarg"
- autosuffix_proxycachedir=no
- ;;
- --add-module=*)
- file="$apc_optarg"
- if [ ".`echo $file | egrep '/?mod_[a-zA-Z0-9][a-zA-Z0-9_]*\.c$'`" = . ]; then
- echo "configure:Error: Module filename doesn't match '/?mod_[a-zA-Z0-9][a-zA-Z0-9_]*\.c'" 1>&2
- exit 1
- fi
- if [ ! -f $file ]; then
- echo "configure:Error: Module source $file not found" 1>&2
- exit 1
- fi
- modfilec=`echo $file | sed -e 's;^.*/;;'`
- modfileo=`echo $file | sed -e 's;^.*/;;' -e 's;\.c$;.o;'`
- if [ ".$file" != ".$src/modules/extra/$modfilec" ]; then
- cp $file $src/modules/extra/$modfilec
- fi
- if [ ".$addconf_created" = .0 ]; then
- addconf_created=1
- rm -f $addconf 2>/dev/null
- touch $addconf 2>/dev/null
- fi
- echo "" >>$addconf
- echo "## On-the-fly added module" >>$addconf
- echo "## (configure --add-module=$file)" >>$addconf
- echo "AddModule modules/extra/$modfileo" >>$addconf
- module=`echo "$modfileo" |\
- sed -e 's%^.*/\(.*\)$%\1%' \
- -e 's/\.[^.]*$//' \
- -e 's/^mod_//' \
- -e 's/^lib//'`
- eval "module_$module=yes"
- eval "shared_$module=no"
- modules="${modules}:$module"
- modulelist="${modulelist}:$module=yes"
- if [ ".$quiet" = .no ]; then
- echo " + on-the-fly added and activated $module module (modules/extra/$modfileo)"
- fi
- ;;
- --activate-module=*)
- file="$apc_optarg"
- case $file in
- src/modules/* ) ;;
- *) echo "configure:Error: Module source already has to stay below src/modules/ to be activated" 1>&2
- exit 1
- ;;
- esac
- modfile=`echo $file | sed -e 's;^src/;;'`
- if [ ".$addconf_created" = .0 ]; then
- addconf_created=1
- rm -f $addconf 2>/dev/null
- touch $addconf 2>/dev/null
- fi
- echo "" >>$addconf
- echo "## On-the-fly activated module" >>$addconf
- echo "## (configure --activate-module=$file)" >>$addconf
- echo "AddModule $modfile" >>$addconf
- module=`echo "$modfile" |\
- sed -e 's%^.*/\(.*\)$%\1%' \
- -e 's/\.[^.]*$//' \
- -e 's/^mod_//' \
- -e 's/^lib//'`
- eval "module_$module=yes"
- eval "shared_$module=no"
- modules="${modules}:$module"
- modulelist="${modulelist}:$module=yes"
- if [ ".$quiet" = .no ]; then
- echo " + activated $module module ($modfile)"
- fi
- ;;
- --enable-*)
- apc_feature=`echo $apc_option | sed -e 's/-*enable-//' -e 's/=.*//'`
- apc_feature=`echo $apc_feature | sed 's/-/_/g'`
- case "$apc_option" in
- *=*) ;;
- *) apc_optarg=yes ;;
- esac
- case "$apc_feature" in
- rule )
- apc_optarg=`echo "$apc_optarg" | tr "A-Z" "a-z"`
- apc_optarg_real=`echo "$apc_optarg" | tr "a-z" "A-Z"`
- eval "exists=\$rule_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such rule named '${apc_optarg_real}'" 1>&2
- exit 1
- fi
- eval "rule_${apc_optarg}=yes"
- ;;
- module )
- case $apc_optarg in
- all )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "module_${module}=yes"
- done
- IFS="$OIFS"
- ;;
- most )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "module_${module}=yes"
- done
- IFS="$OIFS"
- module_auth_db=no # not all platforms have -ldb
- module_mmap_static=no # not all platforms have mmap()
- module_so=no # not all platforms have dlopen()
- module_example=no # only for developers
- module_log_agent=no # deprecated
- module_log_referer=no # deprecated
- ;;
- * )
- eval "exists=\$module_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such module named '${apc_optarg}'" 1>&2
- exit 1
- fi
- eval "module_${apc_optarg}=yes"
- ;;
- esac
- ;;
- shared )
- case $apc_optarg in
- max )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "shared_${module}=yes"
- done
- IFS="$OIFS"
- shared_so=no # because of bootstrapping
- ;;
- remain )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "add=\$module_${module}"
- if [ ".$add" = .no ]; then
- eval "module_${module}=yes"
- eval "shared_${module}=yes"
- fi
- done
- IFS="$OIFS"
- shared_so=no
- ;;
- * )
- eval "exists=\$module_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such module named '${apc_optarg}'" 1>&2
- exit 1
- fi
- eval "shared_${apc_optarg}=yes"
- ;;
- esac
- ;;
- suexec )
- suexec=1
- ;;
- esac
- ;;
- --disable-*)
- apc_feature=`echo $apc_option | sed -e 's/-*disable-//' -e 's/=.*//'`
- apc_feature=`echo $apc_feature| sed 's/-/_/g'`
- case "$apc_option" in
- *=*) ;;
- *) apc_optarg=yes ;;
- esac
- case "$apc_feature" in
- rule )
- apc_optarg=`echo "$apc_optarg" | tr "A-Z" "a-z"`
- apc_optarg_real=`echo "$apc_optarg" | tr "a-z" "A-Z"`
- eval "exists=\$rule_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such rule named '${apc_optarg_real}'" 1>&2
- exit 1
- fi
- eval "rule_${apc_optarg}=no"
- ;;
- module )
- case $apc_optarg in
- all )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "module_${module}=no"
- done
- IFS="$OIFS"
- ;;
- * )
- eval "exists=\$module_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such module named '${apc_optarg}'" 1>&2
- exit 1
- fi
- eval "module_${apc_optarg}=no"
- ;;
- esac
- ;;
- shared )
- case $apc_optarg in
- all )
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "shared_${module}=no"
- done
- IFS="$OIFS"
- ;;
- * )
- eval "exists=\$module_${apc_optarg}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such module named '${apc_optarg}'" 1>&2
- exit 1
- fi
- eval "shared_${apc_optarg}=no"
- ;;
- esac
- ;;
- esac
- ;;
- --permute-module=*:*)
- mod1=`echo $apc_optarg | sed -e 's/:.*//'`
- mod2=`echo $apc_optarg | sed -e 's/.*://'`
- for mod in $mod1 $mod2; do
- case $mod in
- BEGIN|END)
- ;;
- *) eval "exists=\$module_${mod}"
- if [ ".$exists" = . ]; then
- echo "configure:Error: No such module named '${mod}'" 1>&2
- exit 1
- fi
- ;;
- esac
- done
- case $mod1:$mod2 in
- BEGIN:END|*:BEGIN|END:*)
- echo "configure:Error: Invalid combination of pseudo module identifiers" 1>&2
- exit 1
- ;;
- esac
- permute="${permute},${mod1}:${mod2}"
- ;;
- --with-perl=*)
- PERL="$apc_optarg"
- ;;
- --without-support)
- support=0
- ;;
- --without-confadjust)
- confadjust=0
- ;;
- --suexec-caller=*)
- suexec_caller="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-docroot=*)
- suexec_docroot="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-logfile=*)
- suexec_logexec="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-userdir=*)
- suexec_userdir="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-uidmin=*)
- suexec_uidmin="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-gidmin=*)
- suexec_gidmin="$apc_optarg"
- suexec_ok=1
- ;;
- --suexec-safepath=*)
- suexec_safepath="$apc_optarg"
- suexec_ok=1
- ;;
- * )
- echo "configure:Error: invalid option '$apc_option'" 1>&2
- exit 1
- ;;
- esac
- done
- IFS="$OIFS1"
- if [ ".$apc_prev" != . ]; then
- echo "configure:Error: missing argument to --`echo $apc_prev | sed 's/_/-/g'`" 1>&2
- exit 1
- fi
- if [ ".$addconf_created" = .0 ]; then
- rm -f $addconf 2>/dev/null
- touch $addconf 2>/dev/null
- fi
-
- ##
- ## create a config status script for restoring
- ## the configuration via a simple shell script
- ##
- rm -f $configstatus 2>/dev/null
- echo "#!/bin/sh" >$configstatus
- echo "##" >>$configstatus
- echo "## $configstatus -- APACI auto-generated configuration restore script" >>$configstatus
- echo "##" >>$configstatus
- echo "## Use this shell script to re-run the APACI configure script for" >>$configstatus
- echo "## restoring your configuration. Additional parameters can be supplied." >>$configstatus
- echo "##" >>$configstatus
- echo "" >>$configstatus
- for var in CC CPP OPTIM CFLAGS CFLAGS_SHLIB LDFLAGS LD_SHLIB LDFLAGS_SHLIB \
- LDFLAGS_SHLIB_EXPORT LIBS INCLUDES RANLIB DEPS TARGET; do
- eval "val=\"\$$var\""
- if [ ".$val" != . ]; then
- echo "$var=$val" |\
- sed -e 's:\(["$\\]\):\\\1:g' \
- -e 's:\([A-Z]*=\):\1":' \
- -e 's:$:" \\:' >>$configstatus
- fi
- done
- echo $SEO "./configure \\" >>$configstatus
- for arg
- do
- echo "$arg" |\
- sed -e 's:\(["$\\]\):\\\1:g' \
- -e 's:^:":' \
- -e 's:$:" \\:' >>$configstatus
- done
- echo '"$@"' >>$configstatus
- echo '' >>$configstatus
- chmod a+x $configstatus
-
- ##
- ## a few errors and warnings
- ##
- if [ ".$suexec" = .1 ]; then
- if [ ".$suexec_ok" = .0 ]; then
- echo "configure:Error: You enabled the suEXEC feature via --enable-suexec but"
- echo " without explicitly configuring it via at least one"
- echo " --suexec-xxxxx option. Seems like you are still not"
- echo " familiar with the suEXEC risks. Please read the INSTALL"
- echo " and htdocs/manual/suexec.html documents first."
- exit 1
- fi
- if [ ".`id | grep root`" = . ]; then
- echo " + Warning: You enabled the suEXEC feature. Be aware that you need" 1>&2
- echo " + root privileges for this, at the latest at the installation step." 1>&2
- fi
- fi
- if [ ".$PERL" = .no-perl-on-this-system ]; then
- if [ .$quiet = .no ]; then
- echo " + Warning: no Perl interpreter available for support scripts."
- echo " + Perhaps you have to select one with --with-perl=FILE."
- fi
- fi
-
- ##
- ## target name
- ##
- if [ ".$TARGET" != . ]; then
- thetarget=$TARGET
- else
- thetarget=httpd
- fi
-
- ##
- ## expand path variables and make sure
- ## they do not end with a backslash
- ##
- OIFS="$IFS" IFS="$DIFS"
- for var in prefix exec_prefix bindir sbindir libexecdir mandir \
- sysconfdir datadir includedir localstatedir runtimedir \
- logfiledir proxycachedir suexec_docroot suexec_logexec; do
- eval "val=\"\$$var\"";
- val=`echo $val | sed -e 's:/*$::'`
- eval "$var=\"$val\""
- # expand value
- eval "val=\$$var"
- # add target suffix when requested
- if [ ".`echo $val | grep $thetarget`" = . ]; then
- eval "autosuffix=\$autosuffix_$var"
- if [ ".$autosuffix" = .yes ]; then
- eval "$var=\"\$$var/$thetarget\""
- fi
- fi
- done
- IFS="$OIFS"
-
- ##
- ## determine special configurable Makefile targets
- ##
- if [ ".$support" = .1 ]; then
- build_support='build-support'
- install_support='install-support'
- clean_support='clean-support'
- distclean_support='distclean-support'
- else
- build_support=''
- install_support=''
- clean_support=''
- distclean_support=''
- fi
-
- ##
- ## determine special configuration parameters
- ##
- conf_group="#-1"
- conf_port="80"
- conf_serveradmin="you@your.address"
- conf_servername="new.host.name"
- if [ ".$confadjust" = .1 ]; then
- if [ ".`egrep '^nobody:' /etc/group`" != . ]; then
- conf_group="nobody"
- else
- if [ ".`egrep '^nogroup:' /etc/group`" != . ]; then
- conf_group="nogroup"
- fi
- fi
- if [ ".`id | grep root`" = . ]; then
- conf_port="8080"
- fi
- conf_serveradmin="`$aux/buildinfo.sh -n %u@%h%d`"
- conf_servername="`$aux/buildinfo.sh -n %h%d`"
- fi
-
- ##
- ## determine prefix-relative paths for directories
- ## because Apache supports them for the -d and -f
- ## options, the LoadModule directive, etc.
- ##
- ## [we have to make sure that it ends with a slash
- ## or we cannot support the case where the relative
- ## path is just the emtpy one, i.e. ""]
- ##
- runtimedir_relative=`echo $runtimedir | sed -e "s:^$prefix/*::" -e 's:\(.\)$:\1/:'`
- logfiledir_relative=`echo $logfiledir | sed -e "s:^$prefix/*::" -e 's:\(.\)$:\1/:'`
- sysconfdir_relative=`echo $sysconfdir | sed -e "s:^$prefix/*::" -e 's:\(.\)$:\1/:'`
- libexecdir_relative=`echo $libexecdir | sed -e "s:^$prefix/*::" -e 's:\(.\)$:\1/:'`
-
- ##
- ## check and debug
- ##
- if [ ".$show_layout" = .1 ]; then
- echo ""
- echo "Installation paths:"
- echo " prefix: $prefix"
- echo " exec_prefix: $exec_prefix"
- echo " bindir: $bindir"
- echo " sbindir: $sbindir"
- echo " libexecdir: $libexecdir"
- echo " mandir: $mandir"
- echo " sysconfdir: $sysconfdir"
- echo " datadir: $datadir"
- echo " includedir: $includedir"
- echo " localstatedir: $localstatedir"
- echo " runtimedir: $runtimedir"
- echo " logfiledir: $logfiledir"
- echo " proxycachedir: $proxycachedir"
- echo ""
- echo "Compilation paths:"
- echo " HTTPD_ROOT: $prefix"
- echo " SHARED_CORE_DIR: $libexecdir"
- echo " DEFAULT_PIDLOG: ${runtimedir_relative}${thetarget}.pid"
- echo " DEFAULT_SCOREBOARD: ${runtimedir_relative}${thetarget}.scoreboard"
- echo " DEFAULT_LOCKFILE: ${runtimedir_relative}${thetarget}.lock"
- echo " DEFAULT_XFERLOG: ${logfiledir_relative}access_log"
- echo " DEFAULT_ERRORLOG: ${logfiledir_relative}error_log"
- echo " TYPES_CONFIG_FILE: ${sysconfdir_relative}mime.types"
- echo " SERVER_CONFIG_FILE: ${sysconfdir_relative}${thetarget}.conf"
- echo " ACCESS_CONFIG_FILE: ${sysconfdir_relative}access.conf"
- echo " RESOURCE_CONFIG_FILE: ${sysconfdir_relative}srm.conf"
- echo ""
- if [ ".$suexec" = .1 ]; then
- echo "suEXEC setup:"
- echo " suexec binary: $sbindir/suexec"
- echo " document root: $suexec_docroot"
- echo " userdir suffix: $suexec_userdir"
- echo " logfile: $suexec_logexec"
- echo " safe path: $suexec_safepath"
- echo " caller ID: $suexec_caller"
- echo " minimum user ID: $suexec_uidmin"
- echo " minimum group ID: $suexec_gidmin"
- echo ""
- fi
- exit 0
- fi
-
- ##
- ## create Makefile from Makefile.tmpl
- ##
- if [ .$quiet = .no ]; then
- echo "Creating $mkf"
- fi
- sed <Makefile.tmpl >$mkf \
- -e "s%@PERL@%$PERL%g" \
- -e "s%@SRC@%$src%g" \
- -e "s%@MKF@%$mkf%g" \
- -e "s%@AUX@%$aux%g" \
- -e "s%@TARGET@%$thetarget%g" \
- -e "s%@prefix@%$prefix%g" \
- -e "s%@exec_prefix@%$exec_prefix%g" \
- -e "s%@bindir@%$bindir%g" \
- -e "s%@sbindir@%$sbindir%g" \
- -e "s%@libexecdir@%$libexecdir%g" \
- -e "s%@libexecdir_relative@%$libexecdir_relative%g" \
- -e "s%@mandir@%$mandir%g" \
- -e "s%@sysconfdir@%$sysconfdir%g" \
- -e "s%@datadir@%$datadir%g" \
- -e "s%@localstatedir@%$localstatedir%g" \
- -e "s%@includedir@%$includedir%g" \
- -e "s%@runtimedir@%$runtimedir%g" \
- -e "s%@logfiledir@%$logfiledir%g" \
- -e "s%@proxycachedir@%$proxycachedir%g" \
- -e "s%@suexec@%$suexec%g" \
- -e "s%@suexec_caller@%$suexec_caller%g" \
- -e "s%@suexec_docroot@%$suexec_docroot%g" \
- -e "s%@suexec_logexec@%$suexec_logexec%g" \
- -e "s%@suexec_userdir@%$suexec_userdir%g" \
- -e "s%@suexec_uidmin@%$suexec_uidmin%g" \
- -e "s%@suexec_gidmin@%$suexec_gidmin%g" \
- -e "s%@suexec_safepath@%$suexec_safepath%g" \
- -e "s%@conf_group@%$conf_group%g" \
- -e "s%@conf_port@%$conf_port%g" \
- -e "s%@conf_serveradmin@%$conf_serveradmin%g" \
- -e "s%@conf_servername@%$conf_servername%g" \
- -e "s%@build_support@%$build_support%g" \
- -e "s%@install_support@%$install_support%g" \
- -e "s%@clean_support@%$clean_support%g" \
- -e "s%@distclean_support@%$distclean_support%g"
-
- ##
- ## override default paths in $src/include/httpd.h
- ## via command line arguments for the compiler
- ## supplied by a little shell script named $src/apaci
- ##
- echo "#!/bin/sh" >$src/apaci
- echo "## USED AS A COMMAND LINE EXPANDER TO OVERRIDE PATHS" >>$src/apaci
- echo "## WITHOUT DISTURBING THE KNOWN MAKE BUILD PROCESS DISPLAY" >>$src/apaci
- echo "echo '-DHTTPD_ROOT=\"$prefix\"'" >>$src/apaci
- echo "echo '-DSUEXEC_BIN=\"$sbindir/suexec\"'" >>$src/apaci
- echo "echo '-DSHARED_CORE_DIR=\"$libexecdir\"'" >>$src/apaci
- echo "echo '-DDEFAULT_PIDLOG=\"${runtimedir_relative}${thetarget}.pid\"'" >>$src/apaci
- echo "echo '-DDEFAULT_SCOREBOARD=\"${runtimedir_relative}${thetarget}.scoreboard\"'" >>$src/apaci
- echo "echo '-DDEFAULT_LOCKFILE=\"${runtimedir_relative}${thetarget}.lock\"'" >>$src/apaci
- echo "echo '-DDEFAULT_XFERLOG=\"${logfiledir_relative}access_log\"'" >>$src/apaci
- echo "echo '-DDEFAULT_ERRORLOG=\"${logfiledir_relative}error_log\"'" >>$src/apaci
- echo "echo '-DTYPES_CONFIG_FILE=\"${sysconfdir_relative}mime.types\"'" >>$src/apaci
- echo "echo '-DSERVER_CONFIG_FILE=\"${sysconfdir_relative}${thetarget}.conf\"'" >>$src/apaci
- echo "echo '-DACCESS_CONFIG_FILE=\"${sysconfdir_relative}access.conf\"'" >>$src/apaci
- echo "echo '-DRESOURCE_CONFIG_FILE=\"${sysconfdir_relative}srm.conf\"'" >>$src/apaci
- chmod a+x $src/apaci
- CFLAGS="$CFLAGS \\\`\$(SRCDIR)/apaci\\\`"
-
- ##
- ## create $src/Configuration.apaci file
- ##
- if [ .$quiet = .no ]; then
- echo "Creating Configuration.apaci in $src"
- fi
- rm -f $sedsubst 2>/dev/null
- touch $sedsubst
-
- # generate settings from imported environment variables
- OIFS="$IFS" IFS="$DIFS"
- for var in CC CPP OPTIM CFLAGS CFLAGS_SHLIB LDFLAGS LD_SHLIB LDFLAGS_SHLIB \
- LDFLAGS_SHLIB_EXPORT LIBS INCLUDES RANLIB DEPS TARGET; do
- eval "val=\"\$$var\"";
- if [ ".$val" != . ]; then
- case $var in
- CFLAGS|LDFLAGS|LIBS|INCLUDES|DEPS)
- echo $SEO "s%^#*\\(EXTRA_$var=\\).*%\\1$val%g" >>$sedsubst
- ;;
- *)
- echo $SEO "s%^#*\\($var=\\).*%\\1$val%g" >>$sedsubst
- ;;
- esac
- eval "$var=\"\"; export $var"
- fi
- done
- IFS="$OIFS"
-
- # generate rule directives
- OIFS="$IFS" IFS=':'
- for rule in $rules; do
- name="`echo $rule | tr "a-z" "A-Z"`"
- eval "val=\$rule_$rule"
- echo $SEO "s%^\\(Rule $name=\\).*%\\1$val%g" >>$sedsubst
- if [ $verbose = yes ]; then
- echo " + Rule $name=$val"
- fi
- done
- IFS="$OIFS"
-
- # consistency checks for shared object support
- some_shares=0
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "share=\$shared_$module"
- if [ $share = yes ]; then
- some_shares=1
- fi
- done
- IFS="$OIFS"
- if [ $some_shares = 1 ]; then
- if [ $module_so = no ]; then
- module_so=yes
- if [ .$quiet = .no ]; then
- echo " + enabling mod_so for DSO support"
- fi
- fi
- fi
- if [ ".$shared_so" = .yes ]; then
- shared_so=no
- echo "configure:Error: Module mod_so cannot be made a DSO itself" 1>&2
- exit 1
- fi
-
- # module permutation support
- if [ ".$permute" != . ]; then
- sed -e '/## mod_mmap_static/,$d' <src/Configuration.tmpl >$tplconf
- OIFS="$IFS" IFS='
- '
- for line in `cat src/Configuration.tmpl $addconf | egrep '^[# ]*(Add|Shared)Module'`; do
- name=`echo "$line" |\
- sed -e 's%^.*/\(.*\)$%\1%' \
- -e 's/\.[oa]$//' \
- -e 's/\.module$//' \
- -e 's/^mod_//' \
- -e 's/^lib//'`
- echo "${name}:${line}"
- done |\
- $AWK -F: '
- BEGIN {
- n = 0;
- }
- {
- module_pos[$1] = n;
- module_list[n] = $1;
- module_line[$1] = $2;
- n++;
- }
- END {
- pn = split(permute, perm, ",");
- for (p = 1; p <= pn; p++) {
- split(perm[p], m, ":")
- m1 = m[1];
- m2 = m[2];
- if (m1 == "BEGIN") {
- for (i = module_pos[m2]-1; i >= 0; i--) {
- n1 = module_list[i];
- n2 = module_list[i+1];
- module_list[i] = n2;
- module_list[i+1] = n1;
- module_pos[n1] = i+1;
- module_pos[n2] = i;
- }
- }
- else if (m2 == "END") {
- for (i = module_pos[m1]; i < n-1; i++) {
- n1 = module_list[i];
- n2 = module_list[i+1];
- module_list[i] = n2;
- module_list[i+1] = n1;
- module_pos[n1] = i+1;
- module_pos[n2] = i;
- }
- }
- else {
- p1 = module_pos[m1];
- p2 = module_pos[m2];
- n1 = module_list[p1];
- n2 = module_list[p2];
- module_list[p1] = n2;
- module_list[p2] = n1;
- module_pos[m1] = p2;
- module_pos[m2] = p1;
- }
- }
- for (i = 0; i < n; i++) {
- name = module_list[i];
- printf("%s\n", module_line[name]);
- }
- }
- ' "permute=$permute" >>$tplconf
- IFS="$OIFS"
- else
- cat $src/Configuration.tmpl $addconf >$tplconf
- fi
-
- # generate module directives
- OIFS="$IFS" IFS=':'
- for module in $modules; do
- eval "add=\$module_$module"
- if [ $add = yes ]; then
- echo $SEO "s%^.*\\(AddModule.*[_b/]$module\\..*\\)%\\1%g" >>$sedsubst
- echo $SEO "s%^.*\\(SharedModule.*[_b/]$module\\..*\\)%\\1%g" >>$sedsubst
- m="yes [static]"
- else
- echo $SEO "s%^.*\\(AddModule.*[_b/]$module\\..*\\)%# \\1%g" >>$sedsubst
- echo $SEO "s%^.*\\(SharedModule.*[_b/]$module\\..*\\)%# \\1%g" >>$sedsubst
- m=no
- fi
- eval "share=\$shared_$module"
- if [ $share = yes ]; then
- echo $SEO "s%^\\(.*\\)AddModule\\(.*[_b/]$module\\.\\)[oam].*\\(.*\\)%\\1SharedModule\\2so\\3%g" >>$sedsubst
- m="yes [shared]"
- fi
- if [ $verbose = yes ]; then
- echo " + Module $module: $m"
- fi
- done
- IFS="$OIFS"
-
- # split sedsubst into chunks of 50 commands
- # to workaround limits in braindead seds
- files=`$AWK <$sedsubst '
- BEGIN { line=0; cnt=0; }
- {
- if (line % 50 == 0) {
- file = sedsubst "." cnt;
- printf("%s\n", file);
- cnt++;
- }
- line++;
- print $0 >file;
- }
- ' "sedsubst=$sedsubst"`
- OIFS="$IFS" IFS="$DIFS"
- substcmd=""
- for file in $files; do
- substcmd="${substcmd} sed -f $file |"
- done
- substcmd="${substcmd} cat"
- IFS="$OIFS"
-
- # and finally translate the config template
- # according to our defined configuration
- eval "cat $tplconf | $substcmd >$src/Configuration.apaci"
-
- # cleanup
- rm -f $sedsubst $sedsubst.[0-9] 2>/dev/null
- rm -f $addconf 2>/dev/null
- rm -f $tplconf 2>/dev/null
-
- ##
- ## create all other Makefiles by running the proprietary
- ## $src/Configure script with our custom Configuration.apaci file
- ##
- if [ .$quiet = .yes ]; then
- (cd $src; ./Configure -file Configuration.apaci >/dev/null);
- else
- (cd $src; ./Configure -file Configuration.apaci |\
- sed -e '/^Using config file:.*/d' \
- -e "s:Makefile in :Makefile in $src\\/:" \
- -e "s:Makefile\$:Makefile in $src:")
- fi
-
- ##
- ## final hints
- ##
- if [ .$quiet = .no ]; then
- if [ ".$shadow" != . ]; then
- echo "Hint: You now have to build inside $shadow."
- echo "This can be done either by running the canonical commands"
- echo " \$ cd $shadow"
- echo " \$ make"
- echo " \$ make install"
- echo "or by running this alternative commands"
- echo " \$ make -f $shadow/Makefile"
- echo " \$ make -f $shadow/Makefile install"
- fi
- fi
-
-