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