declare smobs in alloc.c
[bpt/emacs.git] / autogen.sh
index fb5917f..48e6d19 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-201 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.
 
@@ -25,7 +26,7 @@
 ## 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:
 
 
 ### Code:
 
 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".
@@ -48,7 +50,7 @@ automake_min=1.11
 get_version ()
 {
     ## Remove eg "./autogen.sh: line 50: autoconf: command not found".
 get_version ()
 {
     ## 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 2>&1 | sed -e '/not found/d' -e 's/.* //' -n -e '1 s/\([0-9][0-9\.]*\).*/\1/p'
 }
 
 ## $1 = version string, eg "2.59"
 }
 
 ## $1 = version string, eg "2.59"
@@ -74,7 +76,7 @@ minor_version ()
 check_version ()
 {
     ## Respect eg $AUTOMAKE if it is set, like autoreconf does.
 check_version ()
 {
     ## Respect eg $AUTOMAKE if it is set, like autoreconf does.
-    uprog=`echo $1 | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+    uprog=`echo $1 | sed -e 's/-/_/g' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
 
     eval uprog=\$${uprog}
 
 
     eval uprog=\$${uprog}
 
@@ -104,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
 
@@ -112,7 +114,9 @@ missing=
 
 for prog in $progs; do
 
 
 for prog in $progs; do
 
-    eval min=\$${prog}_min
+    sprog=`echo "$prog" | sed 's/-/_/g'`
+
+    eval min=\$${sprog}_min
 
     echo "Checking for $prog (need at least version $min)..."
 
 
     echo "Checking for $prog (need at least version $min)..."
 
@@ -131,7 +135,7 @@ for prog in $progs; do
 
     if [ $retval -ne 0 ]; then
         missing="$missing $prog"
 
     if [ $retval -ne 0 ]; then
         missing="$missing $prog"
-        eval ${prog}_why=\""$stat"\"
+        eval ${sprog}_why=\""$stat"\"
     fi
 
 done
     fi
 
 done
@@ -145,7 +149,9 @@ Building Emacs from Bzr requires the following specialized programs:
 EOF
 
     for prog in $progs; do
 EOF
 
     for prog in $progs; do
-        eval min=\$${prog}_min
+        sprog=`echo "$prog" | sed 's/-/_/g'`
+
+        eval min=\$${sprog}_min
 
         echo "$prog (minimum version $min)"
     done
 
         echo "$prog (minimum version $min)"
     done
@@ -157,7 +163,9 @@ Your system seems to be missing the following tool(s):
 EOF
 
     for prog in $missing; do
 EOF
 
     for prog in $missing; do
-        eval why=\$${prog}_why
+        sprog=`echo "$prog" | sed 's/-/_/g'`
+
+        eval why=\$${sprog}_why
 
         echo "$prog ($why)"
     done
 
         echo "$prog ($why)"
     done
@@ -186,30 +194,29 @@ 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 -I m4
+autoreconf -fi -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
 
     exit 1
 fi
 
 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..."
+echo 'Your system has the required tools.'
+echo "Running 'autoreconf -fi -I m4' ..."
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
-autoreconf -i -I m4 || exit $?
+## Use autoreconf's -f option in case autoreconf itself has changed.
+autoreconf -fi -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'."
 
 exit 0
 
 
 exit 0