xref: /freebsd/contrib/bmake/unit-tests/recursive.mk (revision 6132212808e8dccedc9e5d85fea4390c2f38059a)
1# $NetBSD: recursive.mk,v 1.2 2020/08/06 05:52:45 rillig Exp $
2#
3# In -dL mode, a variable may get expanded before it makes sense.
4# This would stop make from doing anything since the "recursive" error
5# is fatal and exits immediately.
6#
7# The purpose of evaluating that variable early was just to detect
8# whether there are unclosed variables.  It might be enough to parse the
9# variable value without VARE_WANTRES for that purpose.
10#
11# Seen in pkgsrc/x11/libXfixes, and probably many more package that use
12# GNU Automake.
13
14AM_V_lt = $(am__v_lt_$(V))
15am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
16am__v_lt_0 = --silent
17am__v_lt_1 =
18
19# On 2020-08-06, make reported: "Variable am__v_lt_ is recursive."
20libXfixes_la_LINK = ... $(AM_V_lt) ...
21
22# somewhere later ...
23AM_DEFAULT_VERBOSITY = 1
24
25
26# The purpose of the -dL flag is to detect unclosed variables.  This
27# can be achieved by just parsing the variable and not evaluating it.
28#
29# When the variable is only parsed but not evaluated, bugs in nested
30# variables are not discovered.  But these are hard to produce anyway,
31# therefore that's acceptable.  In most practical cases, the missing
32# brace would be detected directly in the line where it is produced.
33MISSING_BRACE_INDIRECT:=	${:U\${MISSING_BRACE}
34UNCLOSED = $(MISSING_PAREN
35UNCLOSED = ${MISSING_BRACE
36UNCLOSED = ${MISSING_BRACE_INDIRECT}
37
38