1 1.7 rillig # $NetBSD: directive-undef.mk,v 1.7 2020/12/19 20:35:39 rillig Exp $ 2 1.1 rillig # 3 1.2 rillig # Tests for the .undef directive. 4 1.6 rillig # 5 1.6 rillig # See also: 6 1.6 rillig # directive-misspellings.mk 7 1.1 rillig 8 1.3 rillig # As of 2020-07-28, .undef only undefines the first variable. 9 1.3 rillig # All further variable names are silently ignored. 10 1.3 rillig # See parse.c, string literal "undef". 11 1.3 rillig 1= 1 12 1.3 rillig 2= 2 13 1.3 rillig 3= 3 14 1.3 rillig .undef 1 2 3 15 1.3 rillig .if ${1:U_}${2:U_}${3:U_} != _23 16 1.4 rillig . warning $1$2$3 17 1.3 rillig .endif 18 1.1 rillig 19 1.7 rillig # Without any arguments, .undef tries to delete the variable with the empty 20 1.7 rillig # name, which never exists; see varname-empty.mk. 21 1.5 rillig .undef # oops: missing argument 22 1.5 rillig 23 1.7 rillig 24 1.7 rillig # It must be possible to undefine variables whose name includes spaces. 25 1.7 rillig SPACE= ${:U } 26 1.7 rillig ${SPACE}= space 27 1.7 rillig .if !defined(${SPACE}) 28 1.7 rillig . error 29 1.7 rillig .endif 30 1.7 rillig .undef ${SPACE} 31 1.7 rillig .if defined(${SPACE}) 32 1.7 rillig . error 33 1.7 rillig .endif 34 1.7 rillig 35 1.7 rillig 36 1.7 rillig # It must be possible to undefine variables whose name includes dollars. 37 1.7 rillig DOLLAR= $$ 38 1.7 rillig ${DOLLAR}= dollar 39 1.7 rillig .if !defined(${DOLLAR}) 40 1.7 rillig . error 41 1.7 rillig .endif 42 1.7 rillig .undef ${DOLLAR} 43 1.7 rillig .if defined(${DOLLAR}) 44 1.7 rillig . error 45 1.7 rillig .endif 46 1.7 rillig 47 1.7 rillig 48 1.1 rillig all: 49 1.1 rillig @:; 50