made as a side-effect of some other target's recipe are now noticed as
expected.
+* GNU make has sometimes chosen unexpected, and sub-optimal, chains of
+ implicit rules due to the definition of "ought to exist" in the implicit
+ rule search algorithm, which considered any prerequisite mentioned in the
+ makefile as "ought to exist". This algorithm has been modified to prefer
+ prerequisites mentioned explicitly in the target being built and only if
+ that results in no matching rule, will GNU make consider prerequisites
+ mentioned in other targets as "ought to exist".
+
* GNU Make can now be built for MS-Windows using the Tiny C tcc compiler.
Port provided by Christian Jullien <eligis@orange.fr>
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
-2020 Free Software Foundation, Inc.
+2020, 2021 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@item
Test whether all the prerequisites exist or ought to exist. (If a
file name is mentioned in the makefile as a target or as an explicit
-prerequisite, then we say it ought to exist.)
+prerequisite of target T, then we say it ought to exist.)
If all prerequisites exist or ought to exist, or there are no prerequisites,
then this rule applies.
made by implicit rules, then this rule applies.
@end enumerate
+@item
+If no pattern rule has been found then try step 5 and step 6 again with a
+modified definition of ``ought to exist'': if a filename is mentioned as a
+target or as an explicit prerequisite of @emph{any} target, then it ought to
+exist. This check is only present for backward-compatibility with older
+versions of GNU make: we don't recommend relying on it.
+
@item
If no implicit rule applies, the rule for @code{.DEFAULT}, if any,
applies. In that case, give @var{t} the same recipe that