From 236b692a78964d08287b9adc208fda9e2b0a989b Mon Sep 17 00:00:00 2001 From: Uri Lublin Date: Thu, 7 Jan 2010 15:26:01 +0200 Subject: spice: autogen.sh: call autogen.sh.shared separately from subdirs (subdir config) Move original autogen.sh to autogen.sh.shared Create links in each subdir (subdir/autogen.sh --> ../autogem.sh.shared) Make new autogen.sh which simply 1. cd subdir && ./autogen.sh 2. run autogen.sh.shared for the current dir (spice) Update all Makefile.am accordingly (dist-hook). Signed-off-by: Yaniv Kamay Signed-off-by: Uri Lublin --- autogen.sh | 184 ++++------------------------------------------------- autogen.sh.shared | 158 +++++++++++++++++++++++++++++++++++++++++++++ client/Makefile.am | 2 +- client/autogen.sh | 1 + common/Makefile.am | 2 +- common/autogen.sh | 1 + server/Makefile.am | 2 +- server/autogen.sh | 1 + 8 files changed, 176 insertions(+), 175 deletions(-) create mode 100755 autogen.sh.shared create mode 120000 client/autogen.sh create mode 120000 common/autogen.sh create mode 120000 server/autogen.sh diff --git a/autogen.sh b/autogen.sh index 140a31d7..aed44404 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,33 +1,7 @@ -#! /bin/sh +#!/bin/sh set -e # exit on errors -# FIXME: can replace this entire script with -# the following line if we can require autoconf 2.60: -# autoreconf -v --force --install || exit 1 - -PACKAGE=spice - -ACLOCAL_FLAGS="" -LIBTOOLIZE=${LIBTOOLIZE-libtoolize} -LIBTOOLIZE_FLAGS="--copy --force" -AUTOHEADER=${AUTOHEADER-autoheader} -AUTOMAKE=${AUTOMAKE-automake} -AUTOMAKE_FLAGS="--add-missing --gnu" -AUTOCONF=${AUTOCONF-autoconf} - -# automake 1.8 requires autoconf 2.58 -# automake 1.7 requires autoconf 2.54 -automake_min_vers=1.7 -aclocal_min_vers=$automake_min_vers -autoconf_min_vers=2.54 -libtoolize_min_vers=1.4 - -# The awk-based string->number conversion we use needs a C locale to work -# as expected. Setting LC_ALL overrides whether the user set LC_ALL, -# LC_NUMERIC, or LANG. -LC_ALL=C - ARGV0=$0 # Allow invocation from a separate build directory; in that case, we change @@ -38,154 +12,20 @@ test -z "$srcdir" && srcdir=. ORIGDIR=`pwd` cd $srcdir -# 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 || true`" -normal="`tput sgr0 2>/dev/null || true`" -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; 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 -} - -version_check autoconf AUTOCONF $AUTOCONF $autoconf_min_vers \ - "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-${autoconf_min_vers}.tar.gz" || DIE=1 -version_check automake AUTOMAKE "$AUTOMAKE automake automake-1.10 automake-1.9 automake-1.8 automake-1.7" $automake_min_vers \ - "http://ftp.gnu.org/pub/gnu/automake/automake-${automake_min_vers}.tar.gz" || DIE=1 -ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/` -version_check libtool LIBTOOLIZE "$LIBTOOLIZE glibtoolize libtoolize" $libtoolize_min_vers \ - "http://ftp.gnu.org/pub/gnu/libtool/libtool-${libtool_min_vers}.tar.gz" || DIE=1 - -if test -n "$DIE"; then - exit 1 -fi - - -if test -z "$*"; then - echo "$ARGV0: Note: \`./configure' will be run with no arguments." - echo " If you wish to pass any to it, please specify them on the" - echo " \`$0' command line." - echo -fi - -do_cmd() { - echo "$ARGV0: running \`$@'" - $@ -} - -# Run for top level directory - -printbold "Setting up $PACKAGE toplevel" - -config_specific_directory () -{ - local d=${1:-.} - local cur=$(pwd) - if [ "$d" != "." ]; then - cd $d - printbold " ----- Entering $d -----" - fi - touch NEWS README AUTHORS ChangeLog ### ToDo: define those. - mkdir -p m4 - do_cmd $LIBTOOLIZE $LIBTOOLIZE_FLAGS - do_cmd $ACLOCAL $ACLOCAL_FLAGS - do_cmd $AUTOHEADER - do_cmd $AUTOMAKE $AUTOMAKE_FLAGS - do_cmd $AUTOCONF --force - if [ "$d" != "." ]; then - cd $cur - printbold " ----- Exiting $d -----" - fi -} - subdirs=$(grep '^AC_CONFIG_SUBDIRS' configure.ac | \ sed 's/AC_CONFIG_SUBDIRS(\[\(.*\)\]) *$/\1/') -printbold "subdirs are $subdirs" - -for sd in $subdirs .; do - config_specific_directory $sd +echo "subdirs are $subdirs" + +for d in $subdirs; do + echo "START configuring $d" + cd $d + ./autogen.sh + cd .. + echo "FINISH configuring $d" done +echo "configuring SPICE top dir" +./autogen.sh.shared + cd $ORIGDIR || exit $? rm -f config.cache - -do_cmd $srcdir/configure --enable-maintainer-mode ${1+"$@"} || exit 1 - diff --git a/autogen.sh.shared b/autogen.sh.shared new file mode 100755 index 00000000..453dac29 --- /dev/null +++ b/autogen.sh.shared @@ -0,0 +1,158 @@ +#! /bin/sh + +set -e # exit on errors + +# FIXME: can replace this entire script with +# the following line if we can require autoconf 2.60: +# autoreconf -v --force --install || exit 1 + +PACKAGE=spice + +ACLOCAL_FLAGS="" +LIBTOOLIZE=${LIBTOOLIZE-libtoolize} +LIBTOOLIZE_FLAGS="--copy --force" +AUTOHEADER=${AUTOHEADER-autoheader} +AUTOMAKE=${AUTOMAKE-automake} +AUTOMAKE_FLAGS="--add-missing --gnu" +AUTOCONF=${AUTOCONF-autoconf} + +# automake 1.8 requires autoconf 2.58 +# automake 1.7 requires autoconf 2.54 +automake_min_vers=1.7 +aclocal_min_vers=$automake_min_vers +autoconf_min_vers=2.54 +libtoolize_min_vers=1.4 + +# The awk-based string->number conversion we use needs a C locale to work +# as expected. Setting LC_ALL overrides whether the user set LC_ALL, +# LC_NUMERIC, or LANG. +LC_ALL=C + +# 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 || true`" +normal="`tput sgr0 2>/dev/null || true`" +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; 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 +} + +version_check autoconf AUTOCONF $AUTOCONF $autoconf_min_vers \ + "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-${autoconf_min_vers}.tar.gz" || DIE=1 +version_check automake AUTOMAKE "$AUTOMAKE automake automake-1.10 automake-1.9 automake-1.8 automake-1.7" $automake_min_vers \ + "http://ftp.gnu.org/pub/gnu/automake/automake-${automake_min_vers}.tar.gz" || DIE=1 +ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/` +version_check libtool LIBTOOLIZE "$LIBTOOLIZE glibtoolize libtoolize" $libtoolize_min_vers \ + "http://ftp.gnu.org/pub/gnu/libtool/libtool-${libtool_min_vers}.tar.gz" || DIE=1 + +if test -n "$DIE"; then + exit 1 +fi + + +if test -z "$*"; then + echo "$ARGV0: Note: \`./configure' will be run with no arguments." + echo " If you wish to pass any to it, please specify them on the" + echo " \`$0' command line." + echo +fi + +do_cmd() { + echo "$ARGV0: running \`$@'" + $@ +} + +# Run for top level directory + +p=$(awk -F '[(,]' '/^AC_INIT/ {print $2}' configure.ac) +if test -n "$p"; then + printbold "Setting up $p toplevel" +fi + +touch NEWS README AUTHORS ChangeLog ### ToDo: define those. +mkdir -p m4 +do_cmd $LIBTOOLIZE $LIBTOOLIZE_FLAGS +do_cmd $ACLOCAL $ACLOCAL_FLAGS +do_cmd $AUTOHEADER +do_cmd $AUTOMAKE $AUTOMAKE_FLAGS +do_cmd $AUTOCONF --force + diff --git a/client/Makefile.am b/client/Makefile.am index 54cd2ec4..efe39522 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -92,4 +92,4 @@ EXTRA_DIST = $(RED_COMMON_SRCS) \ DISTCLEANFILES = x11/ffmpeg_inc.h dist-hook: - cp -p -f ../autogen.sh ../configure.ac.shared $(distdir) + cp -p -f ./autogen.sh ../configure.ac.shared $(distdir) diff --git a/client/autogen.sh b/client/autogen.sh new file mode 120000 index 00000000..60bb39f2 --- /dev/null +++ b/client/autogen.sh @@ -0,0 +1 @@ +../autogen.sh.shared \ No newline at end of file diff --git a/common/Makefile.am b/common/Makefile.am index bdff878c..0fca6046 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -56,5 +56,5 @@ common_src_DATA = $(COMMON_SRCS) DISTCLEANFILES = spice-common.pc dist-hook: - cp -p -f ../autogen.sh ../configure.ac.shared $(distdir) + cp -p -f ./autogen.sh ../configure.ac.shared $(distdir) diff --git a/common/autogen.sh b/common/autogen.sh new file mode 120000 index 00000000..60bb39f2 --- /dev/null +++ b/common/autogen.sh @@ -0,0 +1 @@ +../autogen.sh.shared \ No newline at end of file diff --git a/server/Makefile.am b/server/Makefile.am index 5df058cd..d3b6d62b 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -91,4 +91,4 @@ DISTCLEANFILES = \ spice.pc dist-hook: - cp -p -f ../autogen.sh ../configure.ac.shared $(distdir) + cp -p -f ./autogen.sh ../configure.ac.shared $(distdir) diff --git a/server/autogen.sh b/server/autogen.sh new file mode 120000 index 00000000..60bb39f2 --- /dev/null +++ b/server/autogen.sh @@ -0,0 +1 @@ +../autogen.sh.shared \ No newline at end of file -- cgit