History

kbuild: add more comments for KBUILD_NOCMDDEP=1

The cmd-check for KBUILD_NOCMDDEP=1 may not be clear until you see commit c4d5ee13984f ("kbuild: make KBUILD_NOCMDDEP=1 handle empty built-in.o"). When a phony target (i.e. FORCE) is the only prerequisite, Kbuild uses a tricky way to detect that the target does not exist. Add more comments.

Masahiro Yamada committed 3 years ago

Commit ee2162b1 parent 92215e71 file · +6 −0Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/Kbuild.include+6−0
@@ -170,9 +170,13 @@ cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cm · 169 unmodified lines
170170 ifneq ($(KBUILD_NOCMDDEP),1)
171171 # Check if both commands are the same including their order. Result is empty
172172 # string if equal. User may override this check using make KBUILD_NOCMDDEP=1
173+# If the target does not exist, the *.cmd file should not be included so
174+# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs)
175+# happens to become empty.
173176 cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \
174177 $(subst $(space),$(space_escape),$(strip $(cmd_$1))))
175178 else
179+# We still need to detect missing targets.
176180 cmd-check = $(if $(strip $(savedcmd_$@)),,1)
177181 endif
178182
@@ -186,6 +190,8 @@ make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))) · 7 unmodified lines
186190
187191 # Find any prerequisites that are newer than target or that do not exist.
188192 # PHONY targets skipped in both cases.
193+# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes
194+# empty even if the target does not exist. cmd-check saves this corner case.
189195 newer-prereqs = $(filter-out $(PHONY),$?)
190196
191197 # It is a typical mistake to forget the FORCE prerequisite. Check it here so

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t