#!/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
    if test -d .git; then
        REVISION=`git log --pretty="format:%h" | head -1`-git
    else
        # default to svn
        REVISION=`\`which svn\` info . 2> /dev/null | awk "/Revision:/{print \\$2}"`
    fi
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 -a 2>&1 | sed -e "/install/d"
autoconf -f

ln -f -s "`dirname \`readlink build-aux/missing\``/INSTALL"

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

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