]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
* automake.in (%_macro_for_cond): New variable.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 14 Oct 2006 17:20:36 +0000 (17:20 +0000)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 14 Oct 2006 17:20:36 +0000 (17:20 +0000)
(cond_stack_if): Use it for better error message about
missing dependency tracking conditionals.
* tests/asm2.test: New test, modeled after asm.test.
* tests/Makefile.am: Adjust.
Report by Ralf Corsepius.

ChangeLog
automake.in
tests/Makefile.am
tests/Makefile.in
tests/asm2.test [new file with mode: 0755]

index bf10167bfd68887075158c71b8e338cf2161c9b0..f76c720dabf55d947ce35fca0e4e11841f8ee3b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2006-10-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
+       * automake.in (%_macro_for_cond): New variable.
+       (cond_stack_if): Use it for better error message about
+       missing dependency tracking conditionals.
+       * tests/asm2.test: New test, modeled after asm.test.
+       * tests/Makefile.am: Adjust.
+       Report by Ralf Corsepius.
+
        * doc/automake.texi (Options): `no-dependencies' is similar
        to `--ignore-deps', not `--include-deps'.
        * m4/as.m4 (AM_PROG_AS): If `no-dependencies', do not invoke
index 52d7e15dbd9a9a1d758b1ed96ee57f161804dbbe..54c3eb3049523329b26c440507809a71044ecfae 100755 (executable)
@@ -5732,6 +5732,19 @@ sub make_conditional_string ($$)
 }
 
 
+my %_am_macro_for_cond =
+  (
+  AMDEP => "one of the compiler tests\n"
+           . "    AC_PROG_CC, AC_PROG_CXX, AC_PROG_CXX, AC_PROG_OBJC,\n"
+          . "    AM_PROG_AS, AM_PROG_GCJ, AM_PROG_UPC",
+  am__fastdepCC => 'AC_PROG_CC',
+  am__fastdepCCAS => 'AM_PROG_AS',
+  am__fastdepCXX => 'AC_PROG_CXX',
+  am__fastdepGCJ => 'AM_PROG_GCJ',
+  am__fastdepOBJC => 'AC_PROG_OBJC',
+  am__fastdepUPC => 'AM_PROG_UPC'
+  );
+
 # $COND
 # cond_stack_if ($NEGATE, $COND, $WHERE)
 # --------------------------------------
@@ -5739,8 +5752,22 @@ sub cond_stack_if ($$$)
 {
   my ($negate, $cond, $where) = @_;
 
-  error $where, "$cond does not appear in AM_CONDITIONAL"
-    if ! $configure_cond{$cond} && $cond !~ /^TRUE|FALSE$/;
+  if (! $configure_cond{$cond} && $cond !~ /^TRUE|FALSE$/)
+    {
+      my $text = "$cond does not appear in AM_CONDITIONAL";
+      my $scope = US_LOCAL;
+      if (exists $_am_macro_for_cond{$cond})
+        {
+         my $mac = $_am_macro_for_cond{$cond};
+         $text .= "\n  The usual way to define `$cond' is to add ";
+         $text .= ($mac =~ / /) ? $mac : "`$mac'";
+         $text .= "\n  to `$configure_ac' and run `aclocal' and `autoconf' again.";
+         # These warnings appear in Automake files (depend2.am),
+         # so there is no need to display them more than once:
+         $scope = US_GLOBAL;
+       }
+      error $where, $text, uniq_scope => $scope;
+    }
 
   push (@cond_stack, make_conditional_string ($negate, $cond));
 
index a6d6eb2f074b8e6f3f36af6ea1736576f42c00b3..93a10e5ceb78352daa0a67fbc24e13a136803054 100644 (file)
@@ -55,6 +55,7 @@ ansi10.test \
 ar.test \
 ar2.test \
 asm.test \
+asm2.test \
 autohdr.test \
 autohdr2.test \
 autohdr3.test \
index 446dec06a98b605c4a26e7affffad97c8601bf56..355314780afcbeb9260a505307c3fb3f445f0b1c 100644 (file)
@@ -187,6 +187,7 @@ ansi10.test \
 ar.test \
 ar2.test \
 asm.test \
+asm2.test \
 autohdr.test \
 autohdr2.test \
 autohdr3.test \
diff --git a/tests/asm2.test b/tests/asm2.test
new file mode 100755 (executable)
index 0000000..cb0de90
--- /dev/null
@@ -0,0 +1,138 @@
+#! /bin/sh
+# Copyright (C) 2001, 2002, 2003, 2006  Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Test of basic preprocessed assembly functionality
+
+. ./defs || exit 1
+
+set -e
+
+cat > Makefile.am << 'END'
+noinst_PROGRAMS = maude
+maude_SOURCES = maude.S
+END
+
+: > maude.s
+
+# Should fail because we need CC and CCAS.
+echo 1
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_SUBST(CCASFLAGS)
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AM_PROG_AS stderr
+
+# On fast machines the autom4te.cache created during the above run of
+# $AUTOMAKE is likely to have the same time stamp as the configure.in
+# created below; thus causing traces for the old configure.in to be
+# used.  We could do `$sleep', but it's faster to erase the
+# directory.  (Erase autom4te*.cache, not autom4te.cache, because some
+# bogus installations of Autoconf use a versioned cache.)
+rm -rf autom4te*.cache
+
+# We still need CCAS.
+echo 2
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AC_PROG_CC
+AC_SUBST(CCASFLAGS)
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep CCAS stderr
+grep AM_PROG_AS stderr
+
+rm -rf autom4te*.cache
+
+# We need CCASFLAGS.
+echo 3
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+CCAS='$(CC)'
+AC_SUBST(CCAS)
+AC_PROG_CC
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep CCASFLAGS stderr
+grep AM_PROG_AS stderr
+
+rm -rf autom4te*.cache
+
+# We need dependency tracking.
+echo 4
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+CCAS='$(CC)'
+AC_SUBST(CCAS)
+AC_PROG_CC
+AC_SUBST(CCASFLAGS)
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+grep AM_PROG_AS stderr
+
+rm -rf autom4te*.cache
+
+# We have every needed, expect a success.
+echo 5
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+CCAS='$(CC)'
+AC_SUBST(CCAS)
+AC_PROG_CC
+_AM_DEPENDENCIES(CCAS)
+AC_SUBST(CCASFLAGS)
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+rm -rf autom4te*.cache
+
+# We have every needed, expect a success.
+echo 6
+cat > configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AM_PROG_AS
+AC_OUTPUT(Makefile)
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+exit 0