varname-dot-make-level.mk revision 1.4 1 # $NetBSD: varname-dot-make-level.mk,v 1.4 2024/11/23 22:48:09 rillig Exp $
2 #
3 # Tests for the special .MAKE.LEVEL variable, which informs about the
4 # recursion level. It is related to the environment variable MAKELEVEL,
5 # even though they don't have the same value.
6
7 all: level_1 set-env
8
9 level_1: .PHONY
10 @printf 'level 1: variable %s, env %s\n' ${.MAKE.LEVEL} "$$${.MAKE.LEVEL.ENV}"
11 @${MAKE} -f ${MAKEFILE} level_2
12
13 level_2: .PHONY
14 @printf 'level 2: variable %s, env %s\n' ${.MAKE.LEVEL} "$$${.MAKE.LEVEL.ENV}"
15 @${MAKE} -f ${MAKEFILE} level_3
16
17 level_3: .PHONY
18 @printf 'level 3: variable %s, env %s\n' ${.MAKE.LEVEL} "$$${.MAKE.LEVEL.ENV}"
19
20 # The .unexport-env directive clears the environment, except for the
21 # MAKE_LEVEL variable.
22 .if make(level_2)
23 .unexport-env
24 .endif
25
26
27 # FIXME: The error message "Cannot delete" is confusing.
28 # expect: make: Cannot delete ".MAKE.LEVEL.ENV" as it is read-only
29 set-env:
30 @${MAKE} -f /dev/null .MAKE.LEVEL.ENV=MAKELEVEL
31