1 1.5 rillig # $NetBSD: cmdline-undefined.mk,v 1.5 2024/04/23 22:51:28 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.1 rillig @echo 'The = assignment operator' 12 1.1 rillig @${.MAKE} -f ${MAKEFILE} print-undefined \ 13 1.1 rillig CMDLINE='Undefined is $${UNDEFINED}.' 14 1.1 rillig @echo 15 1.1 rillig 16 1.1 rillig # The interesting case is using the ':=' assignment operator, which 17 1.1 rillig # expands its right-hand side. But only those variables that are 18 1.1 rillig # defined. 19 1.1 rillig @echo 'The := assignment operator' 20 1.1 rillig @${.MAKE} -f ${MAKEFILE} print-undefined \ 21 1.1 rillig CMDLINE:='Undefined is $${UNDEFINED}.' 22 1.1 rillig @echo 23 1.1 rillig 24 1.1 rillig .if make(print-undefined) 25 1.1 rillig 26 1.1 rillig .MAKEFLAGS: MAKEFLAGS_ASSIGN='Undefined is $${UNDEFINED}.' 27 1.1 rillig .MAKEFLAGS: MAKEFLAGS_SUBST:='Undefined is $${UNDEFINED}.' 28 1.1 rillig 29 1.3 rillig # expect+2: From the command line: Undefined is . 30 1.3 rillig # expect+1: From the command line: Undefined is . 31 1.1 rillig .info From the command line: ${CMDLINE} 32 1.3 rillig # expect+2: From .MAKEFLAGS '=': Undefined is . 33 1.3 rillig # expect+1: From .MAKEFLAGS '=': Undefined is . 34 1.1 rillig .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN} 35 1.3 rillig # expect+2: From .MAKEFLAGS ':=': Undefined is . 36 1.3 rillig # expect+1: From .MAKEFLAGS ':=': Undefined is . 37 1.1 rillig .info From .MAKEFLAGS ':=': ${MAKEFLAGS_SUBST} 38 1.1 rillig 39 1.1 rillig UNDEFINED?= now defined 40 1.1 rillig 41 1.3 rillig # expect+2: From the command line: Undefined is now defined. 42 1.3 rillig # expect+1: From the command line: Undefined is now defined. 43 1.1 rillig .info From the command line: ${CMDLINE} 44 1.3 rillig # expect+2: From .MAKEFLAGS '=': Undefined is now defined. 45 1.3 rillig # expect+1: From .MAKEFLAGS '=': Undefined is now defined. 46 1.1 rillig .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN} 47 1.3 rillig # expect+2: From .MAKEFLAGS ':=': Undefined is now defined. 48 1.3 rillig # expect+1: From .MAKEFLAGS ':=': Undefined is now defined. 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