#!/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.
#
#

# buildconf: Build the support scripts needed to compile from a
#            checked-out version of the source code.

if [ "$1" = "--verbose" -o "$1" = "-v" ]; then
    verbose="--verbose"
    shift
fi

# Verify that the builder has the right config tools installed
#
build/buildcheck.sh $verbose || exit 1

libtoolize=`build/PrintPath glibtoolize1 glibtoolize libtoolize15 libtoolize14 libtoolize`
if [ "x$libtoolize" = "x" ]; then
    echo "libtoolize not found in path"
    exit 1
fi

# Create the libtool helper files
#
# Note: we copy (rather than link) them to simplify distribution.
# Note: APR supplies its own config.guess and config.sub -- we do not
#       rely on libtool's versions
#
echo "Copying libtool helper files ..."

# 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 libtool.m4)

$libtoolize --copy --automake --force $verbose

if [ -f libtool.m4 ]; then 
   ltfile=`pwd`/libtool.m4
elif grep all_pkgmacro_files $libtoolize > /dev/null; then
    # libtool 2.x
   aclocal_dir=`sed -n '/^aclocaldir=/{s/.*=//;p;q;}' < $libtoolize`
   ltfiles=`sed -n '/^all_pkgmacro_files=/{s/.*=//;;s/"//;p;q;}' < $libtoolize`
   for f in $ltfiles; do
       test -f "$aclocal_dir/$f" && cp "$aclocal_dir/$f" build
   done
   ltfile=$aclocal_dir/libtool.m4
else
   ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \
                   < $libtoolize`"
   ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`}
   # Expecting the code above to be very portable, but just in case...
   if [ -z "$ltfile" -o ! -f "$ltfile" ]; then
     ltpath=`dirname $libtoolize`
     ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4
   fi
fi
  
if [ ! -f $ltfile ]; then
    echo "$ltfile not found"
    exit 1
fi

echo "buildconf: Using libtool.m4 at ${ltfile}."

cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4

# libtool.m4 from 1.6 requires ltsugar.m4
if [ -f ltsugar.m4 ]; then
   rm -f build/ltsugar.m4
   mv ltsugar.m4 build/ltsugar.m4
fi

# Clean up any leftovers
rm -f aclocal.m4 libtool.m4

#
# Generate the autoconf header and ./configure
#
echo "Creating include/arch/unix/apr_private.h.in ..."
${AUTOHEADER:-autoheader} $verbose

echo "Creating configure ..."
### do some work to toss config.cache?
${AUTOCONF:-autoconf} $verbose

# Remove autoconf 2.5x's cache directory
rm -rf autom4te*.cache

echo "Generating 'make' outputs ..."
build/gen-build.py $verbose make

# Create RPM Spec file
if [ -f `which cut` ]; then
  echo rebuilding rpm spec file
  ( REVISION=`build/get-version.sh all include/apr_version.h APR`
    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/apr.spec.in | \
    sed -e "s/APR_VERSION/$VERSION/" \
        -e "s/APR_RELEASE/$RELEASE/" \
    > apr.spec )
fi

exit 0
