Use $(dot-target) to have the target name prefix with a dot.
Now, when the CC command has run, it is recorded in .*.cmd
file, then if_changed_rules will compare it on subsequent runs.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
xen/Rules.mk | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 6a0cdfde2eed..4adc90eec80d 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -192,19 +192,27 @@ FORCE:
SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
-%.o: %.c Makefile
+quiet_cmd_cc_o_c = CC $@
ifeq ($(CONFIG_ENFORCE_UNIQUE_SYMBOLS),y)
- $(CC) $(c_flags) -c $< -o $(@D)/.$(@F).tmp -MQ $@
-ifeq ($(CONFIG_CC_IS_CLANG),y)
- $(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
-else
- $(OBJCOPY) --redefine-sym $(<F)=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
-endif
- rm -f $(@D)/.$(@F).tmp
+ cmd_cc_o_c = $(CC) $(c_flags) -c $< -o $(dot-target).tmp -MQ $@
+ ifeq ($(CONFIG_CC_IS_CLANG),y)
+ cmd_objcopy_fix_sym = $(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(dot-target).tmp $@
+ else
+ cmd_objcopy_fix_sym = $(OBJCOPY) --redefine-sym $(<F)=$(SRCPATH)/$< $(dot-target).tmp $@
+ endif
+ cmd_objcopy_fix_sym += && rm -f $(dot-target).tmp
else
- $(CC) $(c_flags) -c $< -o $@
+ cmd_cc_o_c = $(CC) $(c_flags) -c $< -o $@
endif
+define rule_cc_o_c
+ $(call cmd_and_record,cc_o_c)
+ $(call cmd,objcopy_fix_sym)
+endef
+
+%.o: %.c FORCE
+ $(call if_changed_rule,cc_o_c)
+
quiet_cmd_cc_o_S = CC $@
cmd_cc_o_S = $(CC) $(a_flags) -c $< -o $@
--
Anthony PERARD