From: Anthony PERARD Date: Wed, 15 Dec 2021 09:08:38 +0000 (+0100) Subject: build: factorise generation of the linker scripts X-Git-Tag: archive/raspbian/4.17.0-1+rpi1^2~33^2~1224 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=72f12ac6a36d5aa0567fd7abc2856e3bf054c4ef;p=xen.git build: factorise generation of the linker scripts In Arm and X86 makefile, generating the linker script is the same, so we can simply have both call the same macro. We need to add *.lds files into extra-y so that Rules.mk can find the .*.cmd dependency file and load it. Change made to the command line: - Use cpp_flags macro which simply filter -Wa,% options from $(a_flags). - Added -D__LINKER__ even it is only used by Arm's lds. Signed-off-by: Anthony PERARD Reviewed-by: Jan Beulich Acked-by: Julien Grall --- diff --git a/xen/Rules.mk b/xen/Rules.mk index 5e0699e58b..d21930a7bf 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -238,6 +238,10 @@ cmd_cpp_s_S = $(CPP) $(call cpp_flags,$(a_flags)) -MQ $@ -o $@ $< %.s: %.S FORCE $(call if_changed,cpp_s_S) +# Linker scripts, .lds.S -> .lds +quiet_cmd_cpp_lds_S = LDS $@ +cmd_cpp_lds_S = $(CPP) -P $(call cpp_flags,$(a_flags)) -D__LINKER__ -MQ $@ -o $@ $< + # Add intermediate targets: # When building objects with specific suffix patterns, add intermediate # targets that the final targets are derived from. diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile index 07f634508e..a3a497bafe 100644 --- a/xen/arch/arm/Makefile +++ b/xen/arch/arm/Makefile @@ -67,6 +67,8 @@ obj-y += vsmc.o obj-y += vpsci.o obj-y += vuart.o +extra-y += xen.lds + #obj-bin-y += ....o ifneq ($(CONFIG_DTB_FILE),"") @@ -132,8 +134,8 @@ $(TARGET)-syms: prelink.o xen.lds .PHONY: include include: -xen.lds: xen.lds.S - $(CPP) -P $(a_flags) -D__LINKER__ -MQ $@ -o $@ $< +xen.lds: xen.lds.S FORCE + $(call if_changed,cpp_lds_S) dtb.o: $(patsubst "%",%,$(CONFIG_DTB_FILE)) diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 69b6cfaded..669e16e726 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -78,6 +78,7 @@ obj-y += sysctl.o endif extra-y += asm-macros.i +extra-y += xen.lds ifneq ($(CONFIG_HVM),y) x86_emulate.o: CFLAGS-y += -Wno-unused-label @@ -238,6 +239,7 @@ endif note_file_option ?= $(note_file) ifeq ($(XEN_BUILD_PE),y) +extra-y += efi.lds $(TARGET).efi: prelink.o $(note_file) efi.lds efi/relocs-dummy.o efi/mkreloc ifeq ($(CONFIG_DEBUG_INFO),y) $(if $(filter --strip-debug,$(EFI_LDFLAGS)),echo,:) "Will strip debug info from $(@F)" @@ -290,8 +292,8 @@ $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile $(call move-if-changed,$@.new,$@) efi.lds: AFLAGS-y += -DEFI -xen.lds efi.lds: xen.lds.S - $(CPP) -P $(call cpp_flags,$(a_flags)) -MQ $@ -o $@ $< +xen.lds efi.lds: xen.lds.S FORCE + $(call if_changed,cpp_lds_S) boot/mkelf32: boot/mkelf32.c $(HOSTCC) $(HOSTCFLAGS) -o $@ $<