diff options
author | Rob Taylor <rob.taylor@collabora.co.uk> | 2006-08-22 12:24:00 +0100 |
---|---|---|
committer | Rob Taylor <rob.taylor@collabora.co.uk> | 2006-08-22 12:24:00 +0100 |
commit | d49a2a2486cd60e22b360dda8ae5a50d25486667 (patch) | |
tree | 40fd469407212201f7f34672d8ee12912902ecba /autogen.sh | |
parent | 62419419257d6353c5f35001e1f538fca300f3c4 (diff) |
Modifed autogen.sh to check for autotools an gtkdocize versions
autogen.sh now does a full check for all the correct versions of autotools. It uses autoreconf to do the various steps. It also checks for correct gtkdocize version and pretty prints a bit, a-la gnome-autogen.sh.
Diffstat (limited to 'autogen.sh')
-rwxr-xr-x | autogen.sh | 143 |
1 files changed, 101 insertions, 42 deletions
@@ -11,68 +11,127 @@ PROJECT=dbus-glib TEST_TYPE=-f FILE=dbus-glib-1.pc.in -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have autoconf installed to compile $PROJECT." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 +# 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 } -AUTOMAKE=automake-1.9 -ACLOCAL=aclocal-1.9 - -($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || { - AUTOMAKE=automake - ACLOCAL=aclocal +# 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 } -($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have automake installed to compile $PROJECT." - echo "Get ftp://ftp.cygnus.com/pub/home/tromey/automake-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 +# 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; then + vc_actual_version=`$vc_checkprog --version | head -n 1 | \ + sed 's/^.*[ ]\([0-9.]*[a-z]*\).*$/\1/'` + 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 $PROJECT. Download the appropriate package for" + printerr " from your distribution or get the source tarball at" + printerr " $vc_source" + printerr + fi + return $vc_status } -(libtoolize --version) < /dev/null > /dev/null 2>&1 || { +#tell Mandrake autoconf wrapper we want autoconf 2.5x, not 2.13 +WANT_AUTOCONF_2_5=1 +export WANT_AUTOCONF_2_5 +version_check autoreconf AUTORECONF 'autoreconf' 2.59 \ + "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.59.tar.gz" || DIE=1 - echo - echo "You must have libtoolize installed to compile $PROJECT." - echo "Install the libtool package from ftp.gnu.org or a mirror." - DIE=1 -} +automake_progs="automake automake-1.9" -if test "$DIE" -eq 1; then - exit 1 -fi +version_check automake AUTOMAKE "$automake_progs" 1.9 \ + "http://ftp.gnu.org/pub/gnu/automake/automake-1.9.tar.gz" || DIE=1 +ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/` + +version_check gtkdoc GTKDOC 'gtkdoc-scan' 1.6 \ + "http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/" || DIE=1 test $TEST_TYPE $FILE || { - echo "You must run this script in the top-level $PROJECT directory" + printbold "You must run this script in the top-level $PROJECT 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." + printbold + printbold "I am going to run ./configure with no arguments - if you wish " + printbold "to pass any to it, please specify them on the $0 command line." + printbold fi -libtoolize --copy --force gtkdocize || echo "gtkdocize failed" -echo $ACLOCAL $ACLOCAL_FLAGS -$ACLOCAL $ACLOCAL_FLAGS - -## optionally feature autoheader -(autoheader --version) < /dev/null > /dev/null 2>&1 && autoheader - -$AUTOMAKE -a $am_opt -autoconf || echo "autoconf failed - version 2.5x is probably required" - +export AUTOMAKE ACLOCAL +autoreconf --install || exit 1 +DIE=0 cd $ORIGDIR run_configure=true |