]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - unit-tests/cmdline-undefined.mk
Import bmake-20230622
[FreeBSD/FreeBSD.git] / unit-tests / cmdline-undefined.mk
1 # $NetBSD: cmdline-undefined.mk,v 1.3 2023/06/01 20:56:35 rillig Exp $
2 #
3 # Tests for undefined variable 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         @echo 'The = assignment operator'
12         @${.MAKE} -f ${MAKEFILE} print-undefined \
13                 CMDLINE='Undefined is $${UNDEFINED}.'
14         @echo
15
16         # The interesting case is using the ':=' assignment operator, which
17         # expands its right-hand side.  But only those variables that are
18         # defined.
19         @echo 'The := assignment operator'
20         @${.MAKE} -f ${MAKEFILE} print-undefined \
21                 CMDLINE:='Undefined is $${UNDEFINED}.'
22         @echo
23
24 .if make(print-undefined)
25
26 .MAKEFLAGS: MAKEFLAGS_ASSIGN='Undefined is $${UNDEFINED}.'
27 .MAKEFLAGS: MAKEFLAGS_SUBST:='Undefined is $${UNDEFINED}.'
28
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}
38
39 UNDEFINED?=     now defined
40
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}
50
51 print-undefined:
52 .endif