From: Alexandre Duret-Lutz Date: Thu, 13 May 2004 22:02:40 +0000 (+0000) Subject: * automake.in (generate_makefile): Do not output Makefile.in on X-Git-Tag: Release-1-8b~19 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=9bff2db71cb77595acda5ae7ebd181401e77a550;p=automake.git * automake.in (generate_makefile): Do not output Makefile.in on errors. * tests/werror2.test: New file. * tests/Makefile.am (TESTS): Add werror2.test. * tests/substtarg.test, tests/cond36.test, tests/backsl4.test: Adjust to run automake with -Wno-error when the output is expected in spite of the error. Report from Harlan Stenn. --- diff --git a/ChangeLog b/ChangeLog index 774d4592..e34141e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2004-05-13 Alexandre Duret-Lutz + * automake.in (generate_makefile): Do not output Makefile.in on + errors. + * tests/werror2.test: New file. + * tests/Makefile.am (TESTS): Add werror2.test. + * tests/substtarg.test, tests/cond36.test, tests/backsl4.test: + Adjust to run automake with -Wno-error when the output is expected + in spite of the error. + Report from Harlan Stenn. + * doc/automake.texi (Program and Library Variables): Remove doubled word in footnote. diff --git a/NEWS b/NEWS index e504bda0..eb804a07 100644 --- a/NEWS +++ b/NEWS @@ -61,6 +61,11 @@ New in 1.8a: Non-augmented variables are still output as they are defined in the Makefile.am. + +* Automake stops writing Makefile.ins as soons as it encounters an error. + (Warnings will not prevent output, but remember they can be turned into + errors with -Werror.) + New in 1.8: diff --git a/automake.in b/automake.in index 882e2888..929ab677 100755 --- a/automake.in +++ b/automake.in @@ -7131,13 +7131,19 @@ sub generate_makefile ($$) check_typos; + my ($out_file) = $output_directory . '/' . $makefile_in; + + if ($exit_code != 0) + { + verb "not writing $out_file because of earlier errors"; + return; + } + if (! -d ($output_directory . '/' . $am_relative_dir)) { mkdir ($output_directory . '/' . $am_relative_dir, 0755); } - my ($out_file) = $output_directory . '/' . $makefile_in; - # We make sure that `all:' is the first target. my $output = "$output_vars$output_all$output_header$output_rules$output_trailer"; @@ -7160,7 +7166,7 @@ sub generate_makefile ($$) && $configure_deps_greatest_timestamp < $timestamp && $output_deps_greatest_timestamp < $timestamp && $output eq contents ($out_file)) - { + { verb "$out_file unchanged"; # No need to update. return; diff --git a/tests/Makefile.am b/tests/Makefile.am index 56402194..d9d41910 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -532,6 +532,7 @@ vtexi.test \ vtexi2.test \ warnopts.test \ werror.test \ +werror2.test \ whoami.test \ xsource.test \ yacc.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index cdff1796..6a73928f 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -649,6 +649,7 @@ vtexi.test \ vtexi2.test \ warnopts.test \ werror.test \ +werror2.test \ whoami.test \ xsource.test \ yacc.test \ diff --git a/tests/backsl4.test b/tests/backsl4.test index be6f2ef9..2736f17b 100755 --- a/tests/backsl4.test +++ b/tests/backsl4.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. # # This file is part of GNU Automake. # @@ -45,6 +45,7 @@ $AUTOCONF AUTOMAKE_fails grep ':1:.*whitespace' stderr grep ':5:.*whitespace' stderr +$AUTOMAKE -Wno-error ./configure # Older versions of Automake used to produce invalid Makefiles such input. $MAKE ok diff --git a/tests/cond36.test b/tests/cond36.test index e87c460d..ac728bf3 100755 --- a/tests/cond36.test +++ b/tests/cond36.test @@ -57,6 +57,7 @@ $ACLOCAL # and should complain. AUTOMAKE_fails --add-missing grep 'tparse.h.*already defined' stderr +$AUTOMAKE -Wno-error # Still and all, it should generate two rules. test `grep tparse.h: Makefile.in | wc -l` = 2 diff --git a/tests/substtarg.test b/tests/substtarg.test index 077cc156..2aba499c 100755 --- a/tests/substtarg.test +++ b/tests/substtarg.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # # This file is part of GNU Automake. # @@ -49,6 +49,6 @@ END $ACLOCAL AUTOMAKE_fails grep 'overrid.*libfake@SUBST@.a' stderr +$AUTOMAKE -Wno-override num=`grep '^libfake@SUBST@.a:' Makefile.in | wc -l` test $num -eq 1 -$AUTOMAKE -Wno-override diff --git a/tests/werror2.test b/tests/werror2.test new file mode 100755 index 00000000..ecee4d85 --- /dev/null +++ b/tests/werror2.test @@ -0,0 +1,52 @@ +#! /bin/sh +# Copyright (C) 2004 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Make sure that Makefile.in is not overwritten on error. Otherwise +# although the rebuilding rules would fail on error, they would +# succeed if make is run a second time immediately afterwards. +# Report from Harlan Stenn. + +required=GNUmake +. ./defs || exit 1 + +set -e + +echo AC_OUTPUT>>configure.in + +: > Makefile.am + +$ACLOCAL +$AUTOCONF +$AUTOMAKE + +./configure +$MAKE + +cat >Makefile.am <