xref: /netbsd-src/external/gpl2/gmake/dist/tests/scripts/features/conditionals (revision 69606e3f5c9388e52aed8c120ad63c049ca45d8f)
1*69606e3fSchristos#                                                                    -*-perl-*-
2*69606e3fSchristos$description = "Check GNU make conditionals.";
3*69606e3fSchristos
4*69606e3fSchristos$details = "Attempt various different flavors of GNU make conditionals.";
5*69606e3fSchristos
6*69606e3fSchristosrun_make_test('
7*69606e3fSchristosarg1 = first
8*69606e3fSchristosarg2 = second
9*69606e3fSchristosarg3 = third
10*69606e3fSchristosarg4 = cc
11*69606e3fSchristosarg5 = second
12*69606e3fSchristos
13*69606e3fSchristosall:
14*69606e3fSchristosifeq ($(arg1),$(arg2))
15*69606e3fSchristos	@echo arg1 equals arg2
16*69606e3fSchristoselse
17*69606e3fSchristos	@echo arg1 NOT equal arg2
18*69606e3fSchristosendif
19*69606e3fSchristos
20*69606e3fSchristosifeq \'$(arg2)\' "$(arg5)"
21*69606e3fSchristos	@echo arg2 equals arg5
22*69606e3fSchristoselse
23*69606e3fSchristos	@echo arg2 NOT equal arg5
24*69606e3fSchristosendif
25*69606e3fSchristos
26*69606e3fSchristosifneq \'$(arg3)\' \'$(arg4)\'
27*69606e3fSchristos	@echo arg3 NOT equal arg4
28*69606e3fSchristoselse
29*69606e3fSchristos	@echo arg3 equal arg4
30*69606e3fSchristosendif
31*69606e3fSchristos
32*69606e3fSchristosifndef undefined
33*69606e3fSchristos	@echo variable is undefined
34*69606e3fSchristoselse
35*69606e3fSchristos	@echo variable undefined is defined
36*69606e3fSchristosendif
37*69606e3fSchristosifdef arg4
38*69606e3fSchristos	@echo arg4 is defined
39*69606e3fSchristoselse
40*69606e3fSchristos	@echo arg4 is NOT defined
41*69606e3fSchristosendif',
42*69606e3fSchristos              '',
43*69606e3fSchristos              'arg1 NOT equal arg2
44*69606e3fSchristosarg2 equals arg5
45*69606e3fSchristosarg3 NOT equal arg4
46*69606e3fSchristosvariable is undefined
47*69606e3fSchristosarg4 is defined');
48*69606e3fSchristos
49*69606e3fSchristos
50*69606e3fSchristos# Test expansion of variables inside ifdef.
51*69606e3fSchristos
52*69606e3fSchristosrun_make_test('
53*69606e3fSchristosfoo = 1
54*69606e3fSchristos
55*69606e3fSchristosFOO = foo
56*69606e3fSchristosF = f
57*69606e3fSchristos
58*69606e3fSchristosDEF = no
59*69606e3fSchristosDEF2 = no
60*69606e3fSchristos
61*69606e3fSchristosifdef $(FOO)
62*69606e3fSchristosDEF = yes
63*69606e3fSchristosendif
64*69606e3fSchristos
65*69606e3fSchristosifdef $(F)oo
66*69606e3fSchristosDEF2 = yes
67*69606e3fSchristosendif
68*69606e3fSchristos
69*69606e3fSchristos
70*69606e3fSchristosDEF3 = no
71*69606e3fSchristosFUNC = $1
72*69606e3fSchristosifdef $(call FUNC,DEF)3
73*69606e3fSchristos  DEF3 = yes
74*69606e3fSchristosendif
75*69606e3fSchristos
76*69606e3fSchristosall:; @echo DEF=$(DEF) DEF2=$(DEF2) DEF3=$(DEF3)',
77*69606e3fSchristos              '',
78*69606e3fSchristos              'DEF=yes DEF2=yes DEF3=yes');
79*69606e3fSchristos
80*69606e3fSchristos
81*69606e3fSchristos# Test all the different "else if..." constructs
82*69606e3fSchristos
83*69606e3fSchristosrun_make_test('
84*69606e3fSchristosarg1 = first
85*69606e3fSchristosarg2 = second
86*69606e3fSchristosarg3 = third
87*69606e3fSchristosarg4 = cc
88*69606e3fSchristosarg5 = fifth
89*69606e3fSchristos
90*69606e3fSchristosresult =
91*69606e3fSchristos
92*69606e3fSchristosifeq ($(arg1),$(arg2))
93*69606e3fSchristos  result += arg1 equals arg2
94*69606e3fSchristoselse ifeq \'$(arg2)\' "$(arg5)"
95*69606e3fSchristos  result += arg2 equals arg5
96*69606e3fSchristoselse ifneq \'$(arg3)\' \'$(arg3)\'
97*69606e3fSchristos  result += arg3 NOT equal arg4
98*69606e3fSchristoselse ifndef arg5
99*69606e3fSchristos  result += variable is undefined
100*69606e3fSchristoselse ifdef undefined
101*69606e3fSchristos  result += arg4 is defined
102*69606e3fSchristoselse
103*69606e3fSchristos  result += success
104*69606e3fSchristosendif
105*69606e3fSchristos
106*69606e3fSchristos
107*69606e3fSchristosall: ; @echo $(result)',
108*69606e3fSchristos              '',
109*69606e3fSchristos              'success');
110*69606e3fSchristos
111*69606e3fSchristos
112*69606e3fSchristos# Test some random "else if..." construct nesting
113*69606e3fSchristos
114*69606e3fSchristosrun_make_test('
115*69606e3fSchristosarg1 = first
116*69606e3fSchristosarg2 = second
117*69606e3fSchristosarg3 = third
118*69606e3fSchristosarg4 = cc
119*69606e3fSchristosarg5 = second
120*69606e3fSchristos
121*69606e3fSchristosifeq ($(arg1),$(arg2))
122*69606e3fSchristos  $(info failed 1)
123*69606e3fSchristoselse ifeq \'$(arg2)\' "$(arg2)"
124*69606e3fSchristos  ifdef undefined
125*69606e3fSchristos    $(info failed 2)
126*69606e3fSchristos  else
127*69606e3fSchristos    $(info success)
128*69606e3fSchristos  endif
129*69606e3fSchristoselse ifneq \'$(arg3)\' \'$(arg3)\'
130*69606e3fSchristos  $(info failed 3)
131*69606e3fSchristoselse ifdef arg5
132*69606e3fSchristos  $(info failed 4)
133*69606e3fSchristoselse ifdef undefined
134*69606e3fSchristos  $(info failed 5)
135*69606e3fSchristoselse
136*69606e3fSchristos  $(info failed 6)
137*69606e3fSchristosendif
138*69606e3fSchristos
139*69606e3fSchristos.PHONY: all
140*69606e3fSchristosall: ; @:',
141*69606e3fSchristos              '',
142*69606e3fSchristos              'success');
143*69606e3fSchristos
144*69606e3fSchristos
145*69606e3fSchristos# This tells the test driver that the perl test script executed properly.
146*69606e3fSchristos1;
147