From: Ralf Wildenhues Date: Sat, 14 Oct 2006 17:20:36 +0000 (+0000) Subject: * automake.in (%_macro_for_cond): New variable. X-Git-Tag: Release-1-10~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd87a83defd294ae2b1696cce2ef6e7b0c76f858;p=thirdparty%2Fautomake.git * 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. --- diff --git a/ChangeLog b/ChangeLog index bf10167bf..f76c720da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2006-10-14 Ralf Wildenhues + * 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 diff --git a/automake.in b/automake.in index 52d7e15db..54c3eb304 100755 --- a/automake.in +++ b/automake.in @@ -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)); diff --git a/tests/Makefile.am b/tests/Makefile.am index a6d6eb2f0..93a10e5ce 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -55,6 +55,7 @@ ansi10.test \ ar.test \ ar2.test \ asm.test \ +asm2.test \ autohdr.test \ autohdr2.test \ autohdr3.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 446dec06a..355314780 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -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 index 000000000..cb0de9061 --- /dev/null +++ b/tests/asm2.test @@ -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