Home | History | Annotate | Line # | Download | only in unit-tests
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