X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=buildconf;h=4b3596951cab8d1d23bf2b1de2afeed13641c20e;hb=33ef86145710b9b8ef06199b297384e31ecb4514;hp=172805eec2a5a74735e1f5ccd6d74f9390d441b7;hpb=fb07607180e5cd8ae7015fdd70d4aab7edf5a946;p=apache diff --git a/buildconf b/buildconf index 172805eec2..4b3596951c 100755 --- a/buildconf +++ b/buildconf @@ -1,120 +1,203 @@ #!/bin/sh -# ==================================================================== -# The Apache Software License, Version 1.1 # -# Copyright (c) 2000-2004 The Apache Software Foundation. All rights -# reserved. +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: +# http://www.apache.org/licenses/LICENSE-2.0 # -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # -# 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. -# ==================================================================== -# -# This software consists of voluntary contributions made by many -# individuals on behalf of the Apache Software Foundation. For more -# information on the Apache Software Foundation, please see -# . -# - # buildconf: Build the support scripts needed to compile from a # checked-out version of the source code. +# version check for AC_PROG_CC_C99 +ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;q'` +case "$ac_version" in +# versions older than 2.50 are denied by AC_PREREQ +2.5*) + echo WARNING: You are using an outdated version of autoconf. + echo WARNING: This may lead to less than optimal performance of httpd. + echo WARNING: You should use autoconf 2.60 or newer. + sleep 1 + ;; +esac + # set a couple of defaults for where we should be looking for our support libs. # can be overridden with --with-apr=[dir] and --with-apr-util=[dir] -apr_src_dir=srclib/apr -apu_src_dir=srclib/apr-util +apr_src_dir="srclib/apr ../apr" +apu_src_dir="" while test $# -gt 0 do - # Normalize - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case "$1" in - --with-apr=*) - apr_src_dir=$optarg - ;; - esac - - case "$1" in - --with-apr-util=*) - apu_src_dir=$optarg - ;; - esac - - shift + # Normalize + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case "$1" in + --with-apr=*) + apr_src_dir=$optarg + ;; + + --with-apr-util=*) + apu_src_dir=$optarg + ;; + + -h|--help) + cat <= 1.12 and be + using a distribution that includes both find_apr.m4 and find_apu.m4 in the + --installbuilddir pointed to by apr-config. + +Environment variables used by buildconf: + AUTOCONF autoconf executable name [autoconf] + AUTOMAKE automake executable name [automake] + AUTOHEADER autoheader executable name [autoheader] +EOF + exit + ;; + + *) + echo "unknown option $1 (try --help for usage)" + exit 1 + ;; + esac + + shift done # -# Check to be sure that we have the srclib dependencies checked-out +# Check to be sure that we have the srclib dependencies checked-out, or that a +# working apr-config installation has been specified. # -if [ ! -d "$apr_src_dir" -o ! -f "$apr_src_dir/build/apr_common.m4" ]; then +should_exit=0 +apr_config= # path to apr-config (empty if using a source directory) +apr_found=0 +apu_found=0 +apr_major_version=2 + +for dir in $apr_src_dir +do + if [ -f "${dir}/build/apr_common.m4" ]; then + echo "found apr source: ${dir}" + apr_src_dir=$dir + apr_found=1 + break + elif which "${dir}" >/dev/null 2>&1; then + # We're using apr-config. Do a sanity check. + apr_config=`which "${dir}"` + echo "testing apr-config executable: ${apr_config}" + + version=`"${apr_config}" --version` + version=`echo "${version}" | sed -n '/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/p'` + + if [ -z "${version}" ]; then + echo "apr-config gave us an invalid --version" + apr_config= + continue + fi + + echo "using apr-config version ${version}" + apr_major_version=${version} # we'll make a real "major version" later + apr_src_dir=`"${apr_config}" --installbuilddir` + apr_found=1 + break + fi +done + +if [ $apr_found -lt 1 ]; then echo "" - echo "You don't have a copy of the apr source in $apr_src_dir. " + echo "You don't have a copy of the apr source in srclib/apr. " echo "Please get the source using the following instructions," echo "or specify the location of the source with " echo "--with-apr=[path to apr] :" echo "" - echo " cd srclib" - echo " cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login" - echo " (password 'anoncvs')" - echo " cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic co apr" + echo " svn co http://svn.apache.org/repos/asf/apr/apr/trunk srclib/apr" echo "" - exit 1 + should_exit=1 +elif [ -n "${apr_config}" ]; then + apr_major_version=`echo "${apr_major_version}" | sed 's/\..*//'` +else + apr_major_version=`grep "#define APR_MAJOR_VERSION" \ + $apr_src_dir/include/apr_version.h | sed 's/[^0-9]//g'` fi -if [ ! -d "$apu_src_dir" -o ! -f "$apu_src_dir/Makefile.in" ]; then - echo "" - echo "You don't have a copy of the apr-util source in $apu_src_dir. " - echo "Please get one the source using the following instructions, " - echo "or specify the location of the source with " - echo "--with-apr-util=[path to apr-util]:" - echo "" - echo " cd srclib" - echo " cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login" - echo " (password 'anoncvs')" - echo " cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic co apr-util" - echo "" + +# Find APR-util. Note: if we're using apr-config, we can completely skip this, +# even if APR is version 1. That's because we only end up caring about +# find_apu.m4, which is not actually installed in the standard APR-util +# distribution to begin with. +if [ -z "${apr_config}" -a $apr_major_version -lt 2 ] ; then + if test -z "$apu_src_dir"; then + apu_src_dir=`echo $apr_src_dir | sed -e 's#/apr#/apr-util#g;'` + apu_src_dir="$apu_src_dir `echo $apr_src_dir | sed -e 's#/apr#/aprutil#;g'`" + apu_src_dir="$apu_src_dir srclib/apr-util ../apr-util" + fi + + for dir in $apu_src_dir + do + if [ -f "${dir}/Makefile.in" ]; then + echo "found apr-util source: ${dir}" + apu_src_dir=$dir + apu_found=1 + break + fi + done + + if [ $apu_found -lt 1 ]; then + echo "" + echo "You don't have a copy of the apr-util source in srclib/apr-util. " + echo "Please get one the source using the following instructions, " + echo "or specify the location of the source with " + echo "--with-apr-util=[path to apr-util]:" + echo "" + echo " svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.5.x srclib/apr-util" + echo "" + should_exit=1 + fi +fi + +if [ $should_exit -gt 0 ]; then exit 1 fi @@ -124,7 +207,7 @@ touch .deps rm -f aclocal.m4 rm -f generated_lists -# Remove autoconf 2.5x's cache directory +# Remove autoconf 2.5x cache directories rm -rf autom4te*.cache case "`uname`" in @@ -135,48 +218,77 @@ esac # end temporary stuff apr_configure="$apr_src_dir/configure" -aprutil_configure="$apu_src_dir/configure" -pcre_configure="srclib/pcre/configure" +if [ $apr_major_version -lt 2 ] ; then + aprutil_configure="$apu_src_dir/configure" +fi config_h_in="include/ap_config_auto.h.in" cross_compile_warning="warning: AC_TRY_RUN called without default to allow cross compiling" -if [ -d srclib/apr ]; then +if [ "$apr_src_dir" = "srclib/apr" ]; then echo rebuilding $apr_configure (cd srclib/apr && ./buildconf) || { echo "./buildconf failed for apr" exit 1 } + rm -f srclib/apr/apr.spec fi -if [ -d srclib/apr-util ]; then - echo rebuilding $aprutil_configure - (cd srclib/apr-util && ./buildconf) || { - echo "./buildconf failed for apr-util" - exit 1 - } +apr_src_dir=`cd $apr_src_dir && pwd` + +if [ $apr_major_version -lt 2 ] ; then + if [ "$apu_src_dir" = "srclib/apr-util" ]; then + echo rebuilding $aprutil_configure + (cd srclib/apr-util && ./buildconf --with-apr=$apr_src_dir) || { + echo "./buildconf failed for apr-util" + exit 1 + } + rm -f srclib/apr-util/apr-util.spec + fi + + apu_src_dir=`cd $apu_src_dir && pwd` fi echo copying build files -cp $apr_src_dir/build/config.guess $apr_src_dir/build/config.sub \ - $apr_src_dir/build/PrintPath $apr_src_dir/build/apr_common.m4 \ - $apr_src_dir/build/find_apr.m4 $apu_src_dir/build/find_apu.m4 build +if [ -n "${apr_config}" ]; then + # If we're using apr-config, we switch things up a little bit: + # - use automake's config.* scripts instead of APR's + # - use the included PrintPath instead of copying from APR + # - assume find_apu.m4 is also in APR's --installbuilddir + + # Figure out where to copy config.* from. + automake=${AUTOMAKE:-automake} + am_libdir=`"${automake}" --print-libdir` + cp "${am_libdir}/config.guess" "${am_libdir}/config.sub" build + + # Remember that in this case, $apr_src_dir points to the build directory. + cp "$apr_src_dir/apr_common.m4" "$apr_src_dir/find_apr.m4" build + if [ $apr_major_version -lt 2 ] ; then + cp "$apr_src_dir/find_apu.m4" build + fi +else + cp $apr_src_dir/build/config.guess $apr_src_dir/build/config.sub \ + $apr_src_dir/build/PrintPath $apr_src_dir/build/apr_common.m4 \ + $apr_src_dir/build/find_apr.m4 build + if [ $apr_major_version -lt 2 ] ; then + cp $apu_src_dir/build/find_apu.m4 build + fi +fi # Remove any libtool files so one can switch between libtool 1.3 # and libtool 1.4 by simply rerunning the buildconf script. (cd build ; rm -f ltconfig ltmain.sh) -# Optionally copy libtool-1.3.x files -if [ -f $apr_src_dir/build/ltconfig ]; then - cp $apr_src_dir/build/ltconfig build -fi -if [ -f $apr_src_dir/build/ltmain.sh ]; then - cp $apr_src_dir/build/ltmain.sh build +if [ -z "${apr_config}" ]; then + # Optionally copy libtool-1.3.x files + if [ -f $apr_src_dir/build/ltconfig ]; then + cp $apr_src_dir/build/ltconfig build + fi + if [ -f $apr_src_dir/build/ltmain.sh ]; then + cp $apr_src_dir/build/ltmain.sh build + fi fi -echo rebuilding $pcre_configure -(cd srclib/pcre && ${AUTOCONF:-autoconf}) - echo rebuilding $config_h_in rm -f $config_h_in ${AUTOHEADER:-autoheader} 2>&1 | grep -v "$cross_compile_warning" @@ -185,9 +297,13 @@ echo rebuilding configure rm -f config.cache ${AUTOCONF:-autoconf} 2>&1 | grep -v "$cross_compile_warning" +# Remove autoconf 2.5x cache directories +rm -rf autom4te*.cache + if [ -f `which cut` ]; then echo rebuilding rpm spec file ( VMMN=`build/get-version.sh mmn include/ap_mmn.h MODULE_MAGIC_NUMBER` + EPOCH=`build/get-version.sh epoch include/ap_release.h AP_SERVER` REVISION=`build/get-version.sh all include/ap_release.h AP_SERVER` VERSION=`echo $REVISION | cut -d- -s -f1` RELEASE=`echo $REVISION | cut -d- -s -f2` @@ -199,18 +315,17 @@ if [ -f `which cut` ]; then sed -e "s/APACHE_VERSION/$VERSION/" \ -e "s/APACHE_RELEASE/$RELEASE/" \ -e "s/APACHE_MMN/$VMMN/" \ + -e "s/APACHE_EPOCH/$EPOCH/" \ > httpd.spec ) fi -# ensure that the mod_ssl expression parser sources are never regenerated +# ensure that the ap_expr expression parser sources are never regenerated # when running make -echo fixing timestamps for mod_ssl sources -cd modules/ssl -touch ssl_expr_parse.y -sleep 1 -touch ssl_expr_parse.c ssl_expr_parse.h ssl_expr_scan.l +echo fixing timestamps for ap_expr sources +cd server +touch util_expr_parse.y util_expr_scan.l sleep 1 -touch ssl_expr_scan.c -cd ../.. +touch util_expr_parse.c util_expr_parse.h util_expr_scan.c +cd .. exit 0