summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--file.c14
-rw-r--r--tests/ChangeLog5
-rw-r--r--tests/scripts/targets/SECONDARY27
4 files changed, 50 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 37b22fc..cce4014 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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:
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 <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;