From 9389225633df5bb1bca8d5b2f022d6ee28456fb1 Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Wed, 11 Sep 2019 14:42:05 +0800 Subject: [PATCH] makefile: enable xml config to build hypervisor 1. This patch enabled one path for compiling the souce code which generated by acrn-config tools. The usage below: $ make hypervisor BOARD_FILE=$(board.xml) SCENARIO_FILE=$(scenario.xml) if BOARD_FILE and SCENARIO_FILE are not specified, fallback to previous compiling hypervisor usage: $ make hypervisor BOARD=$(board) SCENARIO=$(scenario) v1-v2: 1). update commit message Tracked-On: #3602 Signed-off-by: Wei Liu Reviewed-by: Binbin Wu --- Makefile | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index efa296680..08465299e 100644 --- a/Makefile +++ b/Makefile @@ -22,12 +22,35 @@ TOOLS_OUT := $(ROOT_OUT)/misc/tools DOC_OUT := $(ROOT_OUT)/doc BUILD_VERSION ?= BUILD_TAG ?= +BOARD_FILE ?= +SCENARIO_FILE ?= + export TOOLS_OUT .PHONY: all hypervisor devicemodel tools doc all: hypervisor devicemodel tools -hypervisor: +ifneq ($(BOARD_FILE)$(SCENARIO_FILE),) +BOARD := `sed -n '/board/p' $(BOARD_FILE) |head -1|awk -F'"' '{print $$2}'` +SCENARIO := `sed -n '/scenario/p' $(SCENARIO_FILE) |head -1|awk -F'"' '{print $$4}'` + +cfg_src: + @if [ ! -f $(BOARD_FILE) ] ; then \ + echo "$(BOARD_FILE) is not exist!"; exit 1; \ + fi + @if [ ! -f "$(SCENARIO_FILE)" ]; then \ + echo "$(SCENARIO_FILE) is not exist!"; exit 1; \ + fi + @python3 misc/acrn-config/board_config/board_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) || exit $$? + @python3 misc/acrn-config/scenario_config/scenario_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) || exit $$? + @echo "Import hypervisor configurations from Config-xmls, configurations in source code are ignored!" +else +cfg_src: + @echo "Use hypervisor configurations from source code directly." + +endif + +hypervisor: cfg_src $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) RELEASE=$(RELEASE) clean $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) RELEASE=$(RELEASE) ifeq ($(FIRMWARE),uefi) @@ -74,13 +97,13 @@ clean: .PHONY: install install: hypervisor-install devicemodel-install tools-install -hypervisor-install: +hypervisor-install: cfg_src $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) RELEASE=$(RELEASE) install ifeq ($(FIRMWARE),uefi) $(MAKE) -C $(T)/misc/efi-stub HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) EFI_OBJDIR=$(EFI_OUT) all install endif -hypervisor-install-debug: +hypervisor-install-debug: cfg_src $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) RELEASE=$(RELEASE) install-debug ifeq ($(FIRMWARE),uefi) $(MAKE) -C $(T)/misc/efi-stub HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) SCENARIO=$(SCENARIO) EFI_OBJDIR=$(EFI_OUT) all install-debug