]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
require: autoconf >= 2.65; related simplifications
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 5 May 2012 19:48:49 +0000 (21:48 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 5 May 2012 19:56:42 +0000 (21:56 +0200)
The new support for Objective C++ (to be added in Automake 1.12.1) can be
simplified if we assume Autoconf version 2.65 or later (2.65 being the
version that introduced support for Objective C++).  Since such an Autoconf
version is two and half years old now (and will likely be almost three
years old when Automake 1.13 gets released), requiring it is acceptable.
This will also simplify testing and maintenance of Automake, because we'll
need to test with fewer Autoconf version, and possibly rely on new Autoconf
features.

* NEWS (Version requirements): Automake 1.13 will require Autoconf
2.65 or later.
* configure.ac ($required_autoconf_version): Bump to 2.65.
* m4/init.m4 (AM_INIT_AUTOMAKE): Require Autoconf >= 2.65.
Assume AC_PROG_OBJCXX is unconditionally defined.
* m4/depout.m4: Adjust a comment about a nugget of defensive programming.
* t/ext.sh: Assume that AC_PROG_OBJCXX is unconditionally defined,
and that we are using Autoconf >= 2.65.  Related simplifications.
* t/objc-megademo.sh: Likewise.
* t/objcxx-basic.sh: Likewise.
* t/objcxx-deps.sh: Likewise.
* t/objcxx-flags.sh: Likewise.
* t/objcxx-minidemo.sh: Likewise.
* t/nodep2.sh: Likewise.
* t/backcompat3.sh: Assume AC_INIT accepts an URL argument.
* t/depend5.sh: Adjust a comment.
* syntax-checks.mk (sc_test_names): Delete this check as now useless:
autoconf >= 2.65 (>= 2.63, actually) can handle arguments to AC_INIT
that contain or are m4 builtins or predefined macros.
(m4_builtin): Delete this now-useless variable as well, was used only
by the check above.
(syntax_check_rules): Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
14 files changed:
NEWS
configure.ac
m4/depout.m4
m4/init.m4
syntax-checks.mk
t/backcompat3.sh
t/depend5.sh
t/ext.sh
t/nodep2.sh
t/objc-megademo.sh
t/objcxx-basic.sh
t/objcxx-deps.sh
t/objcxx-flags.sh
t/objcxx-minidemo.sh

diff --git a/NEWS b/NEWS
index 2bbf126d8f46946b9aaaa9eb894a176ec0ba81dc..fe6467d6ae5727fcd10a91665a7527af90575510 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,9 @@
 New in 1.13:
 
+* Version requirements:
+
+  - Autoconf 2.65 or greater is required.
+
 * Obsolete features removed:
 
   - Support for the "Cygnus-style" trees (once enabled by the 'cygnus'
@@ -48,10 +52,6 @@ New in 1.12.1:
 
 * WARNING: Future backward-incompatibilities!
 
-  - Autoconf 2.65 or later will be required by the next major Automake
-    version (1.13).  Until now, Automake has required Autoconf version
-    2.62 or later.
-
   - Starting from the next major Automake version (1.13), the rules to
     build pdf, ps and dvi output from Texinfo input will use the '--tidy'
     option by default.  Since such an option was introduced in Texinfo
index 6215aae84054971cb6689835d601e88635c98311..51d10c0b25ffdb32dab9d61fd96686ff46e53d28 100644 (file)
@@ -141,7 +141,7 @@ AC_CHECK_PROGS([LEX], [lex flex], [false])
 # following tests, but some users were unable to figure out that their
 # installation was broken since --version appeared to work.
 
-required_autoconf_version=2.62
+required_autoconf_version=2.65
 AC_CACHE_CHECK([whether autoconf is installed], [am_cv_autoconf_installed],
 [if AM_RUN_LOG([$am_AUTOCONF --version]);
 then
index 749e592dfbf550590d41ab61ff3475607c78d54a..ecf62688def06390d8ba4abcca4203d8dc3ee265 100644 (file)
@@ -6,13 +6,13 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
+# serial 7
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
index 9db4eea0c5c5e4270735fa703dfdbef11f0fd532..91a0620d91b9181b4be6e476dd2c4749b019da48 100644 (file)
@@ -6,7 +6,7 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 19
+# serial 20
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -23,7 +23,7 @@
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -100,13 +100,10 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
                  [_AM_DEPENDENCIES([OBJC])],
                  [define([AC_PROG_OBJC],
                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
                  [_AM_DEPENDENCIES([OBJCXX])],
                  [define([AC_PROG_OBJCXX],
-                         defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
+                         defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
 AC_REQUIRE([AM_SILENT_RULES])dnl
 dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
index bac6c7bba9f82ec00e035cfaa75545b2a8a6b901..f8d9f8650b6054def91006a63939635681926fa5 100644 (file)
@@ -39,7 +39,6 @@ ams := $(shell find $(srcdir) -name '*.dir' -prune -o -name '*.am' -print)
 # guaranteed to work on my machine.
 syntax_check_rules = \
 $(sc_tests_plain_check_rules) \
-sc_test_names \
 sc_diff_automake_in_automake \
 sc_diff_aclocal_in_automake \
 sc_perl_syntax \
@@ -73,69 +72,6 @@ sc_unquoted_DESTDIR \
 sc_tabs_in_texi \
 sc_at_in_texi
 
-## Look for test whose names can cause spurious failures when used as
-## first argument to AC_INIT (chiefly because they might contain an
-## m4/m4sugar builtin or macro name).
-m4_builtins = \
-  __gnu__ \
-  __unix__ \
-  bpatsubst \
-  bregexp \
-  builtin \
-  changecom \
-  changequote \
-  changeword \
-  debugfile \
-  debugmode \
-  decr \
-  define \
-  defn \
-  divert \
-  divnum \
-  dnl \
-  dumpdef \
-  errprint \
-  esyscmd \
-  eval \
-  format \
-  ifdef \
-  ifelse \
-  include \
-  incr \
-  index \
-  indir \
-  len \
-  m4exit \
-  m4wrap \
-  maketemp \
-  mkstemp \
-  patsubst \
-  popdef \
-  pushdef \
-  regexp \
-  shift \
-  sinclude \
-  substr \
-  symbols \
-  syscmd \
-  sysval \
-  traceoff \
-  traceon \
-  translit \
-  undefine \
-  undivert
-sc_test_names:
-       @m4_builtin_rx=`echo $(m4_builtins) | sed 's/ /|/g'`; \
-        m4_macro_rx="\\<($$m4_builtin_rx)\\>|\\<_?(A[CUMHS]|m4)_"; \
-        if { \
-          for t in $(xtests); do echo $$t; done \
-            | LC_ALL=C grep -E "$$m4_macro_rx"; \
-        }; then \
-          echo "the names of the tests above can be problematic" 1>&2; \
-          echo "Avoid test names that contain names of m4 macros" 1>&2; \
-          exit 1; \
-        fi
-
 ## These check avoids accidental configure substitutions in the source.
 ## There are exactly 9 lines that should be modified from automake.in to
 ## automake, and 10 lines that should be modified from aclocal.in to
index 2377e8876b44a90c678946db198a2dbd4720def7..d19af052a7268b242a84da4bb7f733b531bd3fbf 100755 (executable)
@@ -74,15 +74,7 @@ diff exp got
 ### Run 2 ###
 
 cat > configure.in <<'END'
-dnl: 'AC_INIT' in Autoconf <= 2.63 doesn't have an URL argument.
-dnl: Luckily, 'AC_AUTOCONF_VERSION' and 'm4_version_prereq' are
-dnl: both present in autoconf 2.62, which we require; so that we
-dnl: can at least use the following workaround.
-m4_version_prereq([2.64],
-    [AC_INIT([ac_name], [ac_version], [ac_bugreport], [ac_tarname],
-             [ac_url])],
-    [AC_INIT([ac_name], [ac_version], [ac_bugreport], [ac_tarname])
-     AC_SUBST([PACKAGE_URL], [ac_url])])
+AC_INIT([ac_name], [ac_version], [ac_bugreport], [ac_tarname], [ac_url])
 AM_INIT_AUTOMAKE([am_name], [am_version])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
index ca900f0fca9321cc2e512285ff525b9c4109782e..3029bdb050961db0d810ab0156f513a12ee67dc7 100755 (executable)
@@ -47,9 +47,8 @@ else
   depdir=
 fi
 
-# For the fun of it, we should also cope with makefile
-# names that contain weird characters, with Autoconf 2.62
-# and newer.
+# For the fun of it, we should also cope with Makefile names
+# that contain weird characters and newer.
 # Pick the first name that the file system will accept.
 for name in \
   'weird  name with $ `#() &! characters"' \
index c62dbd3aceef5129156b100d7d8604b16ef7e783..08643ac26eb4be3307c8dd1678bd92edb4e8afed 100755 (executable)
--- a/t/ext.sh
+++ b/t/ext.sh
@@ -22,12 +22,7 @@ cat >> configure.ac << 'END'
 AC_PROG_F77
 AC_PROG_FC
 AC_PROG_OBJC
-# FIXME: this is to cater to older autoconf; remove this once we
-# FIXME: automake requires Autoconf 2.65 or later.
-m4_ifdef([AC_PROG_OBJCXX], [AC_PROG_OBJCXX], [
-  AC_SUBST([OBJCXX], [whocares])
-  AM_CONDITIONAL([am__fastdepOBJCXX], [whocares])
-])
+AC_PROG_OBJCXX
 AM_PROG_UPC
 END
 
index cc80058a54ff1d67d37bbde7325e60dde67f1ea2..45e7d5c15d3a9cb31610296ae40f07381617d4e6 100755 (executable)
@@ -30,12 +30,7 @@ AC_CONFIG_FILES([Makefile])
 AC_PROG_CC
 AC_PROG_CXX
 AC_PROG_OBJC
-# FIXME: this is to cater to older autoconf; remove this once we
-# FIXME: automake requires Autoconf 2.65 or later.
-m4_ifdef([AC_PROG_OBJCXX], [AC_PROG_OBJCXX], [
-  AC_SUBST([OBJCXX], [whocares])
-  AM_CONDITIONAL([am__fastdepOBJCXX], [whocares])
-])
+AC_PROG_OBJCXX
 AM_PROG_AS
 AM_PROG_GCJ
 AM_PROG_UPC
index bad2aeef817a8fc4234fdcaece7ab4b5ec7bf64d..0e02341724765ba30cc8b7831be62ff40bc0010d 100755 (executable)
@@ -24,8 +24,6 @@ required=libtoolize
 cat > configure.ac << 'END'
 AC_INIT([play], [1.3], [bug-automake@gnu.org])
 
-dnl Support for Object C++ was introduced only in Autoconf 2.65.
-AC_PREREQ([2.65])
 AC_CONFIG_SRCDIR([play.c])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
@@ -86,13 +84,7 @@ END
 ## Run Autotools.
 
 libtoolize
-if $ACLOCAL; then
-  : We have a modern enough autoconf, go ahead.
-elif test $? -eq 63; then
-  skip_ "Object C++ support requires Autoconf 2.65 or later"
-else
-  Exit 1 # Some other aclocal failure.
-fi
+$ACLOCAL
 $AUTOHEADER
 $AUTOCONF
 $AUTOMAKE --add-missing
index be2cdf7520190409acd254b956801919426faafe..3835ab47c215190f155b638ffdeef204899f6296 100755 (executable)
@@ -30,19 +30,10 @@ grep "add .*'AC_PROG_OBJCXX'" stderr
 rm -rf autom4te*.cache
 
 cat >> configure.ac <<'END'
-dnl Support for Object C++ was introduced only in Autoconf 2.65.
-AC_PREREQ([2.65])
 AC_PROG_OBJCXX
 END
 
-if $ACLOCAL; then
-  : We have a modern enough autoconf, go ahead.
-elif test $? -eq 63; then
-  skip_ "Object C++ support requires Autoconf 2.65 or later"
-else
-  Exit 1 # Some other aclocal failure.
-fi
-
+$ACLOCAL
 $AUTOMAKE
 $EGREP '^\.SUFFIXES:.* \.mm( |$)' Makefile.in
 
index 782193ac766f92f9d3d02c5104aa8ee70b925402..c072da287e91ac8bf489b3eba0834d5a190e02bb 100755 (executable)
@@ -20,8 +20,6 @@
 . ./defs || Exit 1
 
 cat >> configure.ac << 'END'
-dnl Support for Object C++ was introduced only in Autoconf 2.65.
-AC_PREREQ([2.65])
 AC_PROG_OBJCXX
 AC_OUTPUT
 END
@@ -50,13 +48,7 @@ int main (void)
 }
 END
 
-if $ACLOCAL; then
-  : We have a modern enough autoconf, go ahead.
-elif test $? -eq 63; then
-  skip_ "Object C++ support requires Autoconf 2.65 or later"
-else
-  Exit 1 # Some other aclocal failure.
-fi
+$ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
index aea7e19482c79ac831e34feec4934ead0cf70be4..a948891da69d558f6136c21554a62e0687ed4870 100755 (executable)
@@ -20,8 +20,6 @@
 . ./defs || Exit 1
 
 cat >> configure.ac << 'END'
-dnl Support for Object C++ was introduced only in Autoconf 2.65.
-AC_PREREQ([2.65])
 AC_PROG_OBJCXX
 AC_OUTPUT
 END
@@ -50,14 +48,7 @@ for i in 2 4; do
 END
 done
 
-if $ACLOCAL; then
-  : We have a modern enough autoconf, go ahead.
-elif test $? -eq 63; then
-  skip_ "Object C++ support requires Autoconf 2.65 or later"
-else
-  Exit 1 # Some other aclocal failure.
-fi
-
+$ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
 
index 74e152c1cde5513dd9c0fcb896dc0fb722c3674f..e1eabca204cc9777a65b1031bcf1251b87d9fbf4 100755 (executable)
@@ -21,8 +21,6 @@ required=native
 . ./defs || Exit 1
 
 cat >> configure.ac << 'END'
-dnl Support for Object C++ was introduced only in Autoconf 2.65.
-AC_PREREQ([2.65])
 AC_PROG_OBJCXX
 AC_CONFIG_HEADERS([config.h])
 AC_OUTPUT
@@ -57,13 +55,7 @@ int main (void)
 }
 END
 
-if $ACLOCAL; then
-  : We have a modern enough autoconf, go ahead.
-elif test $? -eq 63; then
-  skip_ "Object C++ support requires Autoconf 2.65 or later"
-else
-  Exit 1 # Some other aclocal failure.
-fi
+$ACLOCAL
 $AUTOCONF
 $AUTOHEADER
 $AUTOMAKE --add-missing