diff --git a/Makefile b/Makefile index 5d5fa2fff..59eb6a278 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ BUILD_VERSION ?= BUILD_TAG ?= BOARD_FILE ?= SCENARIO_FILE ?= +CONFIG_XML_ENABLED ?= false export TOOLS_OUT @@ -31,8 +32,13 @@ export TOOLS_OUT all: hypervisor devicemodel tools 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}'` +override BOARD := $(shell echo `sed -n '/> $(HV_OUT)/.config; \ fi - @if [ -f "$(SCENARIO_FILE)" ]; then \ + @if [ "$(CONFIG_XML_ENABLED)" = "true" ]; then \ echo "CONFIG_ENFORCE_VALIDATED_ACPI_INFO=y" >> $(HV_OUT)/.config; \ fi - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) oldconfig - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) \ + BOARD_FILE=$(BOARD_FILE) SCENARIO_FILE=$(SCENARIO_FILE) oldconfig + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) \ + BOARD_FILE=$(BOARD_FILE) SCENARIO_FILE=$(SCENARIO_FILE) ifeq ($(FIRMWARE),uefi) echo "building hypervisor as EFI executable..." $(MAKE) -C $(T)/misc/efi-stub HV_OBJDIR=$(HV_OUT) SCENARIO=$(SCENARIO) EFI_OBJDIR=$(EFI_OUT) @@ -124,13 +110,13 @@ clean: .PHONY: install install: hypervisor-install devicemodel-install tools-install -hypervisor-install: cfg_src +hypervisor-install: $(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: cfg_src +hypervisor-install-debug: $(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 diff --git a/hypervisor/Makefile b/hypervisor/Makefile index db02cfe13..dfd520346 100644 --- a/hypervisor/Makefile +++ b/hypervisor/Makefile @@ -5,6 +5,8 @@ include ../VERSION FULL_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION)$(EXTRA_VERSION) +SCENARIO_IN_XML := + API_MAJOR_VERSION=1 API_MINOR_VERSION=0 @@ -41,6 +43,11 @@ ARCH_ASFLAGS := ARCH_ARFLAGS := ARCH_LDFLAGS := +ifneq ($(BOARD_FILE)$(SCENARIO_FILE),) +override BOARD := $(shell echo `sed -n '/ does not match Kconfig <$(CONFIG_BOARD)>!"; exit 1; \ + fi + @if [ "$(SCENARIO_IN_XML)" != "$(SCENARIO_NAME)" ]; then \ + echo "Scenario in xml file <$(SCENARIO_IN_XML)> does not match Kconfig <$(SCENARIO_NAME)>!"; exit 1; \ + fi + @python3 ../misc/acrn-config/board_config/board_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) > $(HV_OBJDIR)/.cfg_src_result + @cat $(HV_OBJDIR)/.cfg_src_result + @if [ "`sed -n /successfully/p $(HV_OBJDIR)/.cfg_src_result`" = "" ]; then exit 1; fi + @python3 ../misc/acrn-config/scenario_config/scenario_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) > $(HV_OBJDIR)/.cfg_src_result + @cat $(HV_OBJDIR)/.cfg_src_result + @if [ "`sed -n /successfully/p $(HV_OBJDIR)/.cfg_src_result`" = "" ]; then exit 1; fi + @echo "Import hypervisor configurations from Config-xmls, configurations in source code are ignored!" +else + @echo "Use hypervisor configurations from source code directly." +endif + .PHONY: pre_build pre_build: $(PRE_BUILD_OBJS)