From a117c24e890061321ed4911180688bbb387f6cef Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Fri, 29 Nov 2002 21:53:06 +0000 Subject: [PATCH] For PR automake/359: * automake.in (do_check_merge_target): Make `check' dependent on $(BUILT_SOURCES) if the variable is defined. Run `check-am' or `check-recursive' in a submake in this case. * tests/check2.test, tests/check3.test: New files. * tests/check.test: Make sure `check' depends on `check-am'. * tests/Makefile.am (TESTS): Add check2.test and check3.test. --- ChangeLog | 8 ++++++ automake.in | 4 +++ tests/Makefile.am | 2 ++ tests/Makefile.in | 2 ++ tests/check.test | 14 ++++++---- tests/check2.test | 62 ++++++++++++++++++++++++++++++++++++++++++ tests/check3.test | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 156 insertions(+), 5 deletions(-) create mode 100755 tests/check2.test create mode 100755 tests/check3.test diff --git a/ChangeLog b/ChangeLog index 70c0ba3a2..e4608c8b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2002-11-29 Alexandre Duret-Lutz + For PR automake/359: + * automake.in (do_check_merge_target): Make `check' dependent on + $(BUILT_SOURCES) if the variable is defined. Run `check-am' or + `check-recursive' in a submake in this case. + * tests/check2.test, tests/check3.test: New files. + * tests/check.test: Make sure `check' depends on `check-am'. + * tests/Makefile.am (TESTS): Add check2.test and check3.test. + For PR automake/371 and PR automake/372: * automake.in (rule_define): Honor inference rules with multiple targets, and warn when they are used. diff --git a/automake.in b/automake.in index 8540e2304..39ec07142 100755 --- a/automake.in +++ b/automake.in @@ -4916,7 +4916,11 @@ sub do_check_merge_target if @check_tests; &depend ('.PHONY', 'check', 'check-am'); + # Handle recursion. We have to honor BUILT_SOURCES like for `all:'. $output_rules .= ("check: " + . (variable_defined ('BUILT_SOURCES') + ? "\$(BUILT_SOURCES)\n\t\$(MAKE) \$(AM_MAKEFLAGS)" + : '') . (variable_defined ('SUBDIRS') ? 'check-recursive' : 'check-am') . "\n"); diff --git a/tests/Makefile.am b/tests/Makefile.am index 800a41fa0..cb5040c7b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -49,6 +49,8 @@ canon4.test \ canon5.test \ ccnoco.test \ check.test \ +check2.test \ +check3.test \ checkall.test \ clean.test \ colneq.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index b71b293b1..aa605019d 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -142,6 +142,8 @@ canon4.test \ canon5.test \ ccnoco.test \ check.test \ +check2.test \ +check3.test \ checkall.test \ clean.test \ colneq.test \ diff --git a/tests/check.test b/tests/check.test index 783d2f529..0f5bc3469 100755 --- a/tests/check.test +++ b/tests/check.test @@ -22,19 +22,23 @@ . ./defs || exit 1 +set -e + cat > Makefile.am << 'END' TESTS = frob.test END : > frob.test -$ACLOCAL || exit 1 -$AUTOMAKE || exit 1 +$ACLOCAL +$AUTOMAKE -grep '^check-TESTS:' Makefile.in || exit 1 +grep '^check-TESTS:' Makefile.in grep '^check-DEJAGNU' Makefile.in && exit 1 # check-TESTS is phony. -sed -n '/^\.PHONY:/,/^$/p' Makefile.in | grep check-TESTS || exit 1 +sed -n '/^\.PHONY:/,/^$/p' Makefile.in | grep check-TESTS -exit 0 +# check should depend directly on check-am (similar tests are +# in check2.test and check3.test). +grep '^check: check-am' Makefile.in diff --git a/tests/check2.test b/tests/check2.test new file mode 100755 index 000000000..1f6cfee65 --- /dev/null +++ b/tests/check2.test @@ -0,0 +1,62 @@ +#! /bin/sh +# Copyright (C) 2002 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 autoconf; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Test Automake style tests. + +. ./defs || exit 1 + +set -e + +cat >> configure.in << 'END' +AC_CONFIG_FILES([dir/Makefile]) +AC_OUTPUT +END + +mkdir dir + +cat > Makefile.am << 'END' +SUBDIRS = dir +TESTS = subrun.sh +subrun.sh: + (echo '#! /bin/sh'; echo 'dir/echo.sh') > $@ + chmod +x $@ +CLEANFILES = subrun.sh +END + +cat > dir/Makefile.am << 'END' +check_SCRIPTS = echo.sh +echo.sh: + (echo '#! /bin/sh'; echo 'echo Hello') > $@ + chmod +x $@ +CLEANFILES = echo.sh +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE +./configure +$MAKE check >stdout +cat stdout +grep 'PASS: subrun.sh' stdout + +# check should depend directly on check-am (similar tests are +# in check.test and check3.test). +grep 'check: check-recursive' Makefile.in +grep 'check: check-am' dir/Makefile.in diff --git a/tests/check3.test b/tests/check3.test new file mode 100755 index 000000000..073006631 --- /dev/null +++ b/tests/check3.test @@ -0,0 +1,69 @@ +#! /bin/sh +# Copyright (C) 2002 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 autoconf; 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 `check:' honors $(BUILT_SOURCES). +# PR/359. + +. ./defs || exit 1 + +set -e + +cat >> configure.in << 'END' +AC_CONFIG_FILES([dir/Makefile]) +AC_OUTPUT +END + +mkdir dir + +cat > Makefile.am << 'END' +BUILT_SOURCES = command1.inc +SUBDIRS = dir +TESTS = subrun.sh +subrun.sh: + (echo '#! /bin/sh'; cat command1.inc) > $@ + chmod +x $@ +command1.inc: + echo 'dir/echo.sh' > $@ +CLEANFILES = subrun.sh command1.inc +END + +cat > dir/Makefile.am << 'END' +BUILT_SOURCES = command2.inc +check_SCRIPTS = echo.sh +echo.sh: + (echo '#! /bin/sh'; cat command2.inc) > $@ + chmod +x $@ +command2.inc: + echo 'echo Hello' > $@ +CLEANFILES = echo.sh command2.inc +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE +./configure +$MAKE check >stdout +cat stdout +grep 'PASS: subrun.sh' stdout + +# check should depend directly on check-am (similar tests are +# in check.test and check2.test). +$FGREP 'check: $(BUILT_SOURCES)' Makefile.in +$FGREP 'check: $(BUILT_SOURCES)' dir/Makefile.in -- 2.47.2