xref: /freebsd/contrib/bmake/unit-tests/varcmd.mk (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1# $NetBSD: varcmd.mk,v 1.5 2020/10/24 08:50:17 rillig Exp $
2#
3# Test behaviour of recursive make and vars set on command line.
4
5FU=	fu
6FOO?=	foo
7.if !empty(.TARGETS)
8TAG=	${.TARGETS}
9.endif
10TAG?=	default
11
12all:	one
13
14show:
15	@echo "${TAG} FU=<v>${FU}</v> FOO=<v>${FOO}</v> VAR=<v>${VAR}</v>"
16
17one:	show
18	@${.MAKE} -f ${MAKEFILE} FU=bar FOO+=goo two
19
20two:	show
21	@${.MAKE} -f ${MAKEFILE} three
22
23three:	show
24	@${.MAKE} -f ${MAKEFILE} four
25
26
27.ifmake two
28# this should not work
29FU+= oops
30FOO+= oops
31_FU:= ${FU}
32_FOO:= ${FOO}
33two: immutable
34immutable:
35	@echo "$@ FU='${_FU}'"
36	@echo "$@ FOO='${_FOO}'"
37.endif
38.ifmake four
39VAR=Internal
40.MAKEOVERRIDES+= VAR
41.endif
42
43four:	show
44	@${.MAKE} -f ${MAKEFILE} five
45
46M=	x
47V.y=	is y
48V.x=	is x
49V:=	${V.$M}
50K:=	${V}
51
52show-v:
53	@echo '${TAG} v=${V} k=${K}'
54
55five:	show show-v
56	@${.MAKE} -f ${MAKEFILE} M=y six
57
58six:	show-v
59	@${.MAKE} -f ${MAKEFILE} V=override show-v
60
61