summaryrefslogtreecommitdiff
path: root/Makerules
diff options
context:
space:
mode:
Diffstat (limited to 'Makerules')
-rw-r--r--Makerules8
1 files changed, 5 insertions, 3 deletions
diff --git a/Makerules b/Makerules
index 16a5fdaf5..a668f4c41 100644
--- a/Makerules
+++ b/Makerules
@@ -107,21 +107,23 @@ disp_t_strip = $($(DISP)_disp_t_strip)
disp_ar = $($(DISP)_disp_ar)
disp_ld = $($(DISP)_disp_ld)
-CFLAGS_gen.dep = -MT $@ -MD -MF $(dir $@).$(notdir $@).dep
+any-prereq = $(filter-out FORCE,$?) $(filter-out FORCE $(wildcard $^),$^)
# True if not identical. Neither order nor whitespace nor identical flags
# matter.
compare_flags = $(strip $(filter-out $(cmd_$(1)), $(cmd_$(@))) \
$(filter-out $(cmd_$(@)), $(cmd_$(1))))
-# Rebuild if the used CC or flags changed.
+# Rebuild if any prerequisite, the used CC or flags changed.
# Previously used flags are stored in the corresponding .%.dep files
-maybe_exec = $(if $(strip $(compare_flags)), \
+maybe_exec = $(if $(strip $(compare_flags) $(any-prereq)), \
@set -e; \
$(disp_$(1)); \
$(cmd_$(1)); \
echo 'cmd_$@ := $(cmd_$1)' >> $(dir $@).$(notdir $@).dep)
+CFLAGS_gen.dep = -MT $@ -MD -MF $(dir $@).$(notdir $@).dep
+
cmd_compile.c = $(CC) -c $< -o $@ $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS-$(notdir $(^D)))) $(CFLAGS-$(subst $(top_srcdir),,$(dir $<))) $(CFLAGS-$(notdir $<)) $(CFLAGS-$(notdir $@)) $(CFLAGS_gen.dep)
cmd_compile.i = $(cmd_compile.c:-c=-E -dD)
cmd_compile.s = $(cmd_compile.c:-c=-S)