1#!/bin/sh
2#
3# Licensed to the Apache Software Foundation (ASF) under one or more
4# contributor license agreements.  See the NOTICE file distributed with
5# this work for additional information regarding copyright ownership.
6# The ASF licenses this file to You under the Apache License, Version 2.0
7# (the "License"); you may not use this file except in compliance with
8# the License.  You may obtain a copy of the License at
9#
10#     http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18#
19# buildconf: Build the support scripts needed to compile from a
20#            checked-out version of the source code.
21
22# set a couple of defaults for where we should be looking for our support libs.
23# can be overridden with --with-apr=[dir] and --with-apr-util=[dir]
24
25apr_src_dir="srclib/apr ../apr"
26apu_src_dir="srclib/apr-util ../apr-util"
27
28while test $# -gt 0 
29do
30  # Normalize
31  case "$1" in
32  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
33  *) optarg= ;;
34  esac
35
36  case "$1" in
37  --with-apr=*)
38  apr_src_dir=$optarg
39  ;;
40  esac
41
42  case "$1" in
43  --with-apr-util=*)
44  apu_src_dir=$optarg
45  ;;
46  esac
47
48  shift
49done
50
51#
52# Check to be sure that we have the srclib dependencies checked-out
53#
54
55should_exit=0
56apr_found=0
57apu_found=0
58
59for dir in $apr_src_dir
60do
61    if [ -f "${dir}/build/apr_common.m4" ]; then
62        echo "found apr source: ${dir}"
63        apr_src_dir=$dir
64        apr_found=1
65        break
66    fi
67done
68
69if [ $apr_found -lt 1 ]; then
70    echo ""
71    echo "You don't have a copy of the apr source in srclib/apr. "
72    echo "Please get the source using the following instructions," 
73    echo "or specify the location of the source with " 
74    echo "--with-apr=[path to apr] :"
75    echo ""
76    echo "   svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.4.x srclib/apr"
77    echo ""
78    should_exit=1
79fi
80
81for dir in $apu_src_dir
82do
83    if [ -f "${dir}/Makefile.in" ]; then
84        echo "found apr-util source: ${dir}"
85        apu_src_dir=$dir
86        apu_found=1
87        break
88    fi
89done
90
91if [ $apu_found -lt 1 ]; then
92    echo ""
93    echo "You don't have a copy of the apr-util source in srclib/apr-util. "
94    echo "Please get the source using the following instructions, "
95    echo "or specify the location of the source with "
96    echo "--with-apr-util=[path to apr-util] :"
97    echo ""
98    echo "   svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.4.x srclib/apr-util"
99    echo ""
100    should_exit=1
101fi
102
103if [ $should_exit -gt 0 ]; then
104    exit 1
105fi
106
107# These are temporary until Roy finishes the other build changes
108#
109touch .deps
110rm -f aclocal.m4
111rm -f generated_lists
112rm -f srclib/pcre/aclocal.m4
113
114# Remove autoconf 2.5x cache directories
115rm -rf autom4te*.cache srclib/pcre/autom4te*.cache
116
117case "`uname`" in
118*BSD/OS*)
119    ./build/bsd_makefile;;
120esac
121#
122# end temporary stuff
123
124apr_configure="$apr_src_dir/configure"
125aprutil_configure="$apu_src_dir/configure"
126pcre_configure="srclib/pcre/configure"
127config_h_in="include/ap_config_auto.h.in"
128
129cross_compile_warning="warning: AC_TRY_RUN called without default to allow cross compiling"
130
131if [ "$apr_src_dir" = "srclib/apr" ]; then
132    echo rebuilding $apr_configure
133    (cd srclib/apr && ./buildconf) || {
134        echo "./buildconf failed for apr"
135        exit 1
136    }
137    rm -f srclib/apr/apr.spec
138fi
139
140apr_src_dir=`cd $apr_src_dir && pwd` 
141
142if [ "$apu_src_dir" = "srclib/apr-util" ]; then
143    echo rebuilding $aprutil_configure
144    (cd srclib/apr-util && ./buildconf --with-apr=$apr_src_dir) || {
145        echo "./buildconf failed for apr-util" 
146        exit 1
147    }
148    rm -f srclib/apr-util/apr-util.spec
149fi
150
151apu_src_dir=`cd $apu_src_dir && pwd` 
152
153echo copying build files
154cp $apr_src_dir/build/config.guess $apr_src_dir/build/config.sub \
155   $apr_src_dir/build/PrintPath $apr_src_dir/build/apr_common.m4 \
156   $apr_src_dir/build/find_apr.m4 $apu_src_dir/build/find_apu.m4 build
157
158# Remove any libtool files so one can switch between libtool 1.3
159# and libtool 1.4 by simply rerunning the buildconf script.
160(cd build ; rm -f ltconfig ltmain.sh)
161
162# Optionally copy libtool-1.3.x files
163if [ -f $apr_src_dir/build/ltconfig ]; then
164    cp $apr_src_dir/build/ltconfig build
165fi
166if [ -f $apr_src_dir/build/ltmain.sh ]; then
167    cp $apr_src_dir/build/ltmain.sh build
168fi
169
170echo rebuilding $pcre_configure
171(cd srclib/pcre && ${AUTOCONF:-autoconf})
172
173echo rebuilding $config_h_in
174rm -f $config_h_in
175${AUTOHEADER:-autoheader} 2>&1 | grep -v "$cross_compile_warning"
176
177echo rebuilding configure
178rm -f config.cache
179${AUTOCONF:-autoconf} 2>&1 | grep -v "$cross_compile_warning"
180
181# Remove autoconf 2.5x cache directories
182rm -rf autom4te*.cache srclib/pcre/autom4te*.cache
183
184if [ -f `which cut` ]; then
185  echo rebuilding rpm spec file
186  ( VMMN=`build/get-version.sh mmn include/ap_mmn.h MODULE_MAGIC_NUMBER`
187    REVISION=`build/get-version.sh all include/ap_release.h AP_SERVER`
188    VERSION=`echo $REVISION | cut -d- -s -f1`
189    RELEASE=`echo $REVISION | cut -d- -s -f2`
190    if [ "x$VERSION" = "x" ]; then
191      VERSION=$REVISION
192      RELEASE=1
193    fi
194    cat ./build/rpm/httpd.spec.in | \
195    sed -e "s/APACHE_VERSION/$VERSION/" \
196        -e "s/APACHE_RELEASE/$RELEASE/" \
197        -e "s/APACHE_MMN/$VMMN/" \
198    > httpd.spec )
199fi
200
201# ensure that the mod_ssl expression parser sources are never regenerated
202# when running make
203echo fixing timestamps for mod_ssl sources
204cd modules/ssl
205touch ssl_expr_parse.y
206sleep 1
207touch ssl_expr_parse.c ssl_expr_parse.h ssl_expr_scan.l
208sleep 1
209touch ssl_expr_scan.c
210cd ../..
211
212exit 0
213