X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=buildconf;h=38969681ee2e95fb84f79a960fa3b87ba1ebe3b4;hb=04d69efcfd57a18fcf8da74e29a16590c9aebfe9;hp=14d8a61ea1578e40ce67c1650bb5eb3dab1b4dc5;hpb=c0dd97c44ca872aeb9256086511957b5c495a9d1;p=apache diff --git a/buildconf b/buildconf index 14d8a61ea1..38969681ee 100755 --- a/buildconf +++ b/buildconf @@ -1,132 +1,235 @@ #!/bin/sh - -# TODO - Steal the new PHP buildconf and build.mk. -# This will do for now, though - -supplied_flag=$1 - -# do some version checking for the tools we use -if test "$1" = "--force"; then - shift -# this is a posix correct "test -nt" -elif test "`ls -t buildconf buildconf.stamp 2>/dev/null |head -1`" != "buildconf"; then - : -else - echo "buildconf: checking installation..." - - # autoconf will check for the version itself - # automake 1.4 or newer - am_version=`automake --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` - if test "$am_version" = ""; then - echo "buildconf: automake not found." - echo " You need automake version 1.4 or newer installed" - echo " to build APACHE from CVS." - exit 1 - fi - IFS=.; set $am_version; IFS=' ' - if test "$1" = "1" -a "$2" -lt "4" || test "$1" -lt "1"; then - echo "buildconf: automake version $am_version found." - echo " You need automake version 1.4 or newer installed" - echo " to build APACHE from CVS." - exit 1 - else - echo "buildconf: automake version $am_version (ok)" - fi - - # libtool 1.3.3 or newer - lt_pversion=`libtool --version 2>/dev/null|sed -e 's/^[^0-9]*//' -e 's/[- ].*//'` - if test "$lt_pversion" = ""; then - echo "buildconf: libtool not found." - echo " You need libtool version 1.3 or newer installed" - echo " to build APACHE from CVS." - exit 1 - fi - lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` - IFS=.; set $lt_version; IFS=' ' - if test "$1" -gt "1" || test "$2" -gt "3" || test "$2" = "3" -a "$3" -ge "3" - then - echo "buildconf: libtool version $lt_pversion (ok)" - else - echo "buildconf: libtool version $lt_pversion found." - echo " You need libtool version 1.3.3 or newer installed" - echo " to build APACHE from CVS." - exit 1 +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# 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. +# +# +# 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 ../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 +done + +# +# Check to be sure that we have the srclib dependencies checked-out +# + +should_exit=0 +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 fi - touch buildconf.stamp +done + +if [ $apr_found -lt 1 ]; then + echo "" + echo "APR could not be found automatically." + echo "" + echo "Please refer to the documentation on APR in the httpd INSTALL file." + echo "" + should_exit=1 +else + apr_major_version=`grep "#define APR_MAJOR_VERSION" \ + $apr_src_dir/include/apr_version.h | sed 's/[^0-9]//g'` fi -am_prefix=`which automake | sed -e 's#/[^/]*/[^/]*$##'` -lt_prefix=`which libtool | sed -e 's#/[^/]*/[^/]*$##'` -if test "$am_prefix" != "$lt_prefix"; then - echo "buildconf: WARNING: automake and libtool are installed in different" - echo " directories. This may cause aclocal to fail." - echo "buildconf: continuing anyway" -fi +if [ $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 -if test "$supplied_flag" = "--copy"; then - automake_flags=--copy + 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 are using APR 1.x but APR-util 1.x was not found." + echo "" + echo "Please refer to the documentation on APR in the httpd INSTALL file." + echo "" + should_exit=1 + fi fi -./helpers/build-acconfig-header - -mv aclocal.m4 aclocal.m4.old 2>/dev/null -aclocal -if test "$?" != "0" -a "$am_prefix" != "$lt_prefix"; then - echo "buildconf: ERROR: aclocal failed, probably because automake and" - echo " libtool are installed with different prefixes;" - echo " automake is installed in $am_prefix, but libtool in $lt_prefix." - echo " Please re-install automake and/or libtool with a common prefix" - echo " and try again." +if [ $should_exit -gt 0 ]; then exit 1 fi -if cmp aclocal.m4.old aclocal.m4 > /dev/null 2>&1; then - echo "buildconf: keeping aclocal.m4" - mv aclocal.m4.old aclocal.m4 -else - echo "buildconf: created or modified aclocal.m4" +# These are temporary until Roy finishes the other build changes +# +touch .deps +rm -f aclocal.m4 +rm -f generated_lists + +# Remove autoconf 2.5x cache directories +rm -rf autom4te*.cache + +case "`uname`" in +*BSD/OS*) + ./build/bsd_makefile;; +esac +# +# end temporary stuff + +apr_configure="$apr_src_dir/configure" +if [ $apr_major_version -lt 2 ] ; then + aprutil_configure="$apu_src_dir/configure" fi +config_h_in="include/ap_config_auto.h.in" -autoheader +cross_compile_warning="warning: AC_TRY_RUN called without default to allow cross compiling" -# find all Makefile.ams -files="Makefile `find ap lib main modules regex os -name Makefile.am | sed 's#\.am##' | tr '\n' ' '`" +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 -# suppress stupid automake warning -automake --add-missing --include-deps $automake_flags $files 2>&1 | grep -v \$APACHE_OUTPUT_FILES >&2 +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 -mv configure configure.old 2>/dev/null -autoconf -if cmp configure.old configure > /dev/null 2>&1; then - echo "buildconf: keeping configure" - mv configure.old configure -else - echo "buildconf: created or modified configure" + apu_src_dir=`cd $apu_src_dir && pwd` fi -# Now do APR... - -echo "buildconf: setting up APR" +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 build +if [ $apr_major_version -lt 2 ] ; then + cp $apu_src_dir/build/find_apu.m4 build +fi -cd lib/apr +# 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) -mv configure configure.old 2>/dev/null -autoconf -if cmp configure.old configure > /dev/null 2>&1; then - echo "buildconf: keeping configure" - mv configure.old configure -else - echo "buildconf: created or modified configure" +# 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 -cd ../.. - -# Now run the configs... +echo rebuilding $config_h_in +rm -f $config_h_in +${AUTOHEADER:-autoheader} 2>&1 | grep -v "$cross_compile_warning" + +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 + +# Remove possible bsd_converted file +rm -rf bsd_converted + +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` + if [ "x$VERSION" = "x" ]; then + VERSION=$REVISION + RELEASE=1 + fi + cat ./build/rpm/httpd.spec.in | \ + sed -e "s/APACHE_VERSION/$VERSION/" \ + -e "s/APACHE_RELEASE/$RELEASE/" \ + -e "s/APACHE_MMN/$VMMN/" \ + -e "s/APACHE_EPOCH/$EPOCH/" \ + > httpd.spec ) +fi -rm config.cache -./configure +# ensure that the ap_expr expression parser sources are never regenerated +# when running make +echo fixing timestamps for ap_expr sources +cd server +touch util_expr_parse.y util_expr_scan.l +sleep 1 +touch util_expr_parse.c util_expr_parse.h util_expr_scan.c +cd .. -cd lib/apr -rm config.cache -./configure +exit 0