mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-02 22:54:52 +00:00
ee914ef902
Lots more unit tests and code cleanup Relevant changes from ChangeLog o job.c: Print -de error information when running multiple jobs o var.c: only report error for unmatched regex subexpression when linting (-dL) since we cannot tell when an unmatched subexpression is an expected result. reduce memory allocations in the modifiers ':D' and ':U' reduce memory allocation and strlen calls in modifier ':from=to' in the ':Q' modifier, only allocate memory if necessary improve performance for LazyBuf reduce debug logging and memory allocation for ${:U...} reduce verbosity of the -dv debug logging for standard cases fix double varname expansion in the variable modifier '::=' o var.c: avoid evaluating many modifiers in parse only mode in strict mode (-dL) many variable references are parsed twice, the first time just to report parse errors early, so we want to avoid side effects and wasted effort to the extent possible.
39 lines
1.3 KiB
Makefile
39 lines
1.3 KiB
Makefile
# $NetBSD: recursive.mk,v 1.5 2021/03/15 12:15:03 rillig Exp $
|
|
#
|
|
# In -dL mode, a variable may get expanded before it makes sense.
|
|
# This would stop make from doing anything since the "recursive" error
|
|
# is fatal and exits immediately.
|
|
#
|
|
# The purpose of evaluating that variable early was just to detect
|
|
# whether there are unclosed variables. The variable value is therefore
|
|
# parsed with VARE_PARSE_ONLY for that purpose.
|
|
#
|
|
# Seen in pkgsrc/x11/libXfixes, and probably many more package that use
|
|
# GNU Automake.
|
|
|
|
.MAKEFLAGS: -dL
|
|
|
|
AM_V_lt= ${am__v_lt_${V}}
|
|
am__v_lt_= ${am__v_lt_${AM_DEFAULT_VERBOSITY}}
|
|
am__v_lt_0= --silent
|
|
am__v_lt_1=
|
|
|
|
# On 2020-08-06, make reported: "Variable am__v_lt_ is recursive."
|
|
libXfixes_la_LINK= ... ${AM_V_lt} ...
|
|
|
|
# somewhere later ...
|
|
AM_DEFAULT_VERBOSITY= 1
|
|
|
|
|
|
# The purpose of the -dL flag is to detect unclosed variables. This
|
|
# can be achieved by just parsing the variable and not evaluating it.
|
|
#
|
|
# When the variable is only parsed but not evaluated, bugs in nested
|
|
# variables are not discovered. But these are hard to produce anyway,
|
|
# therefore that's acceptable. In most practical cases, the missing
|
|
# brace would be detected directly in the line where it is produced.
|
|
MISSING_BRACE_INDIRECT:= ${:U\${MISSING_BRACE}
|
|
UNCLOSED= $(MISSING_PAREN
|
|
UNCLOSED= ${MISSING_BRACE
|
|
UNCLOSED= ${MISSING_BRACE_INDIRECT}
|