From 70b2139fb160a6d39c840d16a8f03f65fe898b57 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 8 Dec 2003 20:38:42 +0000 Subject: * README.CVS: Enhanced. * autogen.sh: New. * Makefile.am (EXTRA_DIST): Added autogen.sh. --- ChangeLog | 2 ++ README.CVS | 35 +++++++++++++++++++--- autogen.sh | 98 ++++++++++++++++++++++++++++++++++-------------------------- configure.ac | 7 +++-- 4 files changed, 93 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index cea731b..0632ac8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2003-12-08 Werner Koch + * README.CVS: Enhanced. + * autogen.sh: New. * Makefile.am (EXTRA_DIST): Added autogen.sh. diff --git a/README.CVS b/README.CVS index 18fb582..ae17923 100644 --- a/README.CVS +++ b/README.CVS @@ -3,21 +3,48 @@ If you are building from CVS, run the script ./autogen.sh first, to make sure that you have all the necessary maintainer tools -are installed and to build the actual configuration files. The run +are installed and to build the actual configuration files. Then run ./configure --enable-maintainer-mode followed by the usual make. +If autogen.sh complains about insufficient versions of the required +tools, or the tools are not installed, you may use environment +variables to override the default tool names: + + AUTOMAKE_SUFFIX is used as a suffix for all tools from the automake + package. For example + AUTOMAKE_SUFFIX="-1.7" ./autogen.sh + uses "automake-1.7" and "aclocal-1.7. + AUTOMAKE_PREFIX is used as a prefix for all tools from the automake + page and may be combined with AUTOMAKE_SUFFIX. e.g.: + AUTOMAKE_PREFIX=/usr/foo/bin ./autogen.sh + uses "automake" and "aclocal" in the /usr/foo/bin + directory. + AUTOCONF_SUFFIX is used as a suffix for all tools from the automake + package + AUTOCONF_PREFIX is used as a prefix for all tools from the automake + package + GETTEXT_SUFFIX is used as a suffix for all tools from the gettext + package + GETTEXT_PREFIX is used as a prefix for all tools from the gettext + package + +It is also possible to use the variable name AUTOMAKE, AUTOCONF, +ACLOCAL, AUTOHEADER, GETTEXT and MSGMERGE to directly specify the name +of the programs to run. It is however better to use the suffix and +prefix forms as described above because that does not require +knowledge about the actual tools used by autgen.sh. + Please don't use autopoint, libtoolize or autoreconf unless you are the current maintainer and want to update the standard configuration files. All those files should be in the CVS and only updated manually if the maintainer decides that newer versions are required. The maintainer should also make sure that the required version of automake -et al. are properly indicated at the top of the autogen.sh script and -take care to copy the files and not merely use symlinks. - +et al. are properly indicated at the top of configure.ac and take care +to copy the files and not merely use symlinks. diff --git a/autogen.sh b/autogen.sh index dc9bf27..3ba50a5 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Run this to generate all the initial makefiles, etc. +# Run this to generate all the initial makefiles, etc. # # Copyright (C) 2003 g10 Code GmbH # @@ -11,64 +11,78 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -PGM=libgpg-error - -# Required version of autoconf. Keep it in sync with the AC_PREREQ -# macro at the top of configure.ac. -autoconf_vers=2.57 - -# Required version of automake. -automake_vers=1.7.6 - -# Required version of gettext. Keep it in sync with the -# AM_GNU_GETTEXT_VERSION macro in configure.ac. -gettext_vers=0.12.1 - - -ACLOCAL=${ACLOCAL:-aclocal} -AUTOCONF=${AUTOCONF:-autoconf} -AUTOMAKE=${AUTOMAKE:-automake} -AUTOHEADER=${AUTOHEADER:-autoheader} -GETTEXT=${GETTEXT:-gettext} -MSGMERGE=${MSGMERGE:-gettext} -DIE=no +configure_ac="configure.ac" cvtver () { - awk 'NR==1 {split($NF,A,".");X=1000000*A[1]+1000*A[2]+A[3];print X;exit 0}' -} - -chkver () { - expr `("$1" --version || echo "0") | cvtver` '>=' `echo "$2" | cvtver` \ - >/dev/null + awk 'NR==1 {split($NF,A,".");X=1000000*A[1]+1000*A[2]+A[3];print X;exit 0}' } check_version () { - if ! chkver $1 $2 ; then - echo "**Error**: "\`$1\'" not installed or too old." >&2 - echo ' Version '$2' or newer is required.' >&2 - [ -n "$3" ] && echo ' Note that this is part of '\`$3\''.' >&2 - DIE="yes" - return 1 - else + if [ $(( `("$1" --version || echo "0") | cvtver` >= $2 )) == 1 ]; then return 0 fi + echo "**Error**: "\`$1\'" not installed or too old." >&2 + echo ' Version '$3' or newer is required.' >&2 + [ -n "$4" ] && echo ' Note that this is part of '\`$4\''.' >&2 + DIE="yes" + return 1 } -check_version $AUTOCONF $autoconf_vers -if check_version $AUTOMAKE $automake_vers ; then - check_version $ACLOCAL $automake_vers automake +# Grep the required versions from configure.ac +autoconf_vers=`sed -n '/^AC_PREREQ(/ { +s/^.*(\(.*\))/\1/p +q +}' ${configure_ac}` +autoconf_vers_num=`echo "$autoconf_vers" | cvtver` + +automake_vers=`sed -n '/^min_automake_version=/ { +s/^.*="\(.*\)"/\1/p +q +}' ${configure_ac}` +automake_vers_num=`echo "$automake_vers" | cvtver` + +gettext_vers=`sed -n '/^min_gettext_version=/ { +s/^.*="\(.*\)"/\1/p +q +}' ${configure_ac}` +gettext_vers_num=`echo "$gettext_vers" | cvtver` + + +if [ -z "$autoconf_vers" -o -z "$automake_vers" -o -z "$gettext_vers" ] +then + echo "**Error**: version information not found in "\`${configure_ac}\'"." >&2 + exit 1 +fi + +# Allow to override the default tool names +AUTOCONF=${AUTOCONF_PREFIX}${AUTOCONF:-autoconf}${AUTOCONF_SUFFIX} +AUTOHEADER=${AUTOCONF_PREFIX}${AUTOHEADER:-autoheader}${AUTOCONF_SUFFIX} + +AUTOMAKE=${AUTOMAKE_PREFIX}${AUTOMAKE:-automake}${AUTOMAKE_SUFFIX} +ACLOCAL=${AUTOMAKE_PREFIX}${ACLOCAL:-aclocal}${AUTOMAKE_SUFFIX} + +GETTEXT=${GETTEXT_PREFIX}${GETTEXT:-gettext}${GETTEXT_SUFFIX} +MSGMERGE=${GETTEXT_PREFIX}${MSGMERGE:-msgmerge}${GETTEXT_SUFFIX} + +DIE=no + + +if check_version $AUTOCONF $autoconf_vers_num $autoconf_vers ; then + check_version $AUTOHEADER $autoconf_vers_num $autoconf_vers autoconf +fi +if check_version $AUTOMAKE $automake_vers_num $automake_vers; then + check_version $ACLOCAL $automake_vers_num $autoconf_vers automake fi -if check_version $GETTEXT $gettext_vers ; then - check_version $MSGMERGE $gettext_vers gettext +if check_version $GETTEXT $gettext_vers_num $gettext_vers; then + check_version $MSGMERGE $gettext_vers_num $gettext_vers gettext fi if test "$DIE" = "yes"; then cat <