1 1.5 rillig # $NetBSD: cond-token-var.mk,v 1.5 2020/11/15 14:58:14 rillig Exp $ 2 1.1 rillig # 3 1.5 rillig # Tests for variable expressions in .if conditions. 4 1.5 rillig # 5 1.5 rillig # Note the fine distinction between a variable and a variable expression. 6 1.5 rillig # A variable has a name and a value. To access the value, one writes a 7 1.5 rillig # variable expression of the form ${VAR}. This is a simple variable 8 1.5 rillig # expression. Variable expressions can get more complicated by adding 9 1.5 rillig # variable modifiers such as in ${VAR:Mpattern}. 10 1.5 rillig # 11 1.5 rillig # XXX: Strictly speaking, variable modifiers should be called expression 12 1.5 rillig # modifiers instead since they only modify the expression, not the variable. 13 1.5 rillig # Well, except for the assignment modifiers, these do indeed change the value 14 1.5 rillig # of the variable. 15 1.1 rillig 16 1.3 rillig DEF= defined 17 1.1 rillig 18 1.3 rillig # A defined variable may appear on either side of the comparison. 19 1.3 rillig .if ${DEF} == ${DEF} 20 1.4 rillig . info ok 21 1.3 rillig .else 22 1.4 rillig . error 23 1.3 rillig .endif 24 1.3 rillig 25 1.3 rillig # A variable that appears on the left-hand side must be defined. 26 1.5 rillig # The following line thus generates a parse error. 27 1.3 rillig .if ${UNDEF} == ${DEF} 28 1.4 rillig . error 29 1.3 rillig .endif 30 1.3 rillig 31 1.3 rillig # A variable that appears on the right-hand side must be defined. 32 1.5 rillig # The following line thus generates a parse error. 33 1.3 rillig .if ${DEF} == ${UNDEF} 34 1.4 rillig . error 35 1.3 rillig .endif 36 1.3 rillig 37 1.3 rillig # A defined variable may appear as an expression of its own. 38 1.3 rillig .if ${DEF} 39 1.3 rillig .endif 40 1.3 rillig 41 1.5 rillig # An undefined variable on its own generates a parse error. 42 1.3 rillig .if ${UNDEF} 43 1.3 rillig .endif 44 1.3 rillig 45 1.5 rillig # The :U modifier turns an undefined expression into a defined expression. 46 1.5 rillig # Since the expression is defined now, it doesn't generate any parse error. 47 1.3 rillig .if ${UNDEF:U} 48 1.3 rillig .endif 49