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 <anthony.perard@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
Anthony PERARD authored and Jan Beulich committed 2021-12-15 10:08:38 +01:00
1 parent 249e0f1d8f
commit 72f12ac6a3
3 files changed
+12 -4

No files matched your search

+4
View File
@@ -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.
+4 -2
View File
@@ -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))
+4 -2
View File
@@ -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 $@ $<
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.