]> code.delx.au - gnu-emacs/blobdiff - autogen.sh
Note the quote translation in `message' in section "incompatible changes".
[gnu-emacs] / autogen.sh
index 255a4d75ba6257c6bb6a083ae198932ca4d1f193..a63c53c903c7699cab36838f1323cc186c94f112 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
-### autogen.sh - tool to help build Emacs from a bzr checkout
+### autogen.sh - tool to help build Emacs from a repository checkout
 
-## Copyright (C) 2011-2014 Free Software Foundation, Inc.
+## Copyright (C) 2011-2016 Free Software Foundation, Inc.
 
 ## Author: Glenn Morris <rgm@gnu.org>
 ## Maintainer: emacs-devel@gnu.org
@@ -23,8 +23,8 @@
 
 ### Commentary:
 
-## The Emacs bzr repository does not include the configure script
-## (and associated helpers).  The first time you fetch Emacs from bzr,
+## The Emacs repository does not include the configure script (and
+## associated helpers).  The first time you fetch Emacs from the repo,
 ## run this script to generate the necessary files.
 ## For more details, see the file INSTALL.REPO.
 
@@ -145,7 +145,7 @@ if [ x"$missing" != x ]; then
 
     cat <<EOF
 
-Building Emacs from Bzr requires the following specialized programs:
+Building Emacs from the repository requires the following specialized programs:
 EOF
 
     for prog in $progs; do
@@ -194,7 +194,7 @@ 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 -I m4
+autoreconf -fi -I m4
 
 instead of this script.
 
@@ -204,18 +204,72 @@ 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.
 ## Use autoreconf's -f option in case autoreconf itself has changed.
-autoreconf -f -i -I m4 || exit $?
+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'."
+
+## Configure Git, if using Git.
+if test -d .git && (git status -s) >/dev/null 2>&1; then
+
+    # Configure 'git diff' hunk header format.
+
+    git config 'diff.elisp.xfuncname' \
+       '^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)' || exit
+    git config 'diff.texinfo.xfuncname' \
+       '^@node[[:space:]]+([^,[:space:]][^,]+)' || exit
+
+
+    # Install Git hooks.
+
+    tailored_hooks=
+    sample_hooks=
+
+    for hook in commit-msg pre-commit; do
+       cmp build-aux/git-hooks/$hook .git/hooks/$hook >/dev/null 2>&1 ||
+       tailored_hooks="$tailored_hooks $hook"
+    done
+    for hook in applypatch-msg pre-applypatch; do
+       test ! -r .git/hooks/$hook.sample ||
+       cmp .git/hooks/$hook.sample .git/hooks/$hook >/dev/null 2>&1 ||
+       sample_hooks="$sample_hooks $hook"
+    done
+
+    if test -n "$tailored_hooks$sample_hooks"; then
+       echo "Installing git hooks..."
+
+       case `cp --help 2>/dev/null` in
+         *--backup*--verbose*)
+           cp_options='--backup=numbered --verbose';;
+         *)
+           cp_options='-f';;
+       esac
+
+       if test -n "$tailored_hooks"; then
+           for hook in $tailored_hooks; do
+               cp $cp_options build-aux/git-hooks/$hook .git/hooks || exit
+               chmod a-w .git/hooks/$hook || exit
+           done
+       fi
+
+       if test -n "$sample_hooks"; then
+           for hook in $sample_hooks; do
+               cp $cp_options .git/hooks/$hook.sample .git/hooks/$hook || exit
+               chmod a-w .git/hooks/$hook || exit
+           done
+       fi
+    fi
+fi
+
+echo "You can now run './configure'."
 
 exit 0