|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 7/8] build: Use linker script source to add the LDFLAGS
Hi Sharan, this patch looks good, thanks.
Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>
On 12.08.19, 16:04, "Minios-devel on behalf of Sharan Santhanam"
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of
Sharan.Santhanam@xxxxxxxxx> wrote:
Remove additional variables needed between the Makefile.uk and
Linker.uk to prepare the linker flags. With this patch, the user needs
to add linker script to library source and while compiling the library
the variables needed to populate the linker flags are automatically
generated.
Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
---
plat/kvm/Linker.uk | 3 +--
plat/kvm/Makefile.uk | 2 --
plat/linuxu/Linker.uk | 3 +--
plat/linuxu/Makefile.uk | 8 ++++----
plat/xen/Linker.uk | 3 +--
plat/xen/Makefile.uk | 3 +--
support/build/Makefile.rules | 16 ++++++++++++++++
7 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/plat/kvm/Linker.uk b/plat/kvm/Linker.uk
index ccdd7433..5e421933 100644
--- a/plat/kvm/Linker.uk
+++ b/plat/kvm/Linker.uk
@@ -4,7 +4,6 @@ else ifeq (arm64,$(CONFIG_UK_ARCH))
KVM_LDFLAGS-y += -Wl,-m,aarch64elf
endif
-KVM_LDSCRIPT := $(call src2lds,libkvmplat,$(UK_PLAT_KVM_DEF_LDS))
##
## Link image
@@ -13,7 +12,7 @@ KVM_IMAGE :=
$(BUILD_DIR)/$(CONFIG_UK_NAME)_kvm-$(CONFIG_UK_ARCH)
KVM_DEBUG_IMAGE := $(KVM_IMAGE).dbg
KVM_LD_SCRIPT_FLAGS := $(addprefix -Wl$(comma)-dT$(comma),\
- $(KVM_LDSCRIPT))
+ $(UK_PLAT_KVM_DEF_LDS))
KVM_LD_SCRIPT_FLAGS += $(addprefix -Wl$(comma)-T$(comma),\
$(KVM_LD_SCRIPT-y) $(EXTRA_LD_SCRIPT-y))
diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
index f52bd4ec..cef753d7 100644
--- a/plat/kvm/Makefile.uk
+++ b/plat/kvm/Makefile.uk
@@ -38,7 +38,6 @@ endif
##
## Architecture library definitions for x86_64
##
-KVM_LDSCRIPT_SRC-$(CONFIG_ARCH_X86_64) :=
$(CONFIG_UK_BASE)/plat/kvm/x86/link64.lds.S
LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/trace.c|common
LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/traps.c|common
LIBKVMPLAT_TRAPS_COMMON_FLAGS += $(NO_X86_EXTREGS_FLAGS)
@@ -68,7 +67,6 @@ endif
##
## Architecture library definitions for arm64
##
-KVM_LDSCRIPT_SRC-$(CONFIG_ARCH_ARM_64) :=
$(CONFIG_UK_BASE)/plat/kvm/arm/link64.lds.S
ifeq ($(findstring y,$(CONFIG_KVM_KERNEL_SERIAL_CONSOLE)
$(CONFIG_KVM_DEBUG_SERIAL_CONSOLE)),y)
LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) +=
$(UK_PLAT_COMMON_BASE)/arm/pl011.c|common
endif
diff --git a/plat/linuxu/Linker.uk b/plat/linuxu/Linker.uk
index d8b380ea..9e310a9c 100644
--- a/plat/linuxu/Linker.uk
+++ b/plat/linuxu/Linker.uk
@@ -5,9 +5,8 @@ LINUXU_LDFLAGS-y += -Wl,-e,_liblinuxuplat_start
##
LINUXU_IMAGE := $(BUILD_DIR)/$(CONFIG_UK_NAME)_linuxu-$(CONFIG_UK_ARCH)
LINUXU_DEBUG_IMAGE := $(LINUXU_IMAGE).dbg
-LINUXU_LDSCRIPT := $(call src2lds,liblinuxuplat,$(LINUXU_LDSCRIPT_SRC-y))
LINUXU_LD_SCRIPT_FLAGS := $(addprefix -Wl$(comma)-T$(comma),\
- $(LINUXU_LDSCRIPT) $(EXTRA_LD_SCRIPT-y))
+ $(LINUXU_LD_SCRIPT-y) $(EXTRA_LD_SCRIPT-y))
$(LINUXU_DEBUG_IMAGE): $(LINUXU_ALIBS) $(LINUXU_ALIBS-y) \
$(LINUXU_OLIBS) $(LINUXU_OLIBS-y) \
diff --git a/plat/linuxu/Makefile.uk b/plat/linuxu/Makefile.uk
index ee3a7ea1..512a4945 100644
--- a/plat/linuxu/Makefile.uk
+++ b/plat/linuxu/Makefile.uk
@@ -20,9 +20,6 @@ LIBLINUXUPLAT_ASFLAGS += -DLINUXUPLAT
LIBLINUXUPLAT_CFLAGS += -DLINUXUPLAT
LIBLINUXUPLAT_CXXFLAGS += -DLINUXUPLAT
-LINUXU_LDSCRIPT_SRC-$(CONFIG_ARCH_X86_64) +=
$(LIBLINUXUPLAT_BASE)/x86/link64.lds.S
-LINUXU_LDSCRIPT_SRC-$(CONFIG_ARCH_ARM_32) +=
$(LIBLINUXUPLAT_BASE)/arm/link.lds.S
-
LIBLINUXUPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/cpu_features.c|common
LIBLINUXUPLAT_SRCS-$(CONFIG_ARCH_X86_32) +=
$(LIBLINUXUPLAT_BASE)/x86/entry32.S
LIBLINUXUPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(LIBLINUXUPLAT_BASE)/x86/entry64.S
@@ -43,4 +40,7 @@ LIBLINUXUPLAT_SRCS-y +=
$(LIBLINUXUPLAT_BASE)/time.c
LIBLINUXUPLAT_SRCS-y += $(UK_PLAT_COMMON_BASE)/lcpu.c|common
LIBLINUXUPLAT_SRCS-y += $(UK_PLAT_COMMON_BASE)/memory.c|common
LIBLINUXUPLAT_SRCS-y += $(LIBLINUXUPLAT_BASE)/io.c
-LIBLINUXUPLAT_SRCS-y += $(LINUXU_LDSCRIPT_SRC-y)
+LIBLINUXUPLAT_SRCS-$(CONFIG_ARCH_X86_64) += \
+ $(LIBLINUXUPLAT_BASE)/x86/link64.lds.S
+LIBLINUXUPLAT_SRCS-$(CONFIG_ARCH_ARM_32) += \
+ $(LIBLINUXUPLAT_BASE)/arm/link.lds.S
diff --git a/plat/xen/Linker.uk b/plat/xen/Linker.uk
index 0cc1fdce..416f8b26 100644
--- a/plat/xen/Linker.uk
+++ b/plat/xen/Linker.uk
@@ -2,7 +2,6 @@ ifeq (x86_64,$(CONFIG_UK_ARCH))
XEN_LDFLAGS-y += -Wl,-m,elf_x86_64
endif
-XEN_LDSCRIPT := $(call src2lds,libxenplat,$(UK_PLAT_XEN_DEF_LDS))
##
## Link image
##
@@ -15,7 +14,7 @@ endif
XEN_DEBUG_IMAGE := $(XEN_IMAGE).dbg
XEN_LD_SCRIPT_FLAGS := $(addprefix -Wl$(comma)-dT$(comma),\
- $(XEN_LDSCRIPT))
+ $(UK_PLAT_XEN_DEF_LDS))
XEN_LD_SCRIPT_FLAGS += $(addprefix -Wl$(comma)-T$(comma),\
$(XEN_LD_SCRIPT-y) $(EXTRA_LD_SCRIPT-y))
diff --git a/plat/xen/Makefile.uk b/plat/xen/Makefile.uk
index eb4074e3..c776eeaf 100644
--- a/plat/xen/Makefile.uk
+++ b/plat/xen/Makefile.uk
@@ -43,7 +43,7 @@ LIBXENPLAT_SRCS-y += $(LIBXENPLAT_BASE)/io.c
LIBXENPLAT_SRCS-y += $(UK_PLAT_COMMON_BASE)/lcpu.c|common
LIBXENPLAT_SRCS-y += $(UK_PLAT_COMMON_BASE)/memory.c|common
-XEN_LDSCRIPT_SRC-$(CONFIG_ARCH_X86_64) :=
$(CONFIG_UK_BASE)/plat/xen/x86/link64.lds.S
+
LIBXENPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/trace.c|common
LIBXENPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/traps.c|common
LIBXENPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/cpu_features.c|common
@@ -68,7 +68,6 @@ LIBXENPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
$(UK_PLAT_COMMON_BASE)/x86/cpu_native.c
LIBXENPLAT_SRCS-$(CONFIG_ARCH_ARM_32) +=
$(UK_PLAT_COMMON_BASE)/arm/cpu_native.c
endif
-XEN_LDSCRIPT_SRC-$(CONFIG_ARCH_ARM_32) :=
$(CONFIG_UK_BASE)/plat/xen/arm/link32.lds.S
LIBXENPLAT_SRCS-$(CONFIG_ARCH_ARM_32) += $(LIBXENPLAT_BASE)/arm/setup.c
LIBXENPLAT_SRCS-$(CONFIG_ARCH_ARM_32) += $(LIBXENPLAT_BASE)/arm/traps.c
LIBXENPLAT_SRCS-$(CONFIG_ARCH_ARM_32) += $(LIBXENPLAT_BASE)/arm/entry32.S
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index d10cf10b..235b109b 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -417,6 +417,14 @@ $(eval $(call vprefix_lib,$(1),OBJS-y) += $(3))
$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3)) $(call
out2dep,$(3)))
endef
+define add_lds_to_plat =
+$(eval $(call uc,$(2))_LD_SCRIPT-y += $(1))
+endef
+
+define add_lds_to_lib =
+$(eval EXTRA_LD_SCRIPT-y += $(1))
+endef
+
define buildrule_lds =
$(3): $(2) | prepare
$(call build_cmd_fixdep,LDS,$(1),$(3),\
@@ -432,6 +440,14 @@ UK_SRCS-y += $(2)
UK_DEPS-y += $(call out2dep,$(3))
$(eval $(call vprefix_lib,$(1),LDS-y) += $(3))
$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3)) $(call
out2dep,$(3)))
+
+$(if $(strip $($(call uc,$(1))_PLATS)),\
+ $(foreach p,$($(call uc,$(1))_PLATS),\
+ $(if $(filter $(UK_PLAT_$(p)_DEF_LDS),$(2)),\
+ $(eval UK_PLAT_$(p)_DEF_LDS := $(3)),\
+ $(call add_lds_to_plat,$(3),$(p)))),\
+ $(call add_lds_to_lib,$(3))\
+)
endef
# wrapper for buildrule_*,
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |