VirtualBox

source: kBuild/trunk/src/gmake/tests/scripts/variables/automatic@ 285

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

This commit was generated by cvs2svn to compensate for changes in r284,
which included commits to RCS files with non-trunk default branches.

  • 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.

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