1 # $NetBSD: varparse-dynamic.mk,v 1.4 2021/02/04 21:42:47 rillig Exp $
3 # Before 2020-07-27, there was an off-by-one error in Var_Parse that skipped
4 # the last character in the variable name.
5 # To trigger the bug, the variable must not be defined.
6 .if ${.TARGET} # exact match, may be undefined
8 .if ${.TARGEX} # 1 character difference, must be defined
10 .if ${.TARGXX} # 2 characters difference, must be defined
13 # When a dynamic variable (such as .TARGET) is evaluated in the global
14 # scope, it is not yet ready to be expanded. Therefore the complete
15 # expression is returned as the variable value, hoping that it can be
16 # resolved at a later point.
18 # This test covers the code in Var_Parse that deals with VAR_JUNK but not
19 # VAR_KEEP for dynamic variables.
20 .if ${.TARGET:S,^,,} != "\${.TARGET:S,^,,}"
24 # If a dynamic variable is expanded in a non-local scope, the expression
25 # based on this variable is not expanded. But there may be nested variable
26 # expressions in the modifiers, and these are kept unexpanded as well.
27 .if ${.TARGET:M${:Ufallback}} != "\${.TARGET:M\${:Ufallback}}"
30 .if ${.TARGET:M${UNDEF}} != "\${.TARGET:M\${UNDEF}}"