1251881Speter#!/bin/sh 2251881Speter# 3251881Speter# 4251881Speter# Licensed to the Apache Software Foundation (ASF) under one 5251881Speter# or more contributor license agreements. See the NOTICE file 6251881Speter# distributed with this work for additional information 7251881Speter# regarding copyright ownership. The ASF licenses this file 8251881Speter# to you under the Apache License, Version 2.0 (the 9251881Speter# "License"); you may not use this file except in compliance 10251881Speter# with the License. You may obtain a copy of the License at 11251881Speter# 12251881Speter# http://www.apache.org/licenses/LICENSE-2.0 13251881Speter# 14251881Speter# Unless required by applicable law or agreed to in writing, 15251881Speter# software distributed under the License is distributed on an 16251881Speter# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17251881Speter# KIND, either express or implied. See the License for the 18251881Speter# specific language governing permissions and limitations 19251881Speter# under the License. 20251881Speter# 21251881Speter# 22251881Speter 23251881Speter### Run this to produce everything needed for configuration. ### 24251881Speter 25251881Speter 26286506Speter# Some shells can produce output when running 'cd' which interferes 27286506Speter# with the construct 'abs=`cd dir && pwd`'. 28286506Speter(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 29286506Speter 30251881Speter# Run tests to ensure that our build requirements are met 31251881SpeterRELEASE_MODE="" 32251881SpeterRELEASE_ARGS="" 33251881SpeterSKIP_DEPS="" 34251881Speterwhile test $# != 0; do 35251881Speter case "$1" in 36251881Speter --release) 37251881Speter RELEASE_MODE="$1" 38251881Speter RELEASE_ARGS="--release" 39251881Speter shift 40251881Speter ;; 41251881Speter -s) 42251881Speter SKIP_DEPS="yes" 43251881Speter shift 44251881Speter ;; 45251881Speter --) # end of option parsing 46251881Speter break 47251881Speter ;; 48251881Speter *) 49251881Speter echo "invalid parameter: '$1'" 50251881Speter exit 1 51251881Speter ;; 52251881Speter esac 53251881Speterdone 54251881Speter# ### The order of parameters is important; buildcheck.sh depends on it and 55251881Speter# ### we don't want to copy the fancy option parsing loop there. For the 56251881Speter# ### same reason, all parameters should be quoted, so that buildcheck.sh 57251881Speter# ### sees an empty arg rather than missing one. 58251881Speter./build/buildcheck.sh "$RELEASE_MODE" || exit 1 59251881Speter 60251881Speter# Handle some libtool helper files 61251881Speter# 62251881Speter# ### eventually, we can/should toss this in favor of simply using 63251881Speter# ### APR's libtool. deferring to a second round of change... 64251881Speter# 65251881Speter 66289180Speter# Much like APR except we do not prefer libtool 1 over libtool 2. 67289180Speterlibtoolize="`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`" 68251881Speterlt_major_version=`$libtoolize --version 2>/dev/null | sed -e 's/^[^0-9]*//' -e 's/\..*//' -e '/^$/d' -e 1q` 69251881Speter 70251881Speterif [ "x$libtoolize" = "x" ]; then 71251881Speter echo "libtoolize not found in path" 72251881Speter exit 1 73251881Speterfi 74251881Speter 75251881Speterrm -f build/config.guess build/config.sub 76251881Speter$libtoolize --copy --automake --force 77251881Speter 78251881Speterltpath="`dirname $libtoolize`" 79251881Speter 80286506Speterif [ "x$LIBTOOL_M4" = "x" ]; then 81286506Speter ltm4_error='(try setting the LIBTOOL_M4 environment variable)' 82286506Speter if [ -d "$ltpath/../share/aclocal/." ]; then 83286506Speter ltm4=`cd "$ltpath/../share/aclocal" && pwd` 84286506Speter else 85286506Speter echo "Libtool helper path not found $ltm4_error" 86286506Speter echo " expected at: '$ltpath/../share/aclocal'" 87286506Speter exit 1 88286506Speter fi 89286506Speterelse 90286506Speter ltm4_error="(the LIBTOOL_M4 environment variable is: $LIBTOOL_M4)" 91286506Speter ltm4="$LIBTOOL_M4" 92286506Speterfi 93286506Speter 94286506Speterltfile="$ltm4/libtool.m4" 95286506Speterif [ ! -f "$ltfile" ]; then 96286506Speter echo "$ltfile not found $ltm4_error" 97251881Speter exit 1 98251881Speterfi 99251881Speter 100286506Speterecho "Copying libtool helper: $ltfile" 101251881Speter# An ancient helper might already be present from previous builds, 102251881Speter# and it might be write-protected (e.g. mode 444, seen on FreeBSD). 103251881Speter# This would cause cp to fail and print an error message, but leave 104251881Speter# behind a potentially outdated libtool helper. So, remove before 105251881Speter# copying: 106251881Speterrm -f build/libtool.m4 107286506Spetercp "$ltfile" build/libtool.m4 108251881Speter 109251881Speterfor file in ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4; do 110251881Speter rm -f build/$file 111251881Speter 112251881Speter if [ $lt_major_version -ge 2 ]; then 113286506Speter ltfile="$ltm4/$file" 114251881Speter 115286506Speter if [ ! -f "$ltfile" ]; then 116286506Speter echo "$ltfile not found $ltm4_error" 117251881Speter exit 1 118251881Speter fi 119251881Speter 120286506Speter echo "Copying libtool helper: $ltfile" 121286506Speter cp "$ltfile" "build/$file" 122251881Speter fi 123251881Speterdone 124251881Speter 125251881Speterif [ $lt_major_version -ge 2 ]; then 126286506Speter if [ "x$LIBTOOL_CONFIG" = "x" ]; then 127286506Speter ltconfig_error='(try setting the LIBTOOL_CONFIG environment variable)' 128286506Speter if [ -d "$ltpath/../share/libtool/config/." ]; then 129286506Speter ltconfig=`cd "$ltpath/../share/libtool/config" && pwd` 130286506Speter elif [ -d "$ltpath/../share/libtool/build-aux/." ]; then 131286506Speter ltconfig=`cd "$ltpath/../share/libtool/build-aux" && pwd` 132286506Speter else 133286506Speter echo "Autoconf helper path not found $ltconfig_error" 134286506Speter echo " expected at: '$ltpath/../share/libtool/config'" 135286506Speter echo " or: '$ltpath/../share/libtool/build-aux'" 136286506Speter exit 1 137286506Speter fi 138286506Speter else 139286506Speter ltconfig_error="(the LIBTOOL_CONFIG environment variable is: $LIBTOOL_CONFIG)" 140286506Speter ltconfig="$LIBTOOL_CONFIG" 141286506Speter fi 142286506Speter 143251881Speter for file in config.guess config.sub; do 144286506Speter configfile="$ltconfig/$file" 145251881Speter 146286506Speter if [ ! -f "$configfile" ]; then 147286506Speter echo "$configfile not found $ltconfig_error" 148251881Speter exit 1 149251881Speter fi 150251881Speter 151286506Speter echo "Copying autoconf helper: $configfile" 152286506Speter cp "$configfile" build/$file 153251881Speter done 154251881Speterfi 155251881Speter 156251881Speter# Create the file detailing all of the build outputs for SVN. 157251881Speter# 158251881Speter# Note: this dependency on Python is fine: only SVN developers use autogen.sh 159251881Speter# and we can state that dev people need Python on their machine. Note 160289180Speter# that running gen-make.py requires Python 2.7 or newer. 161251881Speter 162251881SpeterPYTHON="`./build/find_python.sh`" 163251881Speterif test -z "$PYTHON"; then 164289180Speter echo "Python 2.7 or later is required to run autogen.sh" 165251881Speter echo "If you have a suitable Python installed, but not on the" 166251881Speter echo "PATH, set the environment variable PYTHON to the full path" 167251881Speter echo "to the Python executable, and re-run autogen.sh" 168251881Speter exit 1 169251881Speterfi 170251881Speter 171251881Speter# Compile SWIG headers into standalone C files if we are in release mode 172251881Speterif test -n "$RELEASE_MODE"; then 173251881Speter echo "Generating SWIG code..." 174251881Speter # Generate build-outputs.mk in non-release-mode, so that we can 175251881Speter # build the SWIG-related files 176251881Speter "$PYTHON" ./gen-make.py build.conf || gen_failed=1 177251881Speter 178251881Speter # Build the SWIG-related files 179362181Sdim make -f autogen-standalone.mk autogen-swig || gen_failed=1 180251881Speter 181369302Sdim # Remove the .swig_*checked files 182369302Sdim rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked 183251881Speterfi 184251881Speter 185251881Speterif test -n "$SKIP_DEPS"; then 186251881Speter echo "Creating build-outputs.mk (no dependencies)..." 187251881Speter "$PYTHON" ./gen-make.py $RELEASE_ARGS -s build.conf || gen_failed=1 188251881Speterelse 189251881Speter echo "Creating build-outputs.mk..." 190251881Speter "$PYTHON" ./gen-make.py $RELEASE_ARGS build.conf || gen_failed=1 191251881Speterfi 192251881Speter 193251881Speterif test -n "$RELEASE_MODE"; then 194251881Speter find build/ -name '*.pyc' -exec rm {} \; 195251881Speterfi 196251881Speter 197251881Speterrm autogen-standalone.mk 198251881Speter 199251881Speterif test -n "$gen_failed"; then 200251881Speter echo "ERROR: gen-make.py failed" 201251881Speter exit 1 202251881Speterfi 203251881Speter 204251881Speter# Produce config.h.in 205251881Speterecho "Creating svn_private_config.h.in..." 206251881Speter${AUTOHEADER:-autoheader} 207251881Speter 208289180Speter# If there's a config.cache file, we may need to delete it. 209251881Speter# If we have an existing configure script, save a copy for comparison. 210251881Speterif [ -f config.cache ] && [ -f configure ]; then 211251881Speter cp configure configure.$$.tmp 212251881Speterfi 213251881Speter 214251881Speter# Produce ./configure 215251881Speterecho "Creating configure..." 216251881Speter${AUTOCONF:-autoconf} 217251881Speter 218251881Speter# If we have a config.cache file, toss it if the configure script has 219251881Speter# changed, or if we just built it for the first time. 220251881Speterif [ -f config.cache ]; then 221251881Speter ( 222251881Speter [ -f configure.$$.tmp ] && cmp configure configure.$$.tmp > /dev/null 2>&1 223251881Speter ) || ( 224251881Speter echo "Tossing config.cache, since configure has changed." 225251881Speter rm config.cache 226251881Speter ) 227251881Speter rm -f configure.$$.tmp 228251881Speterfi 229251881Speter 230251881Speter# Remove autoconf 2.5x's cache directory 231251881Speterrm -rf autom4te*.cache 232251881Speter 233251881Speterecho "" 234251881Speterecho "You can run ./configure now." 235251881Speterecho "" 236251881Speterecho "Running autogen.sh implies you are a maintainer. You may prefer" 237251881Speterecho "to run configure in one of the following ways:" 238251881Speterecho "" 239251881Speterecho "./configure --enable-maintainer-mode" 240251881Speterecho "./configure --disable-shared" 241251881Speterecho "./configure --enable-maintainer-mode --disable-shared" 242251881Speterecho "./configure --disable-optimize --enable-debug" 243289180Speterecho "./configure CFLAGS='--flags-for-C' CXXFLAGS='--flags-for-C++'" 244251881Speterecho "" 245251881Speterecho "Note: If you wish to run a Subversion HTTP server, you will need" 246251881Speterecho "Apache 2.x. See the INSTALL file for details." 247251881Speterecho "" 248