Rearrange suspicious pointer logging
[bpt/emacs.git] / autogen.sh
index 03c39ee..6b7c647 100755 (executable)
@@ -1,9 +1,10 @@
 #!/bin/sh
 ### autogen.sh - tool to help build Emacs from a bzr checkout
 
 #!/bin/sh
 ### autogen.sh - tool to help build Emacs from a bzr checkout
 
-## Copyright (C) 2011  Free Software Foundation, Inc.
+## Copyright (C) 2011-2014 Free Software Foundation, Inc.
 
 ## Author: Glenn Morris <rgm@gnu.org>
 
 ## Author: Glenn Morris <rgm@gnu.org>
+## Maintainer: emacs-devel@gnu.org
 
 ## This file is part of GNU Emacs.
 
 
 ## This file is part of GNU Emacs.
 
 ## 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.
 ## 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.
+## For more details, see the file INSTALL.REPO.
 
 ### Code:
 
 ## Tools we need:
 
 ### Code:
 
 ## Tools we need:
+## Note that we respect the values of AUTOCONF etc, like autoreconf does.
 progs="autoconf automake"
 
 ## Minimum versions we need:
 progs="autoconf automake"
 
 ## Minimum versions we need:
-autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.in`
+autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
 
 
-## FIXME how to determine this from the sources?
-automake_min=1.11
+## This will need improving if more options are ever added to the
+## AM_INIT_AUTOMAKE call.
+automake_min=`sed -n 's/^ *AM_INIT_AUTOMAKE(\([0-9\.]*\)).*/\1/p' configure.ac`
 
 
 ## $1 = program, eg "autoconf".
 
 
 ## $1 = program, eg "autoconf".
@@ -46,7 +49,8 @@ automake_min=1.11
 ## Also note that we do not handle micro versions.
 get_version ()
 {
 ## 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'
+    ## Remove eg "./autogen.sh: line 50: autoconf: command not found".
+    $1 --version 2>&1 | sed -e '/not found/d' -n -e '1 s/.* \([1-9][0-9\.]*\).*/\1/p'
 }
 
 ## $1 = version string, eg "2.59"
 }
 
 ## $1 = version string, eg "2.59"
@@ -65,13 +69,20 @@ minor_version ()
 
 ## $1 = program
 ## $2 = minimum version.
 
 ## $1 = program
 ## $2 = minimum version.
-## Return 0 if program is present with version >= minumum version.
+## Return 0 if program is present with version >= minimum 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 ()
 {
 ## 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`
+    ## Respect eg $AUTOMAKE if it is set, like autoreconf does.
+    uprog=`echo $1 | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+
+    eval uprog=\$${uprog}
+
+    [ x"$uprog" = x ] && uprog=$1
+
+    have_version=`get_version $uprog`
 
     [ x"$have_version" = x ] && return 1
 
 
     [ x"$have_version" = x ] && return 1
 
@@ -95,7 +106,7 @@ check_version ()
 
 cat <<EOF
 Checking whether you have the necessary tools...
 
 cat <<EOF
 Checking whether you have the necessary tools...
-(Read INSTALL.BZR for more details on building Emacs)
+(Read INSTALL.REPO for more details on building Emacs)
 
 EOF
 
 
 EOF
 
@@ -177,17 +188,10 @@ 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
 
 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
+autoreconf -i -I m4
 
 instead of this script.
 
 
 instead of this script.
 
-If all else fails, you can try using the pre-built versions of the
-generated files by doing:
-
-./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
 
 Please report any problems with this script to bug-gnu-emacs@gnu.org .
 EOF
 
@@ -198,7 +202,11 @@ echo "Your system has the required tools, running autoreconf..."
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
-autoreconf -I m4 || exit $?
+autoreconf -i -I m4 || exit $?
+
+## Create a timestamp, so that './autogen.sh; make' doesn't
+## cause 'make' to needlessly run 'autoheader'.
+echo timestamp > src/stamp-h.in || exit
 
 echo "You can now run \`./configure'."
 
 
 echo "You can now run \`./configure'."