From 3f3ec3865ee0475217f8588fd2978d961d9538b6 Mon Sep 17 00:00:00 2001 From: Victor Sun Date: Thu, 19 Sep 2019 23:07:10 +0800 Subject: [PATCH] Makefile: generate config patch in hypervisor/Makefile Previously we generate config patch based on config xml in toplevel Makefile, it brings two issues: 1. we could not generate xml configuration patch with hypervisor source only; 2. The github commit info of current code base which is defined in version.h will be overwritten by the new generated config patch, then the lost commit info would impact build identify and bug reproducing. This patch fixed these two issues. Besides, the patch also modify the logic of platform_acpi_info file existence judgement, which need to be depends on the acrn-config patch. Tracked-On: #3602 Signed-off-by: Victor Sun --- Makefile | 54 ++++++++++++--------------------- hypervisor/Makefile | 74 ++++++++++++++++++++++++++++++++------------- 2 files changed, 73 insertions(+), 55 deletions(-) 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)