1 # $NetBSD: varname-makefile.mk,v 1.3 2020/11/09 22:36:44 rillig Exp $ 2 # 3 # Tests for the special MAKEFILE variable, which contains the current 4 # makefile from the -f command line option. 5 # 6 # When there are multiple -f options, the variable MAKEFILE is set 7 # again for each of these makefiles, before the file is parsed. 8 # Including a file via .include does not influence the MAKEFILE 9 # variable though. 10 11 .if ${MAKEFILE:T} != "varname-makefile.mk" 12 . error 13 .endif 14 15 # This variable lives in the "Internal" namespace. 16 # TODO: Why does it do that, and what consequences does this have? 17 18 # Deleting the variable does not work since this variable does not live in 19 # the "Global" namespace but in "Internal", which is kind of a child 20 # namespace. 21 # 22 .undef MAKEFILE 23 .if ${MAKEFILE:T} != "varname-makefile.mk" 24 . error 25 .endif 26 27 # Overwriting this variable is possible since the "Internal" namespace 28 # serves as a fallback for the "Global" namespace (see VarFind). 29 # 30 MAKEFILE= overwritten 31 .if ${MAKEFILE:T} != "overwritten" 32 . error 33 .endif 34 35 # When the overwritten value is deleted, the fallback value becomes 36 # visible again. 37 # 38 .undef MAKEFILE 39 .if ${MAKEFILE:T} != "varname-makefile.mk" 40 . error 41 .endif 42 43 all: 44 # MAKEFILE is the file that appeared last in the command line. 45 : In the end, MAKEFILE is ${MAKEFILE}. 46 47 # Additional makefiles can be added while reading a makefile. They will be 48 # read in order. 49 .MAKEFLAGS: -f /dev/null 50