recursive.mk revision 1.3
11.3Srillig# $NetBSD: recursive.mk,v 1.3 2020/10/24 08:50:17 rillig Exp $ 21.1Srillig# 31.1Srillig# In -dL mode, a variable may get expanded before it makes sense. 41.1Srillig# This would stop make from doing anything since the "recursive" error 51.1Srillig# is fatal and exits immediately. 61.1Srillig# 71.1Srillig# The purpose of evaluating that variable early was just to detect 81.1Srillig# whether there are unclosed variables. It might be enough to parse the 91.1Srillig# variable value without VARE_WANTRES for that purpose. 101.1Srillig# 111.1Srillig# Seen in pkgsrc/x11/libXfixes, and probably many more package that use 121.1Srillig# GNU Automake. 131.1Srillig 141.3SrilligAM_V_lt= ${am__v_lt_${V}} 151.3Srilligam__v_lt_= ${am__v_lt_${AM_DEFAULT_VERBOSITY}} 161.3Srilligam__v_lt_0= --silent 171.3Srilligam__v_lt_1= 181.2Srillig 191.2Srillig# On 2020-08-06, make reported: "Variable am__v_lt_ is recursive." 201.3SrilliglibXfixes_la_LINK= ... ${AM_V_lt} ... 211.1Srillig 221.1Srillig# somewhere later ... 231.3SrilligAM_DEFAULT_VERBOSITY= 1 241.2Srillig 251.2Srillig 261.2Srillig# The purpose of the -dL flag is to detect unclosed variables. This 271.2Srillig# can be achieved by just parsing the variable and not evaluating it. 281.2Srillig# 291.2Srillig# When the variable is only parsed but not evaluated, bugs in nested 301.2Srillig# variables are not discovered. But these are hard to produce anyway, 311.2Srillig# therefore that's acceptable. In most practical cases, the missing 321.2Srillig# brace would be detected directly in the line where it is produced. 331.2SrilligMISSING_BRACE_INDIRECT:= ${:U\${MISSING_BRACE} 341.3SrilligUNCLOSED= $(MISSING_PAREN 351.3SrilligUNCLOSED= ${MISSING_BRACE 361.3SrilligUNCLOSED= ${MISSING_BRACE_INDIRECT} 371.2Srillig 38