1 # $NetBSD: cmdline-undefined.mk,v 1.3 2023/06/01 20:56:35 rillig Exp $
3 # Tests for undefined variable expressions in the command line.
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.
11 @echo 'The = assignment operator'
12 @${.MAKE} -f ${MAKEFILE} print-undefined \
13 CMDLINE='Undefined is $${UNDEFINED}.'
16 # The interesting case is using the ':=' assignment operator, which
17 # expands its right-hand side. But only those variables that are
19 @echo 'The := assignment operator'
20 @${.MAKE} -f ${MAKEFILE} print-undefined \
21 CMDLINE:='Undefined is $${UNDEFINED}.'
24 .if make(print-undefined)
26 .MAKEFLAGS: MAKEFLAGS_ASSIGN='Undefined is $${UNDEFINED}.'
27 .MAKEFLAGS: MAKEFLAGS_SUBST:='Undefined is $${UNDEFINED}.'
29 # expect+2: From the command line: Undefined is .
30 # expect+1: From the command line: Undefined is .
31 .info From the command line: ${CMDLINE}
32 # expect+2: From .MAKEFLAGS '=': Undefined is .
33 # expect+1: From .MAKEFLAGS '=': Undefined is .
34 .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN}
35 # expect+2: From .MAKEFLAGS ':=': Undefined is .
36 # expect+1: From .MAKEFLAGS ':=': Undefined is .
37 .info From .MAKEFLAGS ':=': ${MAKEFLAGS_SUBST}
39 UNDEFINED?= now defined
41 # expect+2: From the command line: Undefined is now defined.
42 # expect+1: From the command line: Undefined is now defined.
43 .info From the command line: ${CMDLINE}
44 # expect+2: From .MAKEFLAGS '=': Undefined is now defined.
45 # expect+1: From .MAKEFLAGS '=': Undefined is now defined.
46 .info From .MAKEFLAGS '=': ${MAKEFLAGS_ASSIGN}
47 # expect+2: From .MAKEFLAGS ':=': Undefined is now defined.
48 # expect+1: From .MAKEFLAGS ':=': Undefined is now defined.
49 .info From .MAKEFLAGS ':=': ${MAKEFLAGS_SUBST}