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