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

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
170ifneq ($(KBUILD_NOCMDDEP),1)170ifneq ($(KBUILD_NOCMDDEP),1)
171# Check if both commands are the same including their order. Result is empty171# Check if both commands are the same including their order. Result is empty
172# string if equal. User may override this check using make KBUILD_NOCMDDEP=1172# 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.
173cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \176cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \
174 $(subst $(space),$(space_escape),$(strip $(cmd_$1))))177 $(subst $(space),$(space_escape),$(strip $(cmd_$1))))
175else178else
179# We still need to detect missing targets.
176cmd-check = $(if $(strip $(savedcmd_$@)),,1)180cmd-check = $(if $(strip $(savedcmd_$@)),,1)
177endif181endif
178 182
@@ -186,6 +190,8 @@ make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))) · 7 unmodified lines
186 190
187# Find any prerequisites that are newer than target or that do not exist.191# Find any prerequisites that are newer than target or that do not exist.
188# PHONY targets skipped in both cases.192# 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.
189newer-prereqs = $(filter-out $(PHONY),$?)195newer-prereqs = $(filter-out $(PHONY),$?)
190 196
191# It is a typical mistake to forget the FORCE prerequisite. Check it here so197# 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