#!/bin/sh -e

# Licensed 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.

get () {
    variable_name=$1
    echo "changequote(\`[', \`]')" > acinclude.m4.tmp
    sed -e "s/m4_//" < acinclude.m4.in >> acinclude.m4.tmp
    echo $variable_name >> acinclude.m4.tmp
    if test -x "`which gm4 2> /dev/null || true`"; then
        gm4 acinclude.m4.tmp | grep -v "^$" || true
    else
        if test -x "`which m4 2> /dev/null || true`"; then
            m4 acinclude.m4.tmp | grep -v "^$" || true
        else
            echo unknown
        fi
    fi
    rm -f acinclude.m4.tmp
}

mkdir -p build-aux

if test -z "$REVISION"; then
    REVISION=`\`which svn\` info . 2> /dev/null | awk "/Revision:/{print \\$2}"`
fi
if test -z "`get LOCAL_VERSION_STAGE`" -o -z "$REVISION"; then
    sed "s/%release%//" < acinclude.m4.in > acinclude.m4
else
    sed "s/%release%/$REVISION/" < acinclude.m4.in > acinclude.m4
fi

gunzip -c m4/ac_check_icu.m4.gz > m4/ac_check_icu.m4
gunzip -c m4/ac_check_curl.m4.gz > m4/ac_check_curl.m4

if test -x "`which glibtoolize 2> /dev/null || true`"; then
    glibtoolize -f -c --automake
else
    libtoolize -f -c --automake
fi

aclocal -I m4
autoheader -f
automake -f -c -a --gnits 2>&1 | sed -e "/install/d"
autoconf -f

cat << EOF
You have bootstrapped Apache CouchDB, time to relax.

Run \`./configure' to configure the source before you install.
EOF
