summaryrefslogtreecommitdiffstats
path: root/autogen.sh
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-28 21:07:21 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-28 21:07:21 +0000
commitcbf399de96bff883ae5e18bf78220ed179e834b2 (patch)
treec43ba7fe76403b6591956f4befe60e611f2b1fde /autogen.sh
parent75abeb989cf10c4b23a3d387e969aa6475562f8c (diff)
downloadlasso-cbf399de96bff883ae5e18bf78220ed179e834b2.tar.gz
lasso-cbf399de96bff883ae5e18bf78220ed179e834b2.tar.xz
lasso-cbf399de96bff883ae5e18bf78220ed179e834b2.zip
revamped autogen.sh so it works on FreeBSD (with many thanks to
gnome-autogen.sh)
Diffstat (limited to 'autogen.sh')
-rwxr-xr-xautogen.sh324
1 files changed, 164 insertions, 160 deletions
diff --git a/autogen.sh b/autogen.sh
index 40449a38..edf75f0c 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -10,197 +10,201 @@
# (e.g. in bash) DRYRUN=1 ./autogen.sh
# will not do any configuring but will emit the programs that would be run.
#
-# This script is based on similar scripts used in various tools
-# commonly made available via CVS and used with GNU automake.
-# Try 'locate autogen.sh' on your system and see what you get.
+# This script is based on similar scripts used in various free software
+# projects; notably the gnome-autogen.sh script used in many GNOME programs.
#
-PACKAGE=lasso
-
-SRCDIR=`dirname $0`
-test -z "$SRCDIR" && SRCDIR=.
-
-cd $SRCDIR
-DIE=
+DIE=0
if test "z$DRYRUN" != "z"; then
DRYRUN=echo
fi
-echo "- Define minimal version constants."
-automake_min_vers=1.8
-aclocal_min_vers=$automake_min_vers
-autoconf_min_vers=2.53
-libtoolize_min_vers=1.5
-swig_min_vers=1.3
+# Not all echo versions allow -n, so we check what is possible. This test is
+# based on the one in autoconf.
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ;;
+ *c*,* ) ECHO_N=-n ;;
+ *) ECHO_N= ;;
+esac
+
+# some terminal codes ...
+boldface="`tput bold 2>/dev/null`"
+normal="`tput sgr0 2>/dev/null`"
+printbold() {
+ echo $ECHO_N "$boldface"
+ echo "$@"
+ echo $ECHO_N "$normal"
+}
+printerr() {
+ echo "$@" >&2
+}
+
+# Usage:
+# compare_versions MIN_VERSION ACTUAL_VERSION
+# returns true if ACTUAL_VERSION >= MIN_VERSION
+compare_versions() {
+ ch_min_version=$1
+ ch_actual_version=$2
+ ch_status=0
+ IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="."
+ set $ch_actual_version
+ for ch_min in $ch_min_version; do
+ ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes
+ if [ -z "$ch_min" ]; then break; fi
+ if [ -z "$ch_cur" ]; then ch_status=1; break; fi
+ if [ $ch_cur -gt $ch_min ]; then break; fi
+ if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi
+ done
+ IFS="$ch_save_IFS"
+ return $ch_status
+}
+
+# Usage:
+# version_check PACKAGE VARIABLE CHECKPROGS MIN_VERSION SOURCE
+# checks to see if the package is available
+version_check() {
+ vc_package=$1
+ vc_variable=$2
+ vc_checkprogs=$3
+ vc_min_version=$4
+ vc_source=$5
+ vc_status=1
+
+ vc_checkprog=`eval echo "\\$$vc_variable"`
+ if [ -n "$vc_checkprog" ]; then
+ printbold "using $vc_checkprog for $vc_package"
+ return 0
+ fi
+
+ printbold "checking for $vc_package >= $vc_min_version..."
+ for vc_checkprog in $vc_checkprogs; do
+ echo $ECHO_N " testing $vc_checkprog... "
+ if $vc_checkprog --version < /dev/null > /dev/null 2>&1 || \
+ $vc_checkprog -version < /dev/null > /dev/null 2>&1 ; then
+ if [ "$vc_package" = "swig" ]; then
+ vc_actual_version=`$vc_checkprog -version 2>&1 | head -n 2 | \
+ tail -1 | sed 's/^.*[ ]\([0-9.]*[a-z]*\).*$/\1/'`
+ else
+ vc_actual_version=`$vc_checkprog --version | head -n 1 | \
+ sed 's/^.*[ ]\([0-9.]*[a-z]*\).*$/\1/'`
+ fi
+ if compare_versions $vc_min_version $vc_actual_version; then
+ echo "found $vc_actual_version"
+ # set variable
+ eval "$vc_variable=$vc_checkprog"
+ vc_status=0
+ break
+ else
+ echo "too old (found version $vc_actual_version)"
+ fi
+ else
+ echo "not found."
+ fi
+ done
+ if [ "$vc_status" != 0 ]; then
+ printerr "***Error***: You must have $vc_package >= $vc_min_version installed"
+ printerr " to build $PKG_NAME. Download the appropriate package for"
+ printerr " from your distribution or get the source tarball at"
+ printerr " $vc_source"
+ printerr
+ fi
+ return $vc_status
+}
+
+printbold "checking this is lasso top-level directory..."
+test -f lasso/lasso.h || {
+ printerr "***Error***: You must run this script in lasso top-level directory"
+ exit 1
+}
+
+REQUIRED_AUTOCONF_VERSION=2.53
+REQUIRED_AUTOMAKE_VERSION=1.8
+REQUIRED_LIBTOOL_VERSION=1.5
+REQUIRED_SWIG_VERSION=1.3.22
+REQUIRED_PKG_CONFIG_VERSION=0.14.0
+
# For cygwin wrapper and perphas others ?
-WANT_AUTOCONF_VER=$autoconf_min_vers
-WANT_AUTOMAKE_VER=$automake_min_vers
-WANT_LIBTOOL_VER=$libtoolize_min_vers
+WANT_AUTOCONF_VER=$REQUIRED_AUTOCONF_VERSION
+WANT_AUTOMAKE_VER=$REQUIRED_AUTOMAKE_VERSION
+WANT_LIBTOOL_VER=$REQUIRED_LIBTOOL_VERSION
export WANT_AUTOCONF_VER WANT_AUTOMAKE_VER WANT_LIBTOOL_VER
-echo "- Define autotools programs command line arguments."
-echo " - Add missing required files to the package by symbolic links."
automake_args=--add-missing
autoconf_args=
aclocal_args="-I macros"
-echo - Store the used shell interpreter name.
program=`basename $0`
-echo " - Define autotool program commands."
-autoconf=autoconf
-automake=automake-1.8
-aclocal=aclocal-1.8
-
-echo "- Check autoconf version."
-if ($autoconf --version) < /dev/null > /dev/null 2>&1 ; then
- if ($autoconf --version | awk 'NR==1 { if( $3 >= '$autoconf_min_vers') \
- exit 1; exit 0; }');
- then
- echo "$program: ERROR: \`$autoconf' is too old."
- echo " (version $autoconf_min_vers or newer is required)"
- DIE="yes"
- fi
-else
- echo
- echo "$program: ERROR: You must have \`$autoconf' installed to compile $PACKAGE."
- echo " (version $autoconf_min_vers or newer is required)"
- DIE="yes"
-fi
+WANT_AUTOCONF_2_5=1 # for Mandrake wrapper
+export WANT_AUTOCONF_2_5
+version_check autoconf AUTOCONF 'autoconf2.50 autoconf autoconf-2.53 autoconf253' $REQUIRED_AUTOCONF_VERSION \
+ "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-$REQUIRED_AUTOCONF_VERSION.tar.gz" || DIE=1
+AUTOHEADER=`echo $AUTOCONF | sed s/autoconf/autoheader/`
-echo "- Check automake version."
-if ($automake --version) < /dev/null > /dev/null 2>&1 ; then
- if ($automake --version | awk 'NR==1 { if( $4 >= '$automake_min_vers') \
- exit 1; exit 0; }');
- then
- echo "$program: ERROR: \`$automake' is too old."
- echo " (version $automake_min_vers or newer is required)"
- DIE="yes"
- fi
- if ($aclocal --version) < /dev/null > /dev/null 2>&1; then
- if ($aclocal --version | awk 'NR==1 { if( $4 >= '$aclocal_min_vers' ) \
- exit 1; exit 0; }' );
- then
- echo "$program: ERROR: \`$aclocal' is too old."
- echo " (version $aclocal_min_vers or newer is required)"
- DIE="yes"
- fi
- else
- echo
- echo "$program: ERROR: Missing \`$aclocal'"
- echo " The version of $automake installed doesn't appear recent enough."
- DIE="yes"
- fi
-else
- echo
- echo "$program: ERROR: You must have \`$automake' installed to compile $PACKAGE."
- echo " (version $automake_min_vers or newer is required)"
- DIE="yes"
-fi
+case $REQUIRED_AUTOMAKE_VERSION in
+ 1.4*) automake_progs="automake-1.4" ;;
+ 1.5*) automake_progs="automake-1.5 automake-1.6 automake-1.7 automake-1.8 automake-1.9" ;;
+ 1.6*) automake_progs="automake-1.6 automake-1.7 automake-1.8 automake-1.9" ;;
+ 1.7*) automake_progs="automake-1.7 automake-1.8 automake-1.9" ;;
+ 1.8*) automake_progs="automake-1.8 automake-1.9" ;;
+ 1.9*) automake_progs="automake-1.9" ;;
+esac
-echo "- Check Libtoolize version."
-if (libtoolize --version) < /dev/null > /dev/null 2>&1 ; then
- if (libtoolize --version | awk 'NR==1 { if( $4 >= '$libtoolize_min_vers') \
- exit 1; exit 0; }');
- then
- echo "$program: ERROR: \`libtoolize' is too old."
- echo " (version $libtoolize_min_vers or newer is required)"
- DIE="yes"
- fi
-else
- echo
- echo "$program: ERROR: You must have \`libtoolize' installed to compile $PACKAGE."
- echo " (version $libtoolize_min_vers or newer is required)"
- DIE="yes"
-fi
+version_check automake AUTOMAKE "$automake_progs" $REQUIRED_AUTOMAKE_VERSION \
+ "http://ftp.gnu.org/pub/gnu/automake/automake-$REQUIRED_AUTOMAKE_VERSION.tar.gz" || DIE=1
+ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/`
+version_check swig SWIG "swig-1.3 swig" $REQUIRED_SWIG_VERSION \
+ "http://prdownloads.sourceforge.net/swig/swig-$REQUIRED_SWIG_VERSION.tar.gz" || DIE=1
-echo "- Check swig version."
-if (swig -help) </dev/null >/dev/null 2>&1; then
- swig_version=`swig -version 2>&1 |sed -ne 's/^SWIG Version //p'`
- swig_version_dec=`echo $swig_version | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
- swig_min_version_dec=`echo $swig_min_vers | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'`
+version_check libtool LIBTOOLIZE libtoolize $REQUIRED_LIBTOOL_VERSION \
+ "http://ftp.gnu.org/pub/gnu/libtool/libtool-$REQUIRED_LIBTOOL_VERSION.tar.gz" || DIE=1
- if test $swig_version_dec -lt $swig_min_version_dec; then
- echo "$program: WARNING: \`swig' is too old."
- echo " (version $swig_min_vers or newer is required)"
-# DIE="yes"
- fi
-fi
+version_check pkg-config PKG_CONFIG pkg-config $REQUIRED_PKG_CONFIG_VERSION \
+ "'http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-$REQUIRED_PKG_CONFIG_VERSION.tar.gz" || DIE=1
# - If something went wrong, exit with error code:1.
-if test "z$DIE" != "z"; then
- exit 1
+if [ "$DIE" -eq 1 ]; then
+ exit 1
fi
-echo - Check if we are in the top-level lasso directory.
-test -f lasso/lasso.h || {
- pwd
- echo "You must run this script in the top-level lasso directory"
- exit 1
-}
-
if test -z "$*"; then
- echo "I am going to run ./configure with no arguments - if you wish "
- echo "to pass any to it, please specify them on the $0 command line."
+ printerr "**Warning**: I am going to run \`configure' with no arguments."
+ printerr "If you wish to pass any to it, please specify them on the"
+ printerr \`$0\'" command line."
fi
-echo "- Clean up autotool distribution programs."
-echo " - libtool stuff."
-rm -f ltconfig ltmain.sh libtool
-echo " - autoconf generated files"
-rm -f configure
-echo " - automake generated files"
-rm -f missing depcomp
-echo " - automake cache file."
-rm -rf autom4te.cache
-
-echo "- Auto generate autoconf configuration files."
-for autoconfile in `find $SRCDIR -name configure.ac -print`
-do
- dir=`dirname $autoconfile`
- if test -f $dir/NO-AUTO-GEN; then
- echo $program: Skipping $dir -- flagged as no auto-gen
- else
- echo $program: Processing directory $dir
- ( cd $dir
- echo "$program: Running libtoolize --copy --automake"
- $DRYRUN rm -f ltmain.sh libtool
- $DRYRUN libtoolize --copy --automake
-
- aclocalinclude="$ACLOCAL_FLAGS"
- echo "$program: Running aclocal $aclocalinclude"
- $DRYRUN $aclocal $aclocal_args
- if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then
- echo "$program: Running autoheader"
- $DRYRUN autoheader
- fi
- echo "$program: Running automake $am_opt"
- $DRYRUN $automake $automake_args $am_opt
- echo "$program: Running autoconf"
- $DRYRUN $autoconf $autoconf_args
-
- )
- fi
-done
-
-echo "- Clean up configuration cache."
-rm -f config.cache
-
-
-conf_flags="--enable-compile-warnings"
-
-echo "- Set and export autotools environment variables."
-AUTOMAKE=$automake
-AUTOCONF=$autoconf
-ACLOCAL=$aclocal
+# cleaning up some files
+$DRYRUN rm -f ltconfig ltmain.sh libtool
+$DRYRUN rm -f configure
+$DRYRYN rm -f missing depcomp
+$DRYRUN rm -rf autom4te.cache
+
+printbold "Running $LIBTOOLIZE..."
+$DRYRUN $LIBTOOLIZE --force --copy || exit 1
+
+printbold "Running $ACLOCAL..."
+$DRYRUN $ACLOCAL $aclocal_args || exit 1
+
+printbold "Running $AUTOHEADER..."
+$DRYRUN $AUTOHEADER || exit 1
+
+printbold "Running $AUTOMAKE..."
+$DRYRUN $AUTOMAKE $automake_args $am_opt
+
+printbold "Running $AUTOCONF..."
+$DRYRUN $AUTOCONF $autoconf_args
+
+printbold "Cleaning up configuration cache..."
+$DRYRUN rm -f config.cache
+
export AUTOMAKE AUTOCONF ACLOCAL
-echo "$program: Running ./configure $conf_flags $@ ..."
+printbold Running ./configure $conf_flags "$@" ...
if test "z$DRYRUN" = "z"; then
- $DRYRUN ./configure $conf_flags "$@" \
- && echo "Now type 'make' to compile lasso."
+ ./configure $conf_flags "$@" \
+ && echo "Now type 'make' to compile lasso." || exit 1
else
$DRYRUN ./configure $conf_flags "$@"
fi