diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | file.c | 14 | ||||
-rw-r--r-- | tests/ChangeLog | 5 | ||||
-rw-r--r-- | tests/scripts/targets/SECONDARY | 27 |
4 files changed, 50 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2003-03-28 Paul D. Smith <psmith@gnu.org> + + * file.c (snap_deps): If .SECONDARY with no targets is given, set + the intermediate flag on all targets. Fixes bug #2515. + 2003-03-24 Paul D. Smith <psmith@gnu.org> * configure.in, Makefile.am, glob/Makefile.am, doc/Makefile.am: @@ -392,6 +392,15 @@ remove_intermediates (int sig) } } +/* Set the intermediate flag. */ + +static void +set_intermediate (const void *item) +{ + struct file *f = (struct file *) item; + f->intermediate = 1; +} + /* For each dependency of each file, make the `struct dep' point at the appropriate `struct file' (which may have to be created). @@ -473,7 +482,10 @@ snap_deps (void) f2->intermediate = f2->secondary = 1; /* .SECONDARY with no deps listed marks *all* files that way. */ else - all_secondary = 1; + { + all_secondary = 1; + hash_map (&files, set_intermediate); + } } f = lookup_file (".EXPORT_ALL_VARIABLES"); diff --git a/tests/ChangeLog b/tests/ChangeLog index 88fffb6..b4ba23e 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2003-03-28 Paul D. Smith <psmith@gnu.org> + + * scripts/targets/SECONDARY: Test the "global" .SECONDARY (with + not prerequisites)--Bug #2515. + 2003-01-30 Paul D. Smith <psmith@gnu.org> * scripts/features/targetvars: Test very long target-specific diff --git a/tests/scripts/targets/SECONDARY b/tests/scripts/targets/SECONDARY index 5a60ed2..a6c5dab 100644 --- a/tests/scripts/targets/SECONDARY +++ b/tests/scripts/targets/SECONDARY @@ -81,5 +81,32 @@ $answer = "cp foo.f foo.e\ncp foo.e foo.c\n"; unlink('foo.f', 'foo.e', 'foo.d', 'foo.c'); +# TEST #7 -- test the "global" .SECONDARY, with no targets. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); + +print MAKEFILE <<'EOF'; +.SECONDARY: + +final: intermediate +intermediate: source + +final intermediate source: + echo $< > $@ +EOF + +close(MAKEFILE); + +&utouch(-10, 'source'); +touch('final'); + +&run_make_with_options($makefile2, '', &get_logfile); +$answer = "$make_name: `final' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('source', 'final', 'intermediate'); + # This tells the test driver that the perl test script executed properly. 1; |