1# $NetBSD: vardebug.mk,v 1.7 2021/02/04 21:42:47 rillig Exp $
2#
3# Demonstrates the debugging output for var.c.
4
5.MAKEFLAGS: -dv FROM_CMDLINE=
6
7VAR=		added		# VarAdd
8VAR=		overwritten	# Var_Set
9.undef VAR			# Var_Delete (found)
10.undef VAR			# Var_Delete (not found)
11
12# The variable with the empty name cannot be set at all.
13${:U}=		empty name	# Var_Set
14${:U}+=		empty name	# Var_Append
15
16FROM_CMDLINE=	overwritten	# Var_Set (ignored)
17
18VAR=		1
19VAR+=		2
20VAR+=		3
21
22.if ${VAR:M[2]}			# ModifyWord_Match
23.endif
24.if ${VAR:N[2]}			# ModifyWord_NoMatch (no debug output)
25.endif
26
27.if ${VAR:S,2,two,}		# ParseModifierPart
28.endif
29
30.if ${VAR:Q}			# VarQuote
31.endif
32
33.if ${VAR:tu:tl:Q}		# ApplyModifiers
34.endif
35
36# ApplyModifiers, "Got ..."
37.if ${:Uvalue:${:UM*e}:Mvalu[e]}
38.endif
39
40.undef ${:UVAR}			# Var_Delete
41
42# When ApplyModifiers results in an error, this appears in the debug log
43# as "is error", without surrounding quotes.
44.if ${:Uvariable:unknown}
45.endif
46
47# XXX: The error message is "Malformed conditional", which is wrong.
48# The condition is syntactically fine, it just contains an undefined variable.
49#
50# There is a specialized error message for "Undefined variable", but as of
51# 2020-08-08, that is not covered by any unit tests.  It might even be
52# unreachable.
53.if ${UNDEFINED}
54.endif
55
56# By default, .SHELL is not defined and thus can be set.  As soon as it is
57# accessed, it is initialized in the command line scope (during VarFind),
58# where it is set to read-only.  Assigning to it is ignored.
59.MAKEFLAGS: .SHELL=overwritten
60
61.MAKEFLAGS: -d0
62
63all:
64	@:
65