make/tests/scripts/features
Dmitry Goncharov 21d3865973 [SV 48643] Enhance "ought to exist" definition
The traditional definition of "ought to exist" in the user's manual can
lead to make choosing a poor series of chained implicit rules.  Modify
that rule so that we first attempt to resolve implicit rules by
considering targets which are only (a) targets or (b) explicit
prerequisites of the current target.

For backward-compatibility, if we don't find a solution using that
algorithm use the previous definition where "ought to exist" means
"mentioned as a prerequisite of any target".

* src/implicit.c (pattern_search): An extra argument controls whether
to perform the backward-compatible rule search or not.  If a prereq is
a target, or if it's a prerequisite of THIS target, then choose it.
If we get to the end and haven't found a match, but we have found a
potential compatibility rule, then retry with compat rules enabled.
If we're searching with compat rules enabled and we find a file
mentioned as a prerequisite of ANY target, then use it.
* tests/features/implicit_search: Provide a large suite of tests for
different steps of implicit rule search.
2021-11-27 22:00:05 -05:00
..
archives
comments
conditionals
default_names
dircache
double_colon [SV 60435] Ensure intermediate grouped files are removed 2021-09-07 01:14:20 -04:00
echoing
errors
escape
exec * tests/scripts/features/exec: Small cleanup 2021-03-15 01:17:06 -04:00
export
grouped_targets [SV 60188] Explicit prereqs cannot be intermediate files 2021-03-15 02:10:49 -04:00
implicit_search [SV 48643] Enhance "ought to exist" definition 2021-11-27 22:00:05 -05:00
include [SV 57778] Don't ignore included makefiles that can't be read 2021-09-06 20:20:28 -04:00
jobserver
load
loadapi
mult_rules
mult_targets
order_only
output-sync
override
parallelism
patspecific_vars
patternrules [SV 60435] Ensure intermediate grouped files are removed 2021-09-07 01:14:20 -04:00
quoting
recursion
reinvoke [SV 60595] Restart whenever any makefile is rebuilt 2021-09-03 12:08:11 -04:00
rule_glob
se_explicit [SV 60659] Set $$< properly in second expansion 2021-05-30 15:53:41 -04:00
se_implicit [SV 60659] Set $$< properly in second expansion 2021-05-30 15:53:41 -04:00
se_statpat
shell_assignment
statipattrules [SV 60188] Explicit prereqs cannot be intermediate files 2021-03-15 02:10:49 -04:00
suffixrules
targetvars
utf8
varnesting
vpath
vpath2
vpath3
vpathgpath
vpathplus