[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [XEN PATCH v3 19/23] xen/build: Use if_changed_rules with %.o:%.c targets



On 26.02.2020 12:33, Anthony PERARD wrote:
> 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@xxxxxxxxxx>

Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with one question:

> --- a/xen/Rules.mk
> +++ b/xen/Rules.mk
> @@ -167,19 +167,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)

The machinery is resilient to a command (here: cmd_objcopy_fix_sym)
not being defined, and will neither produce any undue output nor
else incur any unnecessary overhead?

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.