xref: /freebsd/contrib/bmake/unit-tests/recursive.mk (revision f7c32ed617858bcd22f8d1b03199099d50125721)
1# $NetBSD: recursive.mk,v 1.5 2021/03/15 12:15:03 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.  The variable value is therefore
9# parsed with VARE_PARSE_ONLY for that purpose.
10#
11# Seen in pkgsrc/x11/libXfixes, and probably many more package that use
12# GNU Automake.
13
14.MAKEFLAGS: -dL
15
16AM_V_lt=	${am__v_lt_${V}}
17am__v_lt_=	${am__v_lt_${AM_DEFAULT_VERBOSITY}}
18am__v_lt_0=	--silent
19am__v_lt_1=
20
21# On 2020-08-06, make reported: "Variable am__v_lt_ is recursive."
22libXfixes_la_LINK=	... ${AM_V_lt} ...
23
24# somewhere later ...
25AM_DEFAULT_VERBOSITY=	1
26
27
28# The purpose of the -dL flag is to detect unclosed variables.  This
29# can be achieved by just parsing the variable and not evaluating it.
30#
31# When the variable is only parsed but not evaluated, bugs in nested
32# variables are not discovered.  But these are hard to produce anyway,
33# therefore that's acceptable.  In most practical cases, the missing
34# brace would be detected directly in the line where it is produced.
35MISSING_BRACE_INDIRECT:=	${:U\${MISSING_BRACE}
36UNCLOSED=	$(MISSING_PAREN
37UNCLOSED=	${MISSING_BRACE
38UNCLOSED=	${MISSING_BRACE_INDIRECT}
39