diff options
author | Paul Smith <psmith@gnu.org> | 2005-10-24 13:01:39 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2005-10-24 13:01:39 +0000 |
commit | 11095a90f120545c915c92b8ebf48f04723d1837 (patch) | |
tree | 73dba88903ea90cdac930057fe8619a8a04fb869 /tests/scripts/features/statipattrules | |
parent | 66459baee27374577d32a78564604ad64228f71d (diff) | |
download | gunmake-11095a90f120545c915c92b8ebf48f04723d1837.tar.gz |
Make second expansion optional (partial implementation).
I decided this feature was too impacting to make the permanent default
behavior. This set of changes makes the default behavior of make the
old behavior (no second expansion). If you want second expansion, you
must define the .SECONDEXPANSION: special target before the first target
that needs it.
This set of changes ONLY fixes explicit and static pattern rules to work
like this. Implicit rules still have second expansion enabled all the
time: I'll work on that next.
Note that there is still a backward-incompatibility: now to get the old
SysV behavior using $$@ etc. in the prerequisites list you need to set
.SECONDEXPANSION: as well.
Diffstat (limited to 'tests/scripts/features/statipattrules')
-rw-r--r-- | tests/scripts/features/statipattrules | 65 |
1 files changed, 24 insertions, 41 deletions
diff --git a/tests/scripts/features/statipattrules b/tests/scripts/features/statipattrules index 0ca2bb7..429b56a 100644 --- a/tests/scripts/features/statipattrules +++ b/tests/scripts/features/statipattrules @@ -9,79 +9,62 @@ name and the target name with .c. It also does the same thing for another target filtered with .elc and creates a command to emacs a .el file"; -open(MAKEFILE,"> $makefile"); -print MAKEFILE <<'EOF'; -files = foo.elc bar.o lose.o - -$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@ - -$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $< -EOF -close(MAKEFILE); - - &touch('bar.c', 'lose.c'); -# TEST #1 +# TEST #0 # ------- -&run_make_with_options($makefile, '', &get_logfile); -$answer = "CC -c bar.c -o bar.o\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(' +files = foo.elc bar.o lose.o + +$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@ +$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $< +', + '', + 'CC -c bar.c -o bar.o'); -# TEST #2 +# TEST #1 # ------- -&run_make_with_options($makefile, 'lose.o', &get_logfile); -$answer = "CC -c lose.c -o lose.o\n"; -&compare_output($answer, &get_logfile(1)); +run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o'); -# TEST #3 +# TEST #2 # ------- &touch("foo.el"); -&run_make_with_options($makefile, 'foo.elc', &get_logfile); -$answer = "emacs foo.el\n"; -&compare_output($answer, &get_logfile(1)); - +run_make_test(undef, 'foo.elc', 'emacs foo.el'); +# Clean up after the first tests. unlink('foo.el', 'bar.c', 'lose.c'); -# TEST #4 -- PR/1670: don't core dump on invalid static pattern rules +# TEST #3 -- PR/1670: don't core dump on invalid static pattern rules # ------- -$makefile2 = &get_tmpfile; -open(MAKEFILE, "> $makefile2"); -print MAKEFILE "foo: foo%: % ; \@echo \$@\n"; -close(MAKEFILE); +run_make_test(' +.DEFAULT: ; @echo $@ +foo: foo%: % %.x % % % y.% % ; @echo $@ +', + '', ".x\ny.\nfoo"); -&run_make_with_options($makefile2, '', &get_logfile); -$answer = "foo\n"; -&compare_output($answer, &get_logfile(1)); -# TEST #5 -- bug #12180: core dump on a stat pattern rule with an empty +# TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty # prerequisite list. -# run_make_test(' foo.x bar.x: %.x : ; @echo $@ ', -'', -'foo.x -'); + '', 'foo.x'); -# TEST #6 -- bug #13881: double colon static pattern rule does not +# TEST #5 -- bug #13881: double colon static pattern rule does not # substitute %. -# run_make_test(' foo.bar:: %.bar: %.baz foo.baz: ;@: ', -'', -''); + '', ''); 1; |