From 652234e967b825478d0b756a65353f252adf73d3 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Fri, 28 Mar 2003 06:31:44 +0000 Subject: Fix bug #2515: the .SECONDARY target with no prerequisites wasn't behaving properly (if you listed prerequisites it worked properly). --- ChangeLog | 5 +++++ file.c | 14 +++++++++++++- tests/ChangeLog | 5 +++++ tests/scripts/targets/SECONDARY | 27 +++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 37b22fc..cce4014 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-03-28 Paul D. Smith + + * 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 * configure.in, Makefile.am, glob/Makefile.am, doc/Makefile.am: diff --git a/file.c b/file.c index 77e3e6a..f043e9c 100644 --- a/file.c +++ b/file.c @@ -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 + + * scripts/targets/SECONDARY: Test the "global" .SECONDARY (with + not prerequisites)--Bug #2515. + 2003-01-30 Paul D. Smith * 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; -- cgit v1.2.3