From: Andrew Cooper Date: Mon, 18 Jan 2016 10:48:26 +0000 (+0000) Subject: Rework the build systems environment list generation X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=470a3c12f8220765ac805e5e7352043a5ace7d31;p=xtf.git Rework the build systems environment list generation and use this to reduce the amount of repetition in the object list generation. Signed-off-by: Andrew Cooper --- diff --git a/build/common.mk b/build/common.mk index 4d878dd..2708f5a 100644 --- a/build/common.mk +++ b/build/common.mk @@ -2,9 +2,12 @@ ROOT := $(abspath $(CURDIR)/../..) DESTDIR ?= $(ROOT)/dist/ CC = gcc -PV_ENVIRONMENTS := pv64 pv32 -HVM_ENVIRONMENTS := hvm64 hvm32 -ALL_ENVIRONMENTS := $(PV_ENVIRONMENTS) $(HVM_ENVIRONMENTS) +ALL_ENVIRONMENTS := pv64 pv32 hvm64 hvm32 + +PV_ENVIRONMENTS := $(filter pv%,$(ALL_ENVIRONMENTS)) +HVM_ENVIRONMENTS := $(filter hvm%,$(ALL_ENVIRONMENTS)) +32BIT_ENVIRONMENTS := $(filter pv32% hvm32%,$(ALL_ENVIRONMENTS)) +64BIT_ENVIRONMENTS := $(filter pv64% hvm64%,$(ALL_ENVIRONMENTS)) pv64_arch := x86_64 pv32_arch := x86_32 diff --git a/build/files.mk b/build/files.mk index b09d302..65b32b8 100644 --- a/build/files.mk +++ b/build/files.mk @@ -21,21 +21,23 @@ obj-perenv += $(ROOT)/arch/x86/traps.o # Always link hypercall_page.S last as it is a page of data replaced by the hyperisor obj-perenv += $(ROOT)/arch/x86/hypercall_page.o + # HVM specific objects obj-hvm += $(ROOT)/arch/x86/hvm_pagetables.o obj-hvm += $(ROOT)/arch/x86/hvm/traps.o +$(foreach env,$(HVM_ENVIRONMENTS),$(eval obj-$(env) += $(obj-hvm))) -obj-hvm32 += $(obj-hvm) -obj-hvm32 += $(ROOT)/arch/x86/entry_32.o - -obj-hvm64 += $(obj-hvm) -obj-hvm64 += $(ROOT)/arch/x86/entry_64.o # PV specific objects obj-pv += $(ROOT)/arch/x86/pv/traps.o +$(foreach env,$(PV_ENVIRONMENTS),$(eval obj-$(env) += $(obj-pv))) + + +# 32bit specific objects +obj-32 += $(ROOT)/arch/x86/entry_32.o +$(foreach env,$(32BIT_ENVIRONMENTS),$(eval obj-$(env) += $(obj-32))) -obj-pv32 += $(obj-pv) -obj-pv32 += $(ROOT)/arch/x86/entry_32.o -obj-pv64 += $(obj-pv) -obj-pv64 += $(ROOT)/arch/x86/entry_64.o +# 64bit specific objects +obj-64 += $(ROOT)/arch/x86/entry_64.o +$(foreach env,$(64BIT_ENVIRONMENTS),$(eval obj-$(env) += $(obj-64)))