]> git.saurik.com Git - bison.git/blobdiff - bootstrap
POSIX: warn if %prec's token was not defined.
[bison.git] / bootstrap
index 85d06a234251af3ac93e8a869fd60c36fc23e9ca..00ea4bc1a30720e57df209c806220d974ad61c5f 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -2,8 +2,8 @@
 
 # Bootstrap this package from checked-out sources.
 
 
 # Bootstrap this package from checked-out sources.
 
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation,
-# Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -36,7 +36,7 @@ bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
 bt2=${bt}2
 
 usage() {
 bt2=${bt}2
 
 usage() {
-  echo >&2 "\
+  cat <<EOF
 Usage: $0 [OPTION]...
 Bootstrap this package from the checked-out sources.
 
 Usage: $0 [OPTION]...
 Bootstrap this package from the checked-out sources.
 
@@ -57,7 +57,7 @@ If the file bootstrap.conf exists in the current working directory, its
 contents are read as shell variables to configure the bootstrap.
 
 Running without arguments will suffice in most cases.
 contents are read as shell variables to configure the bootstrap.
 
 Running without arguments will suffice in most cases.
-"
+EOF
 }
 
 # Configuration.
 }
 
 # Configuration.
@@ -129,7 +129,7 @@ excluded_files=
 
 # File that should exist in the top directory of a checked out hierarchy,
 # but not in a distribution tarball.
 
 # File that should exist in the top directory of a checked out hierarchy,
 # but not in a distribution tarball.
-checkout_only_file=README-hacking
+checkout_only_file=HACKING
 
 # Whether to use copies instead of symlinks.
 copy=false
 
 # Whether to use copies instead of symlinks.
 copy=false
@@ -142,29 +142,37 @@ vc_ignore=auto
 
 # find_tool ENVVAR NAMES...
 # -------------------------
 
 # find_tool ENVVAR NAMES...
 # -------------------------
+# Look for some needed program.  Use the value of the ENVVAR if set,
+# otherwise look for the first of the NAMES that can be run (i.e.,
+# supports --version).  If found, set ENVVAR to the program name,
+# die otherwise.
 find_tool ()
 {
   # Find sha1sum, named gsha1sum on MacPorts.
   find_tool_envvar=$1
   shift
 find_tool ()
 {
   # Find sha1sum, named gsha1sum on MacPorts.
   find_tool_envvar=$1
   shift
-  if eval test x"\$$find_tool_envvar" = x; then
+  find_tool_names=$@
+  eval "find_tool_res=\$$find_tool_envvar"
+  if test x"$find_tool_res" = x; then
     for i
     do
       if ($i --version </dev/null) >/dev/null 2>&1; then
     for i
     do
       if ($i --version </dev/null) >/dev/null 2>&1; then
-       find_tool_res=$i
-       break
+       find_tool_res=$i
+       break
       fi
     done
       fi
     done
+  else
+    find_tool_error_prefix="\$$find_tool_envvar: "
   fi
   if test x"$find_tool_res" = x; then
   fi
   if test x"$find_tool_res" = x; then
-    echo >&2 "$0: $find_tool_name is required"
+    echo >&2 "$0: one of these is required: $find_tool_names"
     exit 1
   fi
   ($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
     exit 1
   fi
   ($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
-    echo >&2 "$0: cannot run $find_tool_res --version"
+    echo >&2 "$0: ${find_tool_error_prefix}cannot run $find_tool_res --version"
     exit 1
   }
     exit 1
   }
-  eval "$find_tool_envvar=\"$find_tool_res\""
+  eval "$find_tool_envvar=\$find_tool_res"
   eval "export $find_tool_envvar"
 }
 
   eval "export $find_tool_envvar"
 }
 
@@ -267,6 +275,20 @@ cleanup_gnulib() {
   exit $status
 }
 
   exit $status
 }
 
+# See if we can use gnulib's git-merge-changelog merge driver.
+
+if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
+  if git config merge.merge-changelog.driver >/dev/null ; then
+    :
+  elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
+    echo "initializing git-merge-changelog driver"
+    git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
+    git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
+  else
+    echo "consider installing git-merge-changelog from gnulib"
+  fi
+fi
+
 # Get gnulib files.
 
 case ${GNULIB_SRCDIR--} in
 # Get gnulib files.
 
 case ${GNULIB_SRCDIR--} in
@@ -491,11 +513,10 @@ slurp() {
       if test $file = Makefile.am; then
        copied=$copied${sep}$gnulib_mk; sep=$nl
        remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
       if test $file = Makefile.am; then
        copied=$copied${sep}$gnulib_mk; sep=$nl
        remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
-       sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || {
-         echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
-         rm -f $dir/$gnulib_mk &&
-         sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
-       }
+       echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..."
+       rm -f $dir/$gnulib_mk
+       sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
+        etc/prefix-gnulib-mk $dir/$gnulib_mk
       elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
           version_controlled_file $dir $file; then
        echo "$0: $dir/$file overrides $1/$dir/$file"
       elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
           version_controlled_file $dir $file; then
        echo "$0: $dir/$file overrides $1/$dir/$file"