summaryrefslogtreecommitdiff
path: root/autogen.sh
diff options
context:
space:
mode:
authorRob Taylor <rob.taylor@collabora.co.uk>2006-08-22 12:24:00 +0100
committerRob Taylor <rob.taylor@collabora.co.uk>2006-08-22 12:24:00 +0100
commitd49a2a2486cd60e22b360dda8ae5a50d25486667 (patch)
tree40fd469407212201f7f34672d8ee12912902ecba /autogen.sh
parent62419419257d6353c5f35001e1f538fca300f3c4 (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-xautogen.sh143
1 files changed, 101 insertions, 42 deletions
diff --git a/autogen.sh b/autogen.sh
index dd95150..0c407d7 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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