From 0b65b8f05c35c56eb2527e1a55b30247a475689d Mon Sep 17 00:00:00 2001 From: Victor Sun Date: Tue, 17 Sep 2019 11:55:47 +0800 Subject: [PATCH] Makefile: override .config with specified scenario 1. if SCENARIO=$(SCENARIO) is specified in make param, then override the default CONFIG_$(SCENARIO) value in existed .config. This means we don't need to modify the default SCENARIO config in Kconfig file to build the hypervisor; 2. Some board name shortcuts like apl-nuc/kbl-nuc-i7 need to be converted to official board name to make sure overrides working; 3. Previously make sbl-hypervisor did not load the defconfig so the defconfig for boards are lost, this patch fix this issue; 4. remove SCENARIO param when make hypervisor, because SCENARIO could be got from SCENARIO_NAME which parsed from .config; Tracked-On: #3593 Signed-off-by: Victor Sun Reviewed-by: Yin Fengwei --- Makefile | 57 +++++++++++++++++++++++++++++++----------- hypervisor/Makefile | 6 ++--- misc/efi-stub/Makefile | 2 ++ 3 files changed, 47 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 08465299e..5d5fa2fff 100644 --- a/Makefile +++ b/Makefile @@ -34,43 +34,70 @@ 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}'` +ifeq ($(BOARD), apl-nuc) +override BOARD := nuc6cayh +else ifeq ($(BOARD), kbl-nuc-i7) +override BOARD := nuc7i7dnb +endif + cfg_src: @if [ ! -f $(BOARD_FILE) ] ; then \ - echo "$(BOARD_FILE) is not exist!"; exit 1; \ + echo "Board xml file $(BOARD_FILE) is not exist!"; exit 1; \ fi @if [ ! -f "$(SCENARIO_FILE)" ]; then \ - echo "$(SCENARIO_FILE) is not exist!"; exit 1; \ + echo "Scenario xml file $(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 + +ifeq ($(BOARD), apl-nuc) +override BOARD := nuc6cayh +else ifeq ($(BOARD), kbl-nuc-i7) +override BOARD := nuc7i7dnb +endif + 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) + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) clean + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD=$(BOARD) FIRMWARE=$(FIRMWARE) RELEASE=$(RELEASE) defconfig + @if [ "$(SCENARIO)" ]; then \ + echo "CONFIG_$(shell echo $(SCENARIO) | tr a-z A-Z)=y" >> $(HV_OUT)/.config; \ + fi + @if [ -f "$(SCENARIO_FILE)" ]; 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) 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) endif sbl-hypervisor: - @mkdir -p $(HV_OUT)-sbl/apl-mrb $(HV_OUT)-sbl/apl-up2 - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl SCENARIO=sdc RELEASE=$(RELEASE) clean - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl SCENARIO=sdc RELEASE=$(RELEASE) - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl SCENARIO=sdc RELEASE=$(RELEASE) clean - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl SCENARIO=sdc RELEASE=$(RELEASE) + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl RELEASE=$(RELEASE) clean + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl RELEASE=$(RELEASE) defconfig + @echo "CONFIG_SDC=y" >> $(HV_OUT)-sbl/.config + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl RELEASE=$(RELEASE) oldconfig + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-mrb BOARD=apl-mrb FIRMWARE=sbl RELEASE=$(RELEASE) - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi SCENARIO=industry RELEASE=$(RELEASE) clean - @mkdir -p $(HV_OUT)-isd - @echo "CONFIG_INDUSTRY=y" > $(HV_OUT)-isd/.config - @echo 'CONFIG_BOARD="nuc7i7dnb"' >> $(HV_OUT)-isd/.config - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi SCENARIO=industry RELEASE=$(RELEASE) oldconfig - $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi SCENARIO=industry RELEASE=$(RELEASE) + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl RELEASE=$(RELEASE) clean + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl RELEASE=$(RELEASE) defconfig + @echo "CONFIG_SDC=y" >> $(HV_OUT)-sbl/.config + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl RELEASE=$(RELEASE) oldconfig + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-sbl/apl-up2 BOARD=apl-up2 FIRMWARE=sbl RELEASE=$(RELEASE) + + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi RELEASE=$(RELEASE) clean + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi RELEASE=$(RELEASE) defconfig + @echo "CONFIG_INDUSTRY=y" >> $(HV_OUT)-isd/.config + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi RELEASE=$(RELEASE) oldconfig + $(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-isd BOARD=kbl-nuc-i7 FIRMWARE=uefi RELEASE=$(RELEASE) ifeq ($(FIRMWARE),uefi) echo "building hypervisor as EFI executable..." diff --git a/hypervisor/Makefile b/hypervisor/Makefile index 4343db267..db02cfe13 100644 --- a/hypervisor/Makefile +++ b/hypervisor/Makefile @@ -360,11 +360,11 @@ endif all: pre_build $(HV_OBJDIR)/$(HV_FILE).32.out $(HV_OBJDIR)/$(HV_FILE).bin install: $(HV_OBJDIR)/$(HV_FILE).32.out - install -D $(HV_OBJDIR)/$(HV_FILE).32.out $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO).32.out + install -D $(HV_OBJDIR)/$(HV_FILE).32.out $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO_NAME).32.out install-debug: $(HV_OBJDIR)/$(HV_FILE).map $(HV_OBJDIR)/$(HV_FILE).out - install -D $(HV_OBJDIR)/$(HV_FILE).out $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO).out - install -D $(HV_OBJDIR)/$(HV_FILE).map $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO).map + install -D $(HV_OBJDIR)/$(HV_FILE).out $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO_NAME).out + install -D $(HV_OBJDIR)/$(HV_FILE).map $(DESTDIR)/usr/lib/acrn/$(HV_FILE).$(BOARD).$(FIRMWARE).$(SCENARIO_NAME).map .PHONY: pre_build pre_build: $(PRE_BUILD_OBJS) diff --git a/misc/efi-stub/Makefile b/misc/efi-stub/Makefile index dd634f8c0..858c271fa 100644 --- a/misc/efi-stub/Makefile +++ b/misc/efi-stub/Makefile @@ -36,6 +36,8 @@ C_SRCS = boot.c pe.c malloc.c ACRN_OBJS := $(patsubst %.c,$(EFI_OBJDIR)/%.o,$(C_SRCS)) INCLUDE_PATH += $(HV_OBJDIR)/include +SCENARIO ?= sdc + OBJCOPY=objcopy HOST = $(shell $(CC) -dumpmachine | sed "s/\(-\).*$$//")