VirtualBox

source: kBuild/trunk/src/kmk/tests/scripts/features/se_explicit@ 2591

Last change on this file since 2591 was 2591, checked in by bird, 12 years ago

kmk: Merged in changes from GNU make 3.82. Previous GNU make base version was gnumake-2008-10-28-CVS.

  • Property svn:eol-style set to LF
File size: 2.5 KB
Line 
1# -*-perl-*-
2$description = "Test second expansion in ordinary rules.";
3
4$details = "";
5
6# TEST #0: Test handing of '$' in prerequisites with and without second
7# expansion.
8# bird: Modified this test to use ${PRE} instead of $(PRE) as it failes
9# when make is built with NO_ARCHIVES defined.
10
11run_make_test(q!
12ifdef SE
13 .SECONDEXPANSION:
14endif
15foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^'
16PRE = one two
17bar$$baz: $${PRE}
18baraz: $${PRE}
19PRE = three four
20.DEFAULT: ; @echo '$@'
21!,
22 '',
23 "\${PRE}\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
24
25run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
26
27# TEST #1: automatic variables.
28#
29run_make_test(q!
30.SECONDEXPANSION:
31.DEFAULT: ; @echo '$@'
32
33foo: bar baz
34
35foo: biz | buz
36
37foo: $$@.1 \
38 $$<.2 \
39 $$(addsuffix .3,$$^) \
40 $$(addsuffix .4,$$+) \
41 $$|.5 \
42 $$*.6
43
44!,
45'-j1',
46'bar
47baz
48biz
49buz
50foo.1
51bar.2
52bar.3
53baz.3
54biz.3
55bar.4
56baz.4
57biz.4
58buz.5
59.6
60');
61
62
63# Test #2: target/pattern -specific variables.
64#
65run_make_test(q!
66.SECONDEXPANSION:
67.DEFAULT: ; @echo '$@'
68
69foo.x: $$a $$b
70
71foo.x: a := bar
72
73%.x: b := baz
74!,
75'',
76'bar
77baz
78');
79
80
81# Test #3: order of prerequisites.
82#
83run_make_test(q!
84.SECONDEXPANSION:
85.DEFAULT: ; @echo '$@'
86
87all: foo bar baz
88
89# Subtest #1
90foo: foo.1; @:
91foo: foo.2
92foo: foo.3
93
94# Subtest #2
95bar: bar.2
96bar: bar.1; @:
97bar: bar.3
98
99# Subtest #3
100baz: baz.1
101baz: baz.2
102baz: ; @:
103!,
104'-j1',
105'foo.1
106foo.2
107foo.3
108bar.1
109bar.2
110bar.3
111baz.1
112baz.2
113');
114
115# TEST #4: eval in a context where there is no reading_file
116run_make_test(q!
117.SECONDEXPANSION:
118all : $$(eval $$(info test))
119!,
120 '', "test\n#MAKE#: Nothing to be done for `all'.\n");
121
122# TEST #5: (NEGATIVE) catch eval in a prereq list trying to create new
123# target/prereq relationships.
124
125run_make_test(q!
126.SECONDEXPANSION:
127proj1.exe : proj1.o $$(eval $$(test))
128define test
129proj1.o : proj1.c
130proj1.c: proj1.h
131endef
132!,
133 '', "#MAKE#: *** prerequisites cannot be defined in recipes. Stop.\n", 512);
134
135
136# Automatic $$+ variable expansion issue. Savannah bug #25780
137run_make_test(q!
138all : foo foo
139.SECONDEXPANSION:
140all : $$+ ; @echo '$+'
141foo : ;
142!,
143 '', "foo foo foo foo\n");
144
145
146# Automatic $$+ variable expansion issue. Savannah bug #25780
147run_make_test(q!
148all : bar bar
149bar : ;
150q%x : ;
151.SECONDEXPANSION:
152a%l: q1x $$+ q2x ; @echo '$+'
153!,
154 '', "q1x bar bar q2x bar bar\n");
155
156
157# This tells the test driver that the perl test script executed properly.
1581;
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