Home | History | Annotate | Line # | Download | only in unit-tests
varname-dot-make-level.mk revision 1.5
      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