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