| #!/bin/sh |
| # |
| # |
| # 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. |
| # |
| # |
| |
| ### Run this to produce everything needed for configuration. ### |
| |
| |
| # Some shells can produce output when running 'cd' which interferes |
| # with the construct 'abs=`cd dir && pwd`'. |
| (unset CDPATH) >/dev/null 2>&1 && unset CDPATH |
| |
| # Run tests to ensure that our build requirements are met |
| RELEASE_MODE="" |
| RELEASE_ARGS="" |
| SKIP_DEPS="" |
| while test $# != 0; do |
| case "$1" in |
| --release) |
| RELEASE_MODE="$1" |
| RELEASE_ARGS="--release" |
| shift |
| ;; |
| -s) |
| SKIP_DEPS="yes" |
| shift |
| ;; |
| --) # end of option parsing |
| break |
| ;; |
| *) |
| echo "invalid parameter: '$1'" |
| exit 1 |
| ;; |
| esac |
| done |
| |
| # Generate aclocal.m4 |
| cp -f aclocal.m4.in aclocal.m4 |
| if test -n "$RELEASE_MODE"; then |
| cat <<EOF >>aclocal.m4 |
| |
| # Generated by 'autogen.sh --release' |
| AC_DEFUN([SVN_RELEASE_MODE],[1]) |
| EOF |
| fi |
| |
| # ### The order of parameters is important; buildcheck.sh depends on it and |
| # ### we don't want to copy the fancy option parsing loop there. For the |
| # ### same reason, all parameters should be quoted, so that buildcheck.sh |
| # ### sees an empty arg rather than missing one. |
| ./build/buildcheck.sh "$RELEASE_MODE" || exit 1 |
| |
| # Handle some libtool helper files |
| # |
| # ### eventually, we can/should toss this in favor of simply using |
| # ### APR's libtool. deferring to a second round of change... |
| # |
| |
| # Much like APR except we do not prefer libtool 1 over libtool 2. |
| libtoolize="`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`" |
| lt_major_version=`$libtoolize --version 2>/dev/null | sed -e 's/^[^0-9]*//' -e 's/\..*//' -e '/^$/d' -e 1q` |
| |
| if [ "x$libtoolize" = "x" ]; then |
| echo "libtoolize not found in path" |
| exit 1 |
| fi |
| |
| rm -f build/config.guess build/config.sub |
| $libtoolize --copy --automake --force |
| |
| ltpath="`dirname $libtoolize`" |
| |
| if [ "x$LIBTOOL_M4" = "x" ]; then |
| ltm4_error='(try setting the LIBTOOL_M4 environment variable)' |
| if [ -d "$ltpath/../share/aclocal/." ]; then |
| ltm4=`cd "$ltpath/../share/aclocal" && pwd` |
| else |
| echo "Libtool helper path not found $ltm4_error" |
| echo " expected at: '$ltpath/../share/aclocal'" |
| exit 1 |
| fi |
| else |
| ltm4_error="(the LIBTOOL_M4 environment variable is: $LIBTOOL_M4)" |
| ltm4="$LIBTOOL_M4" |
| fi |
| |
| ltfile="$ltm4/libtool.m4" |
| if [ ! -f "$ltfile" ]; then |
| echo "$ltfile not found $ltm4_error" |
| exit 1 |
| fi |
| |
| echo "Copying libtool helper: $ltfile" |
| # An ancient helper might already be present from previous builds, |
| # and it might be write-protected (e.g. mode 444, seen on FreeBSD). |
| # This would cause cp to fail and print an error message, but leave |
| # behind a potentially outdated libtool helper. So, remove before |
| # copying: |
| rm -f build/libtool.m4 |
| cp "$ltfile" build/libtool.m4 |
| |
| for file in ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4; do |
| rm -f build/$file |
| |
| if [ $lt_major_version -ge 2 ]; then |
| ltfile="$ltm4/$file" |
| |
| if [ ! -f "$ltfile" ]; then |
| echo "$ltfile not found $ltm4_error" |
| exit 1 |
| fi |
| |
| echo "Copying libtool helper: $ltfile" |
| cp "$ltfile" "build/$file" |
| fi |
| done |
| |
| if [ $lt_major_version -ge 2 ]; then |
| if [ "x$LIBTOOL_CONFIG" = "x" ]; then |
| ltconfig_error='(try setting the LIBTOOL_CONFIG environment variable)' |
| if [ -d "$ltpath/../share/libtool/config/." ]; then |
| ltconfig=`cd "$ltpath/../share/libtool/config" && pwd` |
| elif [ -d "$ltpath/../share/libtool/build-aux/." ]; then |
| ltconfig=`cd "$ltpath/../share/libtool/build-aux" && pwd` |
| else |
| echo "Autoconf helper path not found $ltconfig_error" |
| echo " expected at: '$ltpath/../share/libtool/config'" |
| echo " or: '$ltpath/../share/libtool/build-aux'" |
| exit 1 |
| fi |
| else |
| ltconfig_error="(the LIBTOOL_CONFIG environment variable is: $LIBTOOL_CONFIG)" |
| ltconfig="$LIBTOOL_CONFIG" |
| fi |
| |
| for file in config.guess config.sub; do |
| configfile="$ltconfig/$file" |
| |
| if [ ! -f "$configfile" ]; then |
| echo "$configfile not found $ltconfig_error" |
| exit 1 |
| fi |
| |
| echo "Copying autoconf helper: $configfile" |
| cp "$configfile" build/$file |
| done |
| fi |
| |
| # Create the file detailing all of the build outputs for SVN. |
| # |
| # Note: this dependency on Python is fine: only SVN developers use autogen.sh |
| # and we can state that dev people need Python on their machine. Note |
| # that running gen-make.py requires Python 2.7 or newer. |
| |
| PYTHON="`./build/find_python.sh`" |
| if test -z "$PYTHON"; then |
| echo "Python 2.7 or later is required to run autogen.sh" |
| echo "If you have a suitable Python installed, but not on the" |
| echo "PATH, set the environment variable PYTHON to the full path" |
| echo "to the Python executable, and re-run autogen.sh" |
| exit 1 |
| fi |
| |
| # Compile SWIG headers into standalone C files if we are in release mode |
| if test -n "$RELEASE_MODE"; then |
| echo "Generating SWIG code..." |
| # Generate build-outputs.mk in non-release-mode, so that we can |
| # build the SWIG-related files |
| "$PYTHON" ./gen-make.py build.conf || gen_failed=1 |
| |
| # Build the SWIG-related files |
| make -f autogen-standalone.mk autogen-swig || gen_failed=1 |
| |
| # Remove the .swig_*checked files |
| rm -f .swig_checked .swig_pl_checked .swig_py_checked .swig_rb_checked |
| fi |
| |
| if test -n "$SKIP_DEPS"; then |
| echo "Creating build-outputs.mk (no dependencies)..." |
| "$PYTHON" ./gen-make.py $RELEASE_ARGS -s build.conf || gen_failed=1 |
| else |
| echo "Creating build-outputs.mk..." |
| "$PYTHON" ./gen-make.py $RELEASE_ARGS build.conf || gen_failed=1 |
| fi |
| |
| if test -n "$RELEASE_MODE"; then |
| find build/ -name '*.pyc' -exec rm {} \; |
| fi |
| |
| rm autogen-standalone.mk |
| |
| if test -n "$gen_failed"; then |
| echo "ERROR: gen-make.py failed" |
| exit 1 |
| fi |
| |
| # Produce config.h.in |
| echo "Creating svn_private_config.h.in..." |
| ${AUTOHEADER:-autoheader} |
| |
| # If there's a config.cache file, we may need to delete it. |
| # If we have an existing configure script, save a copy for comparison. |
| if [ -f config.cache ] && [ -f configure ]; then |
| cp configure configure.$$.tmp |
| fi |
| |
| # Produce ./configure |
| echo "Creating configure..." |
| ${AUTOCONF:-autoconf} |
| |
| # If we have a config.cache file, toss it if the configure script has |
| # changed, or if we just built it for the first time. |
| if [ -f config.cache ]; then |
| ( |
| [ -f configure.$$.tmp ] && cmp configure configure.$$.tmp > /dev/null 2>&1 |
| ) || ( |
| echo "Tossing config.cache, since configure has changed." |
| rm config.cache |
| ) |
| rm -f configure.$$.tmp |
| fi |
| |
| # Remove autoconf 2.5x's cache directory |
| rm -rf autom4te*.cache |
| |
| echo "" |
| echo "You can run ./configure now." |
| echo "" |
| echo "Running autogen.sh implies you are a maintainer. You may prefer" |
| echo "to run configure in one of the following ways:" |
| echo "" |
| echo "./configure --enable-maintainer-mode" |
| echo "./configure --disable-shared" |
| echo "./configure --enable-maintainer-mode --disable-shared" |
| echo "./configure --disable-optimize --enable-debug" |
| echo "./configure CFLAGS='--flags-for-C' CXXFLAGS='--flags-for-C++'" |
| echo "" |
| echo "Note: If you wish to run a Subversion HTTP server, you will need" |
| echo "Apache 2.x. See the INSTALL file for details." |
| echo "" |