1 1.7 rillig # $NetBSD: cond-op-not.mk,v 1.7 2021/01/19 17:49:13 rillig Exp $ 2 1.1 rillig # 3 1.5 rillig # Tests for the ! operator in .if conditions, which negates its argument. 4 1.1 rillig 5 1.3 rillig # The exclamation mark negates its operand. 6 1.3 rillig .if !1 7 1.4 rillig . error 8 1.3 rillig .endif 9 1.3 rillig 10 1.3 rillig # Exclamation marks can be chained. 11 1.3 rillig # This doesn't happen in practice though. 12 1.3 rillig .if !!!1 13 1.4 rillig . error 14 1.3 rillig .endif 15 1.3 rillig 16 1.3 rillig # The ! binds more tightly than the &&. 17 1.3 rillig .if !!0 && 1 18 1.4 rillig . error 19 1.3 rillig .endif 20 1.1 rillig 21 1.6 rillig # The operator '==' binds more tightly than '!'. 22 1.6 rillig # This is unusual since most other programming languages define the precedence 23 1.6 rillig # to be the other way round. 24 1.5 rillig .if !${:Uexpression} == "expression" 25 1.5 rillig . error 26 1.5 rillig .endif 27 1.5 rillig 28 1.5 rillig .if !${:U} 29 1.5 rillig . info Not empty evaluates to true. 30 1.5 rillig .else 31 1.5 rillig . info Not empty evaluates to false. 32 1.5 rillig .endif 33 1.5 rillig 34 1.5 rillig .if !${:U } 35 1.5 rillig . info Not space evaluates to true. 36 1.5 rillig .else 37 1.5 rillig . info Not space evaluates to false. 38 1.5 rillig .endif 39 1.5 rillig 40 1.5 rillig .if !${:U0} 41 1.5 rillig . info Not 0 evaluates to true. 42 1.5 rillig .else 43 1.5 rillig . info Not 0 evaluates to false. 44 1.5 rillig .endif 45 1.5 rillig 46 1.5 rillig .if !${:U1} 47 1.5 rillig . info Not 1 evaluates to true. 48 1.5 rillig .else 49 1.5 rillig . info Not 1 evaluates to false. 50 1.5 rillig .endif 51 1.5 rillig 52 1.5 rillig .if !${:Uword} 53 1.5 rillig . info Not word evaluates to true. 54 1.5 rillig .else 55 1.5 rillig . info Not word evaluates to false. 56 1.5 rillig .endif 57 1.5 rillig 58 1.7 rillig # A single exclamation mark is a parse error. 59 1.7 rillig .if ! 60 1.7 rillig . error 61 1.7 rillig .else 62 1.7 rillig . error 63 1.7 rillig .endif 64 1.7 rillig 65 1.1 rillig all: 66 1.1 rillig @:; 67