xref: /freebsd/contrib/bmake/unit-tests/cmdline.mk (revision 89e3d5671ba13dceca272d5b159c9bd805f3f504)
1# $NetBSD: cmdline.mk,v 1.2 2020/11/15 14:07:53 rillig Exp $
2#
3# Tests for command line parsing and related special variables.
4
5TMPBASE?=	/tmp
6SUB1=		a7b41170-53f8-4cc2-bc5c-e4c3dd93ec45	# just a random UUID
7SUB2=		6a8899d2-d227-4b55-9b6b-f3c8eeb83fd5	# just a random UUID
8MAKE_CMD=	env TMPBASE=${TMPBASE}/${SUB1} ${.MAKE} -f ${MAKEFILE} -r
9DIR2=		${TMPBASE}/${SUB2}
10DIR12=		${TMPBASE}/${SUB1}/${SUB2}
11
12all: prepare-dirs
13all: makeobjdir-direct makeobjdir-indirect
14
15prepare-dirs:
16	@rm -rf ${DIR2} ${DIR12}
17	@mkdir -p ${DIR2} ${DIR12}
18
19# The .OBJDIR can be set via the MAKEOBJDIR command line variable.
20# It must be a command line variable; an environment variable would not work.
21makeobjdir-direct:
22	@echo $@:
23	@${MAKE_CMD} MAKEOBJDIR=${DIR2} show-objdir
24
25# The .OBJDIR can be set via the MAKEOBJDIR command line variable,
26# and that variable could even contain the usual modifiers.
27# Since the .OBJDIR=MAKEOBJDIR assignment happens very early,
28# the SUB2 variable in the modifier is not defined yet and is therefore empty.
29# The SUB1 in the resulting path comes from the environment variable TMPBASE,
30# see MAKE_CMD.
31makeobjdir-indirect:
32	@echo $@:
33	@${MAKE_CMD} MAKEOBJDIR='$${TMPBASE}/$${SUB2}' show-objdir
34
35show-objdir:
36	@echo $@: ${.OBJDIR:Q}
37