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