diff options
| -rwxr-xr-x | bootstrap.sh | 137 | 
1 files changed, 136 insertions, 1 deletions
diff --git a/bootstrap.sh b/bootstrap.sh index 23680ce..0c24e30 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,3 +1,138 @@  #!/bin/sh +# Run this to generate all the initial makefiles, etc. + +DIE=0 +SRCDIR=`dirname $0` +BUILDDIR=`pwd` +srcfile=src/main.c + +debug () +# print out a debug message if DEBUG is a defined variable +{ +  if [ ! -z "$DEBUG" ]; then +    echo "DEBUG: $1" +  fi +} + +version_check () +# check the version of a package +# first argument : complain ('1') or not ('0') +# second argument : package name (executable) +# third argument : source download url +# rest of arguments : major, minor, micro version +{ +  COMPLAIN=$1 +  PACKAGE=$2 +  URL=$3 +  MAJOR=$4 +  MINOR=$5 +  MICRO=$6 + +  WRONG= + +  debug "major $MAJOR minor $MINOR micro $MICRO" +  VERSION=$MAJOR +  if [ ! -z "$MINOR" ]; then VERSION=$VERSION.$MINOR; else MINOR=0; fi +  if [ ! -z "$MICRO" ]; then VERSION=$VERSION.$MICRO; else MICRO=0; fi + +  debug "version $VERSION" +  echo "+ checking for $PACKAGE >= $VERSION ... " | tr -d '\n' + +  ($PACKAGE --version) < /dev/null > /dev/null 2>&1 || +  { +    echo +    echo "You must have $PACKAGE installed to compile $package." +    echo "Download the appropriate package for your distribution," +    echo "or get the source tarball at $URL" +    return 1 +  } +  # the following line is carefully crafted sed magic +  pkg_version=`$PACKAGE --version|head -n 1|sed 's/([^)]*)//g;s/^[a-zA-Z\.\ \-\/]*//;s/ .*$//'` +  debug "pkg_version $pkg_version" +  pkg_major=`echo $pkg_version | cut -d. -f1` +  pkg_minor=`echo $pkg_version | sed s/[-,a-z,A-Z].*// | cut -d. -f2` +  pkg_micro=`echo $pkg_version | sed s/[-,a-z,A-Z].*// | cut -d. -f3` +  [ -z "$pkg_minor" ] && pkg_minor=0 +  [ -z "$pkg_micro" ] && pkg_micro=0 + +  debug "found major $pkg_major minor $pkg_minor micro $pkg_micro" + +  #start checking the version +  if [ "$pkg_major" -lt "$MAJOR" ]; then +    WRONG=1 +  elif [ "$pkg_major" -eq "$MAJOR" ]; then +    if [ "$pkg_minor" -lt "$MINOR" ]; then +      WRONG=1 +    elif [ "$pkg_minor" -eq "$MINOR" -a "$pkg_micro" -lt "$MICRO" ]; then +      WRONG=1 +    fi +  fi + +  if [ ! -z "$WRONG" ]; then +   echo "found $pkg_version, not ok !" +   if [ "$COMPLAIN" -eq "1" ]; then +     echo +     echo "You must have $PACKAGE $VERSION or greater to compile $package." +     echo "Get the latest version from <$URL>." +     echo +   fi +   return 1 +  else +    echo "found $pkg_version, ok." +  fi +} + +version_check 1 "pkg-config" "http://pkgconfig.freedesktop.org/" 0 9 || DIE=1 +version_check 1 "autoconf" "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 56 || DIE=1 +version_check 1 "automake" "ftp://ftp.gnu.org/pub/gnu/automake/" 1 9 || DIE=1 +if [ "$DIE" -eq 1 ]; then +  exit 1 +fi + + +# Chdir to the srcdir, then run auto* tools. +cd $SRCDIR + +[ -f $srcfile ] || { +  echo "Are you sure $SRCDIR is a valid source directory?" +  exit 1 +} + +echo "+ running aclocal ..." +aclocal || { +  echo +  echo "aclocal failed - check that all needed development files are present on system" +  exit 1 +} +echo "+ running autoheader ... " +autoheader || { +  echo +  echo "autoheader failed" +  exit 1 +} +echo "+ running autoconf ... " +autoconf || { +  echo +  echo "autoconf failed" +  exit 1 +} +echo "+ running automake ... " +automake -a -c || { +  echo +  echo "automake failed" +  exit 1 +} + + +# Chdir back to the builddir before the configure step. +cd $BUILDDIR + +# now remove the cache, because it can be considered dangerous in this case +echo "+ removing config.cache ... " +rm -f config.cache + +echo +echo "Now type './configure && make' to compile." + +exit 0 -autoreconf -fisv  | 
