mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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:
1 parent
249e0f1d8f
commit
72f12ac6a3
3 files changed
+12
-4
No files matched your search
@@ -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.
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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 $@ $<
|
||||
|
||||