#! /bin/bash
# bootstrap -- Use this script to create generated files from a VCS checkout
# Copyright (C) 2000 Gary V. Vaughan
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

version="2.unknown"
months="Jan:01 Feb:02 Mar:03 Apr:04 May:05 Jun:06 Jul:07 Aug:08\
 Sep:09 Oct:10 Nov:11 Dec:12"

# Use git commit revision for package version

if head=$(git rev-parse --short --verify HEAD 2>/dev/null); then

	date=$(git-log --pretty=format:"%cD" -1 HEAD)

	# date='Fri, 17 Aug 2007 19:36:06 -0700'

	date=${date##*, }
	date=${date% [0-9][0-9]:*}
	day=${date%* [A-Z][a-z][a-z] *}
	year=${date##* [A-Z][a-z][a-z] 20}
	month=${date##${day} }
	month=${month%% 20${year}}
	month=${months##*${month}:}
	month=${month%% *}

	version=$(printf '%s.%s.%s-%s%s' ${year} ${month} ${day} g ${head})

	# uncommitted changes?
	if git diff-index HEAD | read dummy; then
		version=`printf '%s%s' ${version} -dirty`
	fi
fi

set -x

if [ "$1" ]; then
	version=$1
fi

sed -e s,@version@,${version},g configure.ac.in > configure.ac

aclocal
libtoolize --force --copy
autoheader
automake --foreign --add-missing --copy
autoconf

pushd lib && ./bootstrap ${version} && popd

if [ -e config.sub ]; then
	patch -p1 < config.sub.patch
fi
