Home | History | Annotate | Download | only in features
      1 #                                                                    -*-perl-*-
      2 $description = "Check GNU make conditionals.";
      3 
      4 $details = "Attempt various different flavors of GNU make conditionals.";
      5 
      6 run_make_test('
      7 arg1 = first
      8 arg2 = second
      9 arg3 = third
     10 arg4 = cc
     11 arg5 = second
     12 
     13 all:
     14 ifeq ($(arg1),$(arg2))
     15 	@echo arg1 equals arg2
     16 else
     17 	@echo arg1 NOT equal arg2
     18 endif
     19 
     20 ifeq \'$(arg2)\' "$(arg5)"
     21 	@echo arg2 equals arg5
     22 else
     23 	@echo arg2 NOT equal arg5
     24 endif
     25 
     26 ifneq \'$(arg3)\' \'$(arg4)\'
     27 	@echo arg3 NOT equal arg4
     28 else
     29 	@echo arg3 equal arg4
     30 endif
     31 
     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');
     48 
     49 
     50 # Test expansion of variables inside ifdef.
     51 
     52 run_make_test('
     53 foo = 1
     54 
     55 FOO = foo
     56 F = f
     57 
     58 DEF = no
     59 DEF2 = no
     60 
     61 ifdef $(FOO)
     62 DEF = yes
     63 endif
     64 
     65 ifdef $(F)oo
     66 DEF2 = yes
     67 endif
     68 
     69 
     70 DEF3 = no
     71 FUNC = $1
     72 ifdef $(call FUNC,DEF)3
     73   DEF3 = yes
     74 endif
     75 
     76 all:; @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 
     83 run_make_test('
     84 arg1 = first
     85 arg2 = second
     86 arg3 = third
     87 arg4 = cc
     88 arg5 = fifth
     89 
     90 result =
     91 
     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
    105 
    106 
    107 all: ; @echo $(result)',
    108               '',
    109               'success');
    110 
    111 
    112 # Test some random "else if..." construct nesting
    113 
    114 run_make_test('
    115 arg1 = first
    116 arg2 = second
    117 arg3 = third
    118 arg4 = cc
    119 arg5 = second
    120 
    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
    138 
    139 .PHONY: all
    140 all: ; @:',
    141               '',
    142               'success');
    143 
    144 
    145 # This tells the test driver that the perl test script executed properly.
    146 1;
    147