VirtualBox

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

Last change on this file was 3140, checked in by bird, 7 years ago

kmk: Merged in changes from GNU make 4.2.1 (2e55f5e4abdc0e38c1d64be703b446695e70b3b6 / https://git.savannah.gnu.org/git/make.git).

  • Property svn:eol-style set to LF
File size: 2.8 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
11# If we don't support archives then the prerequisite is different
12my $prereq = exists $FEATURES{'archives'} ? '$' : '$(PRE)';
13
14run_make_test(q!
15ifdef SE
16 .SECONDEXPANSION:
17endif
18foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^'
19PRE = one two
20bar$$baz: $${PRE}
21baraz: $${PRE}
22PRE = three four
23.DEFAULT: ; @echo '$@'
24!,
25 '',
26 "$prereq\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
27
28run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
29
30# TEST #1: automatic variables.
31#
32run_make_test(q!
33.SECONDEXPANSION:
34.DEFAULT: ; @echo '$@'
35
36foo: bar baz
37
38foo: biz | buz
39
40foo: [email protected] \
41 $$<.2 \
42 $$(addsuffix .3,$$^) \
43 $$(addsuffix .4,$$+) \
44 $$|.5 \
45 $$*.6
46
47!,
48'-j1',
49'bar
50baz
51biz
52buz
53foo.1
54bar.2
55bar.3
56baz.3
57biz.3
58bar.4
59baz.4
60biz.4
61buz.5
62.6
63');
64
65
66# Test #2: target/pattern -specific variables.
67#
68run_make_test(q!
69.SECONDEXPANSION:
70.DEFAULT: ; @echo '$@'
71
72foo.x: $$a $$b
73
74foo.x: a := bar
75
76%.x: b := baz
77!,
78'',
79'bar
80baz
81');
82
83
84# Test #3: order of prerequisites.
85#
86run_make_test(q!
87.SECONDEXPANSION:
88.DEFAULT: ; @echo '$@'
89
90all: foo bar baz
91
92# Subtest #1
93foo: foo.1; @:
94foo: foo.2
95foo: foo.3
96
97# Subtest #2
98bar: bar.2
99bar: bar.1; @:
100bar: bar.3
101
102# Subtest #3
103baz: baz.1
104baz: baz.2
105baz: ; @:
106!,
107'-j1',
108'foo.1
109foo.2
110foo.3
111bar.1
112bar.2
113bar.3
114baz.1
115baz.2
116');
117
118# TEST #4: eval in a context where there is no reading_file
119run_make_test(q!
120.SECONDEXPANSION:
121all : $$(eval $$(info test))
122!,
123 '', "test\n#MAKE#: Nothing to be done for 'all'.\n");
124
125# TEST #5: (NEGATIVE) catch eval in a prereq list trying to create new
126# target/prereq relationships.
127
128run_make_test(q!
129.SECONDEXPANSION:
130proj1.exe : proj1.o $$(eval $$(test))
131define test
132proj1.o : proj1.c
133proj1.c: proj1.h
134endef
135!,
136 '', "#MAKE#: *** prerequisites cannot be defined in recipes. Stop.\n", 512);
137
138
139# Automatic $$+ variable expansion issue. Savannah bug #25780
140run_make_test(q!
141all : foo foo
142.SECONDEXPANSION:
143all : $$+ ; @echo '$+'
144foo : ;
145!,
146 '', "foo foo foo foo\n");
147
148
149# Automatic $$+ variable expansion issue. Savannah bug #25780
150run_make_test(q!
151all : bar bar
152bar : ;
153q%x : ;
154.SECONDEXPANSION:
155a%l: q1x $$+ q2x ; @echo '$+'
156!,
157 '', "q1x bar bar q2x bar bar\n");
158
159
160# Allow patsubst shorthand in second expansion context.
161# Requires the colon to be quoted. Savannah bug #16545
162run_make_test(q!
163.PHONY: foo.bar
164.SECONDEXPANSION:
165foo: $$(@\\:%=%.bar); @echo '$^'
166!,
167 '', "foo.bar\n");
168
1691;
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