1 # $NetBSD: cmdline-undefined.mk,v 1.6 2025/06/30 21:44:39 rillig Exp $ 2 # 3 # Tests for undefined variables in expressions in the command line. 4 5 all: 6 # When the command line is parsed, variable assignments using the 7 # '=' assignment operator do get their variable name expanded 8 # (which probably occurs rarely in practice, if at all), but their 9 # variable value is not expanded, as usual. 10 # 11 # expect+30: From the command line: Undefined is . 12 # expect+30: From .MAKEFLAGS '=': Undefined is . 13 # expect+30: From .MAKEFLAGS ':=': Undefined is . 14 # expect+33: From the command line: Undefined is now defined. 15 # expect+33: From .MAKEFLAGS '=': Undefined is now defined. 16 # expect+33: From .MAKEFLAGS ':=': Undefined is now defined. 17 @echo 'The = assignment operator' 18 @${.MAKE} -f ${MAKEFILE} print-undefined \ 19 CMDLINE='Undefined is $${UNDEFINED}.' 20 @echo 21 22 # The interesting case is using the ':=' assignment operator, which 23 # expands its right-hand side. But only those variables that are 24 # defined. 25 # expect+16: From the command line: Undefined is . 26 # expect+16: From .MAKEFLAGS '=': Undefined is . 27 # expect+16: From .MAKEFLAGS ':=': Undefined is . 28 # expect+19: From the command line: Undefined is now defined. 29 # expect+19: From .MAKEFLAGS '=': Undefined is now defined. 30 # expect+19: From .MAKEFLAGS ':=': Undefined is now defined. 31 @echo 'The := assignment operator' 32 @${.MAKE} -f ${MAKEFILE} print-undefined \ 33 CMDLINE:='Undefined is $${UNDEFINED}.' 34 @echo 35 36 .if make(print-undefined) 37 38 .MAKEFLAGS: MAKEFLAGS_ASSIGN='Undefined is $${UNDEFINED}.' 39 .MAKEFLAGS: MAKEFLAGS_SUBST:='Undefined is $${UNDEFINED}.' 40 41 .info From the command line: ${CMDLINE} 42 .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN} 43 .info From .MAKEFLAGS ':=': ${MAKEFLAGS_SUBST} 44 45 UNDEFINED?= now defined 46 47 .info From the command line: ${CMDLINE} 48 .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN} 49 .info From .MAKEFLAGS ':=': ${MAKEFLAGS_SUBST} 50 51 print-undefined: 52 .endif 53