On 25.11.2021 14:39, Anthony PERARD wrote:

Nit: In the title, do you mean "set ALL_OBJS in main Makefile; ..."?

> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -285,8 +285,21 @@ CFLAGS += -flto
>  LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
>  endif
>  
> +# Note that link order matters!
> +ALL_OBJS-y                := common/built_in.o
> +ALL_OBJS-y                += drivers/built_in.o
> +ALL_OBJS-y                += lib/built_in.o
> +ALL_OBJS-y                += xsm/built_in.o
> +ALL_OBJS-y                += arch/$(TARGET_ARCH)/built_in.o
> +ALL_OBJS-$(CONFIG_CRYPTO) += crypto/built_in.o
> +
> +ALL_LIBS-y                := lib/lib.a
> +
>  include $(BASEDIR)/arch/$(TARGET_ARCH)/arch.mk
>  
> +export ALL_OBJS := $(ALL_OBJS-y)
> +export ALL_LIBS := $(ALL_LIBS-y)

Who's the consumer of these exports? I ask because I don't consider the
names very suitable for exporting, and hence I'd prefer to see their
scope limited. If e.g. it's only a single make invocation where they
need propagating, doing so on the command line might be better.

> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -0,0 +1,5 @@
> +# head.o is built by descending into arch/arm/$(TARGET_SUBARCH), depends on 
> the
> +# part of $(ALL_OBJS) that will eventually recurse into $(TARGET_SUBARCH)/ 
> and
> +# build head.o
> +arch/arm/$(TARGET_SUBARCH)/head.o: arch/arm/built_in.o
> +arch/arm/$(TARGET_SUBARCH)/head.o: ;

Can't this be a single line:

arch/arm/$(TARGET_SUBARCH)/head.o: arch/arm/built_in.o ;

?

> @@ -235,7 +218,7 @@ $(TARGET).efi: FORCE
>       echo '$(if $(filter y,$(XEN_BUILD_EFI)),xen.efi generation,EFI support) 
> disabled'
>  endif
>  
> -efi/buildid.o efi/relocs-dummy.o: $(BASEDIR)/arch/x86/efi/built_in.o
> +# These should already have been rebuilt when building the prerequisite of 
> "prelink.o"
>  efi/buildid.o efi/relocs-dummy.o: ;

If the comment is true in all cases, do they really still need an empty
rule?

Jan


Reply via email to