VirtualBox

source: kBuild/branches/GNU/src/gmake/tests/scripts/variables/automatic@ 284

Last change on this file since 284 was 284, checked in by bird, 20 years ago

Current make snaphot, 2005-05-16.

  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1# -*-perl-*-
2
3$description = "Test automatic variable setting.";
4
5$details = "";
6
7use Cwd;
8
9$dir = cwd;
10$dir =~ s,.*/([^/]+)$,../$1,;
11
12open(MAKEFILE, "> $makefile");
13print MAKEFILE "dir = $dir\n";
14print MAKEFILE <<'EOF';
15.SUFFIXES:
16.SUFFIXES: .x .y .z
17$(dir)/foo.x : baz.z $(dir)/bar.y baz.z
18 @echo '$$@ = $@, $$(@D) = $(@D), $$(@F) = $(@F)'
19 @echo '$$* = $*, $$(*D) = $(*D), $$(*F) = $(*F)'
20 @echo '$$< = $<, $$(<D) = $(<D), $$(<F) = $(<F)'
21 @echo '$$^ = $^, $$(^D) = $(^D), $$(^F) = $(^F)'
22 @echo '$$+ = $+, $$(+D) = $(+D), $$(+F) = $(+F)'
23 @echo '$$? = $?, $$(?D) = $(?D), $$(?F) = $(?F)'
24 touch $@
25
26$(dir)/bar.y baz.z : ; touch $@
27EOF
28close(MAKEFILE);
29
30# TEST #1 -- simple test
31# -------
32
33# Touch these into the past
34&utouch(-10, qw(foo.x baz.z));
35
36&run_make_with_options($makefile, "", &get_logfile);
37$answer = "touch $dir/bar.y
38\$\@ = $dir/foo.x, \$(\@D) = $dir, \$(\@F) = foo.x
39\$* = $dir/foo, \$(*D) = $dir, \$(*F) = foo
40\$< = baz.z, \$(<D) = ., \$(<F) = baz.z
41\$^ = baz.z $dir/bar.y, \$(^D) = . $dir, \$(^F) = baz.z bar.y
42\$+ = baz.z $dir/bar.y baz.z, \$(+D) = . $dir ., \$(+F) = baz.z bar.y baz.z
43\$? = $dir/bar.y, \$(?D) = $dir, \$(?F) = bar.y
44touch $dir/foo.x\n";
45&compare_output($answer, &get_logfile(1));
46
47unlink(qw(foo.x bar.y baz.z));
48
49# TEST #2 -- test the SysV emulation of $$@ etc.
50# -------
51
52$makefile2 = &get_tmpfile;
53
54open(MAKEFILE, "> $makefile2");
55print MAKEFILE "dir = $dir\n";
56print MAKEFILE <<'EOF';
57.SUFFIXES:
58.DEFAULT: ; @echo '$@'
59
60$(dir)/foo $(dir)/bar: [email protected] [email protected] [email protected] [email protected] $$(@D).x $$(@F).x
61
62$(dir)/x.z $(dir)/y.z: $(dir)/%.z : $@.% $$@.% $$$@.% $$$$@.% $$(@D).% $$(@F).%
63
64$(dir)/biz: $$(@).x $${@}.x $${@D}.x $${@F}.x
65EOF
66
67close(MAKEFILE);
68
69&run_make_with_options($makefile2, "$dir/foo $dir/bar", &get_logfile);
70$answer = ".x\n$dir/foo.x\nx\n\[email protected]\n$dir.x\nfoo.x\n$dir/bar.x\nbar.x\n";
71&compare_output($answer, &get_logfile(1));
72
73&run_make_with_options($makefile2, "$dir/x.z $dir/y.z", &get_logfile);
74$answer = ".x\n$dir/x.z.x\nx\n\[email protected]\n$dir.x\nx.z.x\n.y\n$dir/y.z.y\n\y\n\[email protected]\n$dir.y\ny.z.y\n";
75&compare_output($answer, &get_logfile(1));
76
77&run_make_with_options($makefile2, "$dir/biz", &get_logfile);
78$answer = "$dir/biz.x\n$dir.x\nbiz.x\n";
79&compare_output($answer, &get_logfile(1));
80
81# TEST #3 -- test for Savannah bug #12320.
82#
83run_make_test('
84.SUFFIXES: .b .src
85
86mbr.b: mbr.src
87 @echo $*
88
89mbr.src: ; @:
90
91',
92'',
93'mbr
94');
95
961;
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette