From 5abbb791245931441b5c102f98e0fbeb39db69a1 Mon Sep 17 00:00:00 2001 From: Dmitry Safonov Date: Tue, 31 Jan 2017 16:56:31 +0300 Subject: [PATCH] nmk: recompile/regenerate on Makefile changes Now changes in top-Makefile, middle-Makefile will result in a correct recompiling, as it's expected: [criu]$ touch criu/Makefile [criu]$ make <...> DEP criu/arch/x86/sigframe.d DEP criu/arch/x86/sigaction_compat.d DEP criu/arch/x86/crtools.d DEP criu/arch/x86/cpu.d DEP criu/arch/x86/call32.d CC criu/arch/x86/call32.o CC criu/arch/x86/cpu.o CC criu/arch/x86/crtools.o <...> travis-ci: success for Fix rebuild on Makefile changes Reported-by: Andrey Ryabinin Signed-off-by: Dmitry Safonov Acked-by: Cyrill Gorcunov Signed-off-by: Pavel Emelyanov --- scripts/nmk/scripts/build.mk | 41 +++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/scripts/nmk/scripts/build.mk b/scripts/nmk/scripts/build.mk index 1a92ea78f..e5706afa1 100644 --- a/scripts/nmk/scripts/build.mk +++ b/scripts/nmk/scripts/build.mk @@ -24,6 +24,13 @@ ifndef obj $(error obj is undefined) endif +ifndef __nmk-makefile-deps + # Add top-make - it isn't included into this build.mk + __nmk-makefile-deps := Makefile +endif +__nmk-makefile-deps += $(src-makefile) +export __nmk-makefile-deps + # # Filter out any -Wl,XXX option: some of build farms # assumes that we're using $(CC) for building built-in @@ -50,25 +57,25 @@ endef # # General rules. define gen-cc-rules -$(1).o: $(2).c $(src-makefile) +$(1).o: $(2).c $(__nmk-makefile-deps) $$(call msg-cc, $$@) $$(Q) $$(CC) -c $$(strip $$(nmk-ccflags)) $$< -o $$@ -$(1).i: $(2).c $(src-makefile) +$(1).i: $(2).c $(__nmk-makefile-deps) $$(call msg-cc, $$@) $$(Q) $$(CC) -E $$(strip $$(nmk-ccflags)) $$< -o $$@ -$(1).s: $(2).c $(src-makefile) +$(1).s: $(2).c $(__nmk-makefile-deps) $$(call msg-cc, $$@) $$(Q) $$(CC) -S -fverbose-asm $$(strip $$(nmk-ccflags)) $$< -o $$@ -$(1).d: $(2).c $(src-makefile) +$(1).d: $(2).c $(__nmk-makefile-deps) $$(call msg-dep, $$@) $$(Q) $$(CC) -M -MT $$@ -MT $$(patsubst %.d,%.o,$$@) $$(strip $$(nmk-ccflags)) $$< -o $$@ -$(1).o: $(2).S $(src-makefile) +$(1).o: $(2).S $(__nmk-makefile-deps) $$(call msg-cc, $$@) $$(Q) $$(CC) -c $$(strip $$(nmk-asflags)) $$< -o $$@ -$(1).i: $(2).S $(src-makefile) +$(1).i: $(2).S $(__nmk-makefile-deps) $$(call msg-cc, $$@) $$(Q) $$(CC) -E $$(strip $$(nmk-asflags)) $$< -o $$@ -$(1).d: $(2).S $(src-makefile) +$(1).d: $(2).S $(__nmk-makefile-deps) $$(call msg-dep, $$@) $$(Q) $$(CC) -M -MT $$@ -MT $$(patsubst %.d,%.o,$$@) $$(strip $$(nmk-asflags)) $$< -o $$@ endef @@ -150,7 +157,7 @@ ifdef builtin-target $(eval $(call gen-ld-target-rule, \ $(builtin-target), \ $(ld_flags), \ - $(obj-y) $(src-makefile), \ + $(obj-y) $(__nmk-makefile-deps), \ $(obj-y) $(call objectify,$(obj-e)))) endif @@ -158,7 +165,7 @@ ifdef lib-target $(eval $(call gen-ar-target-rule, \ $(lib-target), \ $(ARFLAGS) $(arflags-y), \ - $(lib-y) $(src-makefile), \ + $(lib-y) $(__nmk-makefile-deps), \ $(lib-y) $(call objectify,$(lib-e)))) endif @@ -170,7 +177,7 @@ define gen-custom-target-rule $(obj)/$(1).built-in.o, \ $(ld_flags) $(LDFLAGS_$(1)), \ $(call objectify,$($(1)-obj-y)) \ - $(src-makefile), \ + $(__nmk-makefile-deps), \ $(call objectify,$($(1)-obj-y)) \ $(call objectify,$($(1)-obj-e)))) all-y += $(obj)/$(1).built-in.o @@ -183,7 +190,7 @@ define gen-custom-target-rule $(obj)/$(1).lib.a, \ $(ARFLAGS) $($(1)-arflags-y), \ $(call objectify,$($(1)-lib-y)) \ - $(src-makefile), \ + $(__nmk-makefile-deps), \ $(call objectify,$($(1)-lib-y))) \ $(call objectify,$($(1)-lib-e))) all-y += $(obj)/$(1).lib.a @@ -203,16 +210,16 @@ $(foreach t,$(objdirs),$(eval $(call gen-cc-rules,$(t)/%,$(t)/%))) # # Host programs. define gen-host-cc-rules -$(addprefix $(obj)/,$(1)): $(obj)/%.o: $(obj)/%.c $(src-makefile) +$(addprefix $(obj)/,$(1)): $(obj)/%.o: $(obj)/%.c $(__nmk-makefile-deps) $$(call msg-host-cc, $$@) $$(Q) $$(HOSTCC) -c $$(strip $$(nmk-host-ccflags)) $$< -o $$@ -$(patsubst %.o,%.i,$(addprefix $(obj)/,$(1))): $(obj)/%.i: $(obj)/%.c $(src-makefile) +$(patsubst %.o,%.i,$(addprefix $(obj)/,$(1))): $(obj)/%.i: $(obj)/%.c $(__nmk-makefile-deps) $$(call msg-host-cc, $$@) $$(Q) $$(HOSTCC) -E $$(strip $$(nmk-host-ccflags)) $$< -o $$@ -$(patsubst %.o,%.s,$(addprefix $(obj)/,$(1))): $(obj)/%.s: $(obj)/%.c $(src-makefile) +$(patsubst %.o,%.s,$(addprefix $(obj)/,$(1))): $(obj)/%.s: $(obj)/%.c $(__nmk-makefile-deps) $$(call msg-host-cc, $$@) $$(Q) $$(HOSTCC) -S -fverbose-asm $$(strip $$(nmk-host-ccflags)) $$< -o $$@ -$(patsubst %.o,%.d,$(addprefix $(obj)/,$(1))): $(obj)/%.d: $(obj)/%.c $(src-makefile) +$(patsubst %.o,%.d,$(addprefix $(obj)/,$(1))): $(obj)/%.d: $(obj)/%.c $(__nmk-makefile-deps) $$(call msg-host-dep, $$@) $$(Q) $$(HOSTCC) -M -MT $$@ -MT $$(patsubst %.d,%.o,$$@) $$(strip $$(nmk-host-ccflags)) $$< -o $$@ endef @@ -221,7 +228,7 @@ define gen-host-rules $(eval $(call gen-host-cc-rules,$($(1)-objs))) all-y += $(addprefix $(obj)/,$($(1)-objs)) cleanup-y += $(call cleanify,$(addprefix $(obj)/,$($(1)-objs))) -$(obj)/$(1): $(addprefix $(obj)/,$($(1)-objs)) $(src-makefile) +$(obj)/$(1): $(addprefix $(obj)/,$($(1)-objs)) $(__nmk-makefile-deps) $$(call msg-host-link, $$@) $$(Q) $$(HOSTCC) $$(HOSTCFLAGS) $(addprefix $(obj)/,$($(1)-objs)) $$(HOSTLDFLAGS) $$(HOSTLDFLAGS_$$(@F)) -o $$@ all-y += $(obj)/$(1) @@ -232,7 +239,7 @@ $(foreach t,$(hostprogs-y),$(eval $(call gen-host-rules,$(t)))) # # Dynamic library linking. define gen-so-link-rules -$(call objectify,$(1)).so: $(call objectify,$($(1)-objs)) $(src-makefile) +$(call objectify,$(1)).so: $(call objectify,$($(1)-objs)) $(__nmk-makefile-deps) $$(call msg-link, $$@) $$(Q) $$(CC) -shared $$(ldflags-so) $$(LDFLAGS) $$(LDFLAGS_$$(@F)) -o $$@ $(call objectify,$($(1)-objs)) all-y += $(call objectify,$(1)).so