diff options
author | Glenn Morris <rgm@gnu.org> | 2011-03-20 16:58:23 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2011-03-20 16:58:23 -0700 |
commit | 66b874939b5acd59c76fa53373f2e41871ec1fef (patch) | |
tree | 2068f1af187f95a85ac0c7730c7b611b9d4ad8c1 /autogen.sh | |
parent | 1fe275ee28e8a37fdbbd6d6cf75f1b15b9674b4b (diff) | |
download | emacs-66b874939b5acd59c76fa53373f2e41871ec1fef.tar.gz |
(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.
Diffstat (limited to 'autogen.sh')
-rwxr-xr-x | autogen.sh | 208 |
1 files changed, 204 insertions, 4 deletions
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 <rgm@gnu.org> + +## 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 <http://www.gnu.org/licenses/>. + +### 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 <<EOF +Checking whether you have the necessary tools... +(Read INSTALL.BZR for more details on building Emacs) + +EOF + +missing= + +for prog in $progs; do + + eval min=\$${prog}_min + + echo "Checking for $prog (need at least version $min)..." + + check_version $prog $min + + retval=$? + + case $retval in + 0) stat="ok" ;; + 1) stat="missing" ;; + 2) stat="too old" ;; + *) stat="unable to check" ;; + esac + + echo $stat + + if [ $retval -ne 0 ]; then + missing="$missing $prog" + eval ${prog}_why=\""$stat"\" + fi + +done + + +if [ x"$missing" != x ]; then + + cat <<EOF + +Building Emacs from Bzr requires the following specialized programs: +EOF + + for prog in $progs; do + eval min=\$${prog}_min + + echo "$prog (minimum version $min)" + done + + + cat <<EOF + +Your system seems to be missing the following tool(s): +EOF + + for prog in $missing; do + eval why=\$${prog}_why + + echo "$prog ($why)" + done + + cat <<EOF + +If you think you have the required tools, please add them to your PATH +and re-run this script. + +Otherwise, please try installing them. +On systems using rpm and yum, try: "yum install PACKAGE" +On systems using dpkg and apt, try: "apt-get install PACKAGE" +Then re-run this script. + +If you do not have permission to do this, or if the version provided +by your system is too old, it is normally straightforward to build +these packages from source. You can find the sources at: + +ftp://ftp.gnu.org/gnu/PACKAGE/ + +Download the package (make sure you get at least the minimum version +listed above), extract it using tar, then run configure, make, +make install. Add the installation directory to your PATH and re-run +this script. + +If you know that the required versions are in your PATH, but this +script has made an error, then you can simply run + +autoreconf -I m4 + +instead of this script. + +If all else fails, you can try using the pre-built versions of the +generated files by doing: + +cd autogen && ./copy_autogen + +This is not recommended - see the comments in \`copy_autogen'. + +Please report any problems with this script to bug-gnu-emacs@gnu.org . +EOF + + exit 1 +fi + +echo "Your system has the required tools, running autoreconf..." + + +## Let autoreconf figure out what, if anything, needs doing. +autoreconf -I m4 || exit $? + +echo "You can now run \`./configure'." + +exit 0 + +### autogen.sh ends here |