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