|
| 1 | +#! /bin/sh |
| 2 | + |
| 3 | +srcdir=`dirname $0` |
| 4 | +test -z "$srcdir" && srcdir=. |
| 5 | + |
| 6 | +ORIGDIR=`pwd` |
| 7 | +cd $srcdir |
| 8 | + |
| 9 | +# FIXME: can replace this entire script with |
| 10 | +# the following line if we can require autoconf 2.60: |
| 11 | +# autoreconf -v --force --install || exit 1 |
| 12 | + |
| 13 | +PACKAGE=spice |
| 14 | + |
| 15 | +ACLOCAL_FLAGS="" |
| 16 | +LIBTOOLIZE=${LIBTOOLIZE-libtoolize} |
| 17 | +LIBTOOLIZE_FLAGS="--copy --force" |
| 18 | +AUTOHEADER=${AUTOHEADER-autoheader} |
| 19 | +AUTOMAKE_FLAGS="--add-missing --gnu" |
| 20 | +AUTOCONF=${AUTOCONF-autoconf} |
| 21 | + |
| 22 | +# automake 1.8 requires autoconf 2.58 |
| 23 | +# automake 1.7 requires autoconf 2.54 |
| 24 | +automake_min_vers=1.7 |
| 25 | +aclocal_min_vers=$automake_min_vers |
| 26 | +autoconf_min_vers=2.54 |
| 27 | +libtoolize_min_vers=1.4 |
| 28 | + |
| 29 | +# The awk-based string->number conversion we use needs a C locale to work |
| 30 | +# as expected. Setting LC_ALL overrides whether the user set LC_ALL, |
| 31 | +# LC_NUMERIC, or LANG. |
| 32 | +LC_ALL=C |
| 33 | + |
| 34 | +ARGV0=$0 |
| 35 | + |
| 36 | +# Allow invocation from a separate build directory; in that case, we change |
| 37 | +# to the source directory to run the auto*, then change back before running configure |
| 38 | +srcdir=`dirname $ARGV0` |
| 39 | +test -z "$srcdir" && srcdir=. |
| 40 | + |
| 41 | +ORIGDIR=`pwd` |
| 42 | + |
| 43 | +# Not all echo versions allow -n, so we check what is possible. This test is |
| 44 | +# based on the one in autoconf. |
| 45 | +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in |
| 46 | + *c*,-n*) ECHO_N= ;; |
| 47 | + *c*,* ) ECHO_N=-n ;; |
| 48 | + *) ECHO_N= ;; |
| 49 | +esac |
| 50 | + |
| 51 | + |
| 52 | +# some terminal codes ... |
| 53 | +boldface="`tput bold 2>/dev/null || true`" |
| 54 | +normal="`tput sgr0 2>/dev/null || true`" |
| 55 | +printbold() { |
| 56 | + echo $ECHO_N "$boldface" |
| 57 | + echo "$@" |
| 58 | + echo $ECHO_N "$normal" |
| 59 | +} |
| 60 | +printerr() { |
| 61 | + echo "$@" >&2 |
| 62 | +} |
| 63 | + |
| 64 | + |
| 65 | +# Usage: |
| 66 | +# compare_versions MIN_VERSION ACTUAL_VERSION |
| 67 | +# returns true if ACTUAL_VERSION >= MIN_VERSION |
| 68 | +compare_versions() { |
| 69 | + ch_min_version=$1 |
| 70 | + ch_actual_version=$2 |
| 71 | + ch_status=0 |
| 72 | + IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." |
| 73 | + set $ch_actual_version |
| 74 | + for ch_min in $ch_min_version; do |
| 75 | + ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes |
| 76 | + if [ -z "$ch_min" ]; then break; fi |
| 77 | + if [ -z "$ch_cur" ]; then ch_status=1; break; fi |
| 78 | + if [ $ch_cur -gt $ch_min ]; then break; fi |
| 79 | + if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi |
| 80 | + done |
| 81 | + IFS="$ch_save_IFS" |
| 82 | + return $ch_status |
| 83 | +} |
| 84 | + |
| 85 | +# Usage: |
| 86 | +# version_check PACKAGE VARIABLE CHECKPROGS MIN_VERSION SOURCE |
| 87 | +# checks to see if the package is available |
| 88 | +version_check() { |
| 89 | + vc_package=$1 |
| 90 | + vc_variable=$2 |
| 91 | + vc_checkprogs=$3 |
| 92 | + vc_min_version=$4 |
| 93 | + vc_source=$5 |
| 94 | + vc_status=1 |
| 95 | + |
| 96 | + vc_checkprog=`eval echo "\\$$vc_variable"` |
| 97 | + if [ -n "$vc_checkprog" ]; then |
| 98 | + printbold "using $vc_checkprog for $vc_package" |
| 99 | + return 0 |
| 100 | + fi |
| 101 | + |
| 102 | + printbold "checking for $vc_package >= $vc_min_version..." |
| 103 | + for vc_checkprog in $vc_checkprogs; do |
| 104 | + echo $ECHO_N " testing $vc_checkprog... " |
| 105 | + if $vc_checkprog --version < /dev/null > /dev/null 2>&1; then |
| 106 | + vc_actual_version=`$vc_checkprog --version | head -n 1 | \ |
| 107 | + sed 's/^.*[ ]\([0-9.]*[a-z]*\).*$/\1/'` |
| 108 | + if compare_versions $vc_min_version $vc_actual_version; then |
| 109 | + echo "found $vc_actual_version" |
| 110 | + # set variable |
| 111 | + eval "$vc_variable=$vc_checkprog" |
| 112 | + vc_status=0 |
| 113 | + break |
| 114 | + else |
| 115 | + echo "too old (found version $vc_actual_version)" |
| 116 | + fi |
| 117 | + else |
| 118 | + echo "not found." |
| 119 | + fi |
| 120 | + done |
| 121 | + if [ "$vc_status" != 0 ]; then |
| 122 | + printerr "***Error***: You must have $vc_package >= $vc_min_version installed" |
| 123 | + printerr " to build $PROJECT. Download the appropriate package for" |
| 124 | + printerr " from your distribution or get the source tarball at" |
| 125 | + printerr " $vc_source" |
| 126 | + printerr |
| 127 | + fi |
| 128 | + return $vc_status |
| 129 | +} |
| 130 | + |
| 131 | +version_check autoconf AUTOCONF $AUTOCONF $autoconf_min_vers \ |
| 132 | + "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-${autoconf_min_vers}.tar.gz" || DIE=1 |
| 133 | +version_check automake AUTOMAKE "$AUTOMAKE automake automake-1.10 automake-1.9 automake-1.8 automake-1.7" $automake_min_vers \ |
| 134 | + "http://ftp.gnu.org/pub/gnu/automake/automake-${automake_min_vers}.tar.gz" || DIE=1 |
| 135 | +ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/` |
| 136 | +version_check libtool LIBTOOLIZE "$LIBTOOLIZE glibtoolize libtoolize" $libtoolize_min_vers \ |
| 137 | + "http://ftp.gnu.org/pub/gnu/libtool/libtool-${libtool_min_vers}.tar.gz" || DIE=1 |
| 138 | + |
| 139 | +if test -n "$DIE"; then |
| 140 | + exit 1 |
| 141 | +fi |
| 142 | + |
| 143 | + |
| 144 | +if test -z "$*"; then |
| 145 | + echo "$ARGV0: Note: \`./configure' will be run with no arguments." |
| 146 | + echo " If you wish to pass any to it, please specify them on the" |
| 147 | + echo " \`$0' command line." |
| 148 | + echo |
| 149 | +fi |
| 150 | + |
| 151 | +do_cmd() { |
| 152 | + echo "$ARGV0: running \`$@'" |
| 153 | + $@ |
| 154 | +} |
| 155 | + |
| 156 | +# Run for top level directory |
| 157 | + |
| 158 | +printbold "Setting up $PACKAGE toplevel" |
| 159 | +cd $srcdir |
| 160 | +do_cmd $LIBTOOLIZE $LIBTOOLIZE_FLAGS |
| 161 | +do_cmd $ACLOCAL $ACLOCAL_FLAGS |
| 162 | +do_cmd $AUTOHEADER |
| 163 | +do_cmd $AUTOMAKE $AUTOMAKE_FLAGS |
| 164 | +do_cmd $AUTOCONF |
| 165 | + |
| 166 | +cd $ORIGDIR || exit $? |
| 167 | +rm -f config.cache |
| 168 | + |
| 169 | +do_cmd $srcdir/configure --enable-maintainer-mode ${1+"$@"} || exit 1 |
| 170 | + |
0 commit comments