freebsd-src/unit-tests/dir.mk
Simon J. Gerraty 2e36ab2363 Import bmake-20230126
Relevant/interesting changes (see ChangeLog for more):

	o variables like .newline and .MAKE.{GID,PID,PPID,UID}
	should be read-only.
	o .[NO]READONLY: for control of read-only variables
	o .SYSPATH: for controlling the path searched for makefiles
	o allow for white-space between command specifiers @+-
	o add more details to warning 'Extra targets ignored'
	o make.1: sync list of built-in variables with reality
	sort list of built-in variables
	o cond.c: add more details to error message for numeric comparison
	o job.c: fix handling of null bytes in output
	o Allow .break to terminate a .for loop early
	o var.c: fix out-of-bounds errors when parsing
	o fix exit status for '-q' (since 1994)
2023-01-27 16:23:54 -08:00

97 lines
2.1 KiB
Makefile

# $NetBSD: dir.mk,v 1.10 2023/01/24 00:24:02 sjg Exp $
#
# Tests for dir.c.
# hide /usr/share/mk from the debug log
.SYSPATH:
.SYSPATH: /
# Dependency lines may use braces for expansion.
# See DirExpandCurly for the implementation.
all: {one,two,three}
# XXX: The above dependency line is parsed as a single node named
# "{one,two,three}". There are no individual targets "one", "two", "three"
# yet. The node exists but is not a target since it never appeared
# on the left-hand side of a dependency operator. However, it is listed
# in .ALLTARGETS (which lists all nodes, not only targets).
.if target(one)
. error
.endif
.if target({one,two,three})
. error
.endif
.if ${.ALLTARGETS:M{one,two,three}} != "{one,two,three}"
. error
.endif
one:
: 1
two:
: 2
three:
: 3
# The braces may start in the middle of a word.
all: f{our,ive}
four:
: 4
five:
: 5
six:
: 6
# Nested braces work as expected since 2020-07-31 19:06 UTC.
# They had been broken at least since 2003-01-01, probably even longer.
all: {{thi,fou}r,fif}teen
thirteen:
: 13
fourteen:
: 14
fifteen:
: 15
# There may be multiple brace groups side by side.
all: {pre-,}{patch,configure}
pre-patch patch pre-configure configure:
: $@
# Empty pieces are allowed in the braces.
all: {fetch,extract}{,-post}
fetch fetch-post extract extract-post:
: $@
# The expansions may have duplicates.
# When the source of the dependency line is expanded later, each of the
# expanded words will be the same.
all: dup-{1,1,1,1,1,1,1}
dup-1:
: $@
# Other than in Bash, the braces are also expanded if there is no comma.
all: {{{{{{{{{{single-word}}}}}}}}}}
single-word:
: $@
# Demonstrate debug logging for filename expansion, especially curly braces.
.MAKEFLAGS: -dd
# The below line does not call SearchPath_Expand yet.
# It is expanded only when necessary, that is, when the 'debug' target is
# indeed made.
debug: {{thi,fou}r,fif}twen
# Therefore, keep the debug logging active.
.PHONY: one two three four five six
.PHONY: thirteen fourteen fifteen
.PHONY: single-word
.PHONY: pre-patch patch pre-configure configure
.PHONY: fetch fetch-post extract extract-post
.PHONY: dup-1 single-word
.PHONY: all