1#!/bin/sh 2# 3# 4# Licensed to the Apache Software Foundation (ASF) under one 5# or more contributor license agreements. See the NOTICE file 6# distributed with this work for additional information 7# regarding copyright ownership. The ASF licenses this file 8# to you under the Apache License, Version 2.0 (the 9# "License"); you may not use this file except in compliance 10# with the License. You may obtain a copy of the License at 11# 12# http://www.apache.org/licenses/LICENSE-2.0 13# 14# Unless required by applicable law or agreed to in writing, 15# software distributed under the License is distributed on an 16# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17# KIND, either express or implied. See the License for the 18# specific language governing permissions and limitations 19# under the License. 20# 21# 22 23### Run this to produce everything needed for configuration. ### 24 25 26# Run tests to ensure that our build requirements are met 27RELEASE_MODE="" 28RELEASE_ARGS="" 29SKIP_DEPS="" 30while test $# != 0; do 31 case "$1" in 32 --release) 33 RELEASE_MODE="$1" 34 RELEASE_ARGS="--release" 35 shift 36 ;; 37 -s) 38 SKIP_DEPS="yes" 39 shift 40 ;; 41 --) # end of option parsing 42 break 43 ;; 44 *) 45 echo "invalid parameter: '$1'" 46 exit 1 47 ;; 48 esac 49done 50# ### The order of parameters is important; buildcheck.sh depends on it and 51# ### we don't want to copy the fancy option parsing loop there. For the 52# ### same reason, all parameters should be quoted, so that buildcheck.sh 53# ### sees an empty arg rather than missing one. 54./build/buildcheck.sh "$RELEASE_MODE" || exit 1 55 56# Handle some libtool helper files 57# 58# ### eventually, we can/should toss this in favor of simply using 59# ### APR's libtool. deferring to a second round of change... 60# 61 62libtoolize="`./build/PrintPath glibtoolize libtoolize libtoolize15`" 63lt_major_version=`$libtoolize --version 2>/dev/null | sed -e 's/^[^0-9]*//' -e 's/\..*//' -e '/^$/d' -e 1q` 64 65if [ "x$libtoolize" = "x" ]; then 66 echo "libtoolize not found in path" 67 exit 1 68fi 69 70rm -f build/config.guess build/config.sub 71$libtoolize --copy --automake --force 72 73ltpath="`dirname $libtoolize`" 74ltfile=${LIBTOOL_M4-`cd $ltpath/../share/aclocal ; pwd`/libtool.m4} 75 76if [ ! -f $ltfile ]; then 77 echo "$ltfile not found (try setting the LIBTOOL_M4 environment variable)" 78 exit 1 79fi 80 81echo "Copying libtool helper: $ltfile" 82# An ancient helper might already be present from previous builds, 83# and it might be write-protected (e.g. mode 444, seen on FreeBSD). 84# This would cause cp to fail and print an error message, but leave 85# behind a potentially outdated libtool helper. So, remove before 86# copying: 87rm -f build/libtool.m4 88cp $ltfile build/libtool.m4 89 90for file in ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4; do 91 rm -f build/$file 92 93 if [ $lt_major_version -ge 2 ]; then 94 ltfile=${LIBTOOL_M4-`cd $ltpath/../share/aclocal ; pwd`/$file} 95 96 if [ ! -f $ltfile ]; then 97 echo "$ltfile not found (try setting the LIBTOOL_M4 environment variable)" 98 exit 1 99 fi 100 101 echo "Copying libtool helper: $ltfile" 102 cp $ltfile build/$file 103 fi 104done 105 106if [ $lt_major_version -ge 2 ]; then 107 for file in config.guess config.sub; do 108 configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ; pwd`/$file} 109 110 if [ ! -f $configfile ]; then 111 echo "$configfile not found (try setting the LIBTOOL_CONFIG environment variable)" 112 exit 1 113 fi 114 115 cp $configfile build/$file 116 done 117fi 118 119# Create the file detailing all of the build outputs for SVN. 120# 121# Note: this dependency on Python is fine: only SVN developers use autogen.sh 122# and we can state that dev people need Python on their machine. Note 123# that running gen-make.py requires Python 2.5 or newer. 124 125PYTHON="`./build/find_python.sh`" 126if test -z "$PYTHON"; then 127 echo "Python 2.5 or later is required to run autogen.sh" 128 echo "If you have a suitable Python installed, but not on the" 129 echo "PATH, set the environment variable PYTHON to the full path" 130 echo "to the Python executable, and re-run autogen.sh" 131 exit 1 132fi 133 134# Compile SWIG headers into standalone C files if we are in release mode 135if test -n "$RELEASE_MODE"; then 136 echo "Generating SWIG code..." 137 # Generate build-outputs.mk in non-release-mode, so that we can 138 # build the SWIG-related files 139 "$PYTHON" ./gen-make.py build.conf || gen_failed=1 140 141 # Build the SWIG-related files 142 make -f autogen-standalone.mk autogen-swig 143 144 # Remove the .swig_checked file 145 rm -f .swig_checked 146fi 147 148if test -n "$SKIP_DEPS"; then 149 echo "Creating build-outputs.mk (no dependencies)..." 150 "$PYTHON" ./gen-make.py $RELEASE_ARGS -s build.conf || gen_failed=1 151else 152 echo "Creating build-outputs.mk..." 153 "$PYTHON" ./gen-make.py $RELEASE_ARGS build.conf || gen_failed=1 154fi 155 156if test -n "$RELEASE_MODE"; then 157 find build/ -name '*.pyc' -exec rm {} \; 158fi 159 160rm autogen-standalone.mk 161 162if test -n "$gen_failed"; then 163 echo "ERROR: gen-make.py failed" 164 exit 1 165fi 166 167# Produce config.h.in 168echo "Creating svn_private_config.h.in..." 169${AUTOHEADER:-autoheader} 170 171# If there's a config.cache file, we may need to delete it. 172# If we have an existing configure script, save a copy for comparison. 173if [ -f config.cache ] && [ -f configure ]; then 174 cp configure configure.$$.tmp 175fi 176 177# Produce ./configure 178echo "Creating configure..." 179${AUTOCONF:-autoconf} 180 181# If we have a config.cache file, toss it if the configure script has 182# changed, or if we just built it for the first time. 183if [ -f config.cache ]; then 184 ( 185 [ -f configure.$$.tmp ] && cmp configure configure.$$.tmp > /dev/null 2>&1 186 ) || ( 187 echo "Tossing config.cache, since configure has changed." 188 rm config.cache 189 ) 190 rm -f configure.$$.tmp 191fi 192 193# Remove autoconf 2.5x's cache directory 194rm -rf autom4te*.cache 195 196echo "" 197echo "You can run ./configure now." 198echo "" 199echo "Running autogen.sh implies you are a maintainer. You may prefer" 200echo "to run configure in one of the following ways:" 201echo "" 202echo "./configure --enable-maintainer-mode" 203echo "./configure --disable-shared" 204echo "./configure --enable-maintainer-mode --disable-shared" 205echo "./configure --disable-optimize --enable-debug" 206echo "./configure CUSERFLAGS='--flags-for-C' CXXUSERFLAGS='--flags-for-C++'" 207echo "" 208echo "Note: If you wish to run a Subversion HTTP server, you will need" 209echo "Apache 2.x. See the INSTALL file for details." 210echo "" 211