depends: disable builtin rules and suffixes.

When there is no rule to build a target in the makefile, make looks
for a builtin rule.
When --no-builtin-rules is specified make no longer performs this lookup.

E.g. the following in an excerpt from make -d output.
Here, make looks for a rule to build 'all'.

Considering target file 'all'.
 File 'all' does not exist.
 Looking for an implicit rule for 'all'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.o'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.c'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.cc'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.C'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.cpp'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.p'.
 Trying pattern rule with stem 'all'.
 Trying implicit prerequisite 'all.f'.
...
Many more lines like this are omitted.

Because this build system does not use make builtin rules or suffixes,
there is no benefit in having builtin rules enabled.

There are 2 benefits in having builtin rules disabled.

1. Improves performance by eliminating redundant lookups.
2. Simplifies troubleshooting by reducing the output of make -d or
make -p.
This commit is contained in:
Dmitry Goncharov 2021-06-02 08:04:09 -04:00 committed by fanquake
parent 746d36cc80
commit 8b5a28fa78
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1

View File

@ -1,4 +1,6 @@
.NOTPARALLEL :
# Disable builtin rules and suffixes.
MAKEFLAGS += --no-builtin-rules
# Pattern rule to print variables, e.g. make print-top_srcdir
print-%: FORCE