Index: bootstrap.sh =================================================================== --- bootstrap.sh (revision 2017) +++ bootstrap.sh (working copy) @@ -14,28 +14,75 @@ # #******************************************* -# Check for required version and die if unhappy -libtoolize --version | grep 1.5.20 > /dev/null || - ( - echo You have the wrong, or missing version of libtool. - echo The minumum required version is 1.5.20 and is available from: - echo http://www.gnu.org/software/libtool/ - ) +debug () +{ + # Outputs debug statments if DEBUG var is set + if [ ! -z "$DEBUG" ]; then + echo "DEBUG: $1" + fi +} +version_compare() +{ + # Checks a command is found and the version is high enough + PROGRAM=$1 + MAJOR=$2 + MINOR=$3 + MICRO=$4 + test -z "$MAJOR" && MAJOR=0 + test -z "$MINOR" && MINOR=0 + test -z "$MICRO" && MICRO=0 -automake --version | grep 1.9.6 > /dev/null || - ( - echo You have the wrong, or missing version of automake. - echo The minumum required version is 1.9.6 and is available from: - echo http://www.gnu.org/software/automake/ - ) + debug "Checking $PROGRAM >= $MAJOR.$MINOR.$MICRO" -autoconf --version | grep 2.59 > /dev/null || - ( - echo You have the wrong, or missing version of autoconf. - echo The minumum required version is 2.59 and is available from: - echo http://www.gnu.org/software/autoconf/ - ) + COMMAND=`/bin/which $PROGRAM` + if [ -z $COMMAND ]; then + echo "$PROGRAM is required and was not found." + return 1 + else + debug "Found $COMMAND" + fi + INS_VER=`$COMMAND --version | head -1 | sed 's/[^0-9]*//' | cut -d' ' -f1` + INS_MAJOR=`echo $INS_VER | cut -d. -f1 | sed s/[a-zA-Z\-].*//g` + INS_MINOR=`echo $INS_VER | cut -d. -f2 | sed s/[a-zA-Z\-].*//g` + INS_MICRO=`echo $INS_VER | cut -d. -f3 | sed s/[a-zA-Z\-].*//g` + test -z "$INS_MAJOR" && INS_MAJOR=0 + test -z "$INS_MINOR" && INS_MINOR=0 + test -z "$INS_MICRO" && INS_MICRO=0 + debug "Installed version: $INS_VER" + + if [ "$INS_MAJOR" -gt "$MAJOR" ]; then + debug "MAJOR: $INS_MAJOR > $MAJOR" + return 0 + elif [ "$INS_MAJOR" -eq "$MAJOR" ]; then + debug "MAJOR: $INS_MAJOR = $MAJOR" + if [ "$INS_MINOR" -gt "$MINOR" ]; then + debug "MINOR: $INS_MINOR > $MINOR" + return 0 + elif [ "$INS_MINOR" -eq "$MINOR" ]; then + if [ "$INS_MICRO" -ge "$MICRO" ]; then + debug "MICRO: $INS_MICRO >= $MICRO" + return 0 + else + debug "MICRO: $INS_MICRO < $MICRO" + fi + else + debug "MINOR: $INS_MINOR < $MINOR" + fi + else + debug "MAJOR: $INS_MAJOR < $MAJOR" + fi + + echo "You have the wrong version of $PROGRAM. The minimum required version is $MAJOR.$MINOR.$MICRO" + echo " and the version installed is $INS_MAJOR.$INS_MINOR.$INS_MICRO ($COMMAND)." + return 1 +} + +# Check for required version and die if unhappy +version_compare libtoolize 1 5 20 || exit 1 +version_compare automake 1 9 6 || exit 1 +version_compare autoconf 2 59 || exit 1 + libtoolize --copy --force --ltdl aclocal -I acmacros autoheader --force