From 66b874939b5acd59c76fa53373f2e41871ec1fef Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 20 Mar 2011 16:58:23 -0700 Subject: (Re)move autotools generated files from the repository. Ref: http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00225.html * autogen/: New directory, to be excluded from releases. * autogen/copy_autogen, autogen/update_autogen: New scripts. * autogen/README: New file. * autogen/aclocal.m4, autogen/config.in, autogen/configure: * autogen/Makefile.in: Add auto-updated generated files. * autogen.sh: No longer a no-op, now it tests for autotools and runs them as necessary. * configure.in: Defaule maintainer-mode to on. * aclocal.m4, configure, lib/Makefile.in: Remove files. * src/config.in: Remove file. * INSTALL.BZR, admin/make-tarball.txt: Update instructions. --- autogen.sh | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 204 insertions(+), 4 deletions(-) (limited to 'autogen.sh') diff --git a/autogen.sh b/autogen.sh index 52184c46f51..a56b8d77826 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,207 @@ #!/bin/sh +### autogen.sh - tool to help build Emacs from a bzr checkout -echo "Please read INSTALL.BZR for instructions on how to build Emacs from Bazaar." +## Copyright (C) 2011 Free Software Foundation, Inc. -# Exit with failure, since people may have generic build scripts that -# try things like "autogen.sh && ./configure && make". -exit 1 +## Author: Glenn Morris + +## This file is part of GNU Emacs. + +## GNU Emacs is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. + +## GNU Emacs is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with GNU Emacs. If not, see . + +### Commentary: + +## The Emacs bzr repository does not include the configure script +## (and associated helpers). The first time you fetch Emacs from bzr, +## run this script to generate the necessary files. +## For more details, see the file INSTALL.BZR. + +### Code: + +## Tools we need: +progs="autoconf automake" + +## Minimum versions we need: +autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.in` + +## FIXME how to determine this from the sources? +automake_min=1.11 + + +## $1 = program, eg "autoconf". +## Echo the version string, eg "2.59". +## FIXME does not handle things like "1.4a", but AFAIK those are +## all old versions, so it is OK to fail there. +## Also note that we do not handle micro versions. +get_version () +{ + $1 --version 2>&1 | sed -n '1 s/.* \([1-9][0-9\.]*\).*/\1/p' +} + +## $1 = version string, eg "2.59" +## Echo the major version, eg "2". +major_version () +{ + echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/' +} + +## $1 = version string, eg "2.59" +## Echo the minor version, eg "59". +minor_version () +{ + echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/' +} + +## $1 = program +## $2 = minimum version. +## Return 0 if program is present with version >= minumum version. +## Return 1 if program is missing. +## Return 2 if program is present but too old. +## Return 3 for unexpected error (eg failed to parse version). +check_version () +{ + have_version=`get_version $1` + + [ x"$have_version" = x ] && return 1 + + have_maj=`major_version $have_version` + need_maj=`major_version $2` + + [ x"$have_maj" != x ] && [ x"$need_maj" != x ] || return 3 + + [ $have_maj -gt $need_maj ] && return 0 + [ $have_maj -lt $need_maj ] && return 2 + + have_min=`minor_version $have_version` + need_min=`minor_version $2` + + [ x"$have_min" != x ] && [ x"$need_min" != x ] || return 3 + + [ $have_min -ge $need_min ] && return 0 + return 2 +} + + +cat <