Skip to content

Commit 4388099

Browse files
jsun26intelwenlingz
authored andcommitted
Kconfig: change scenario variable type to string
Basicly ACRN scenario is a configuration name for specific usage. By giving scenario name ACRN will load corresponding VM configurations to build the hypervisor. But customer might have their own scenario name, change the scenario type from choice to string is friendly to them since Kconfig source file change will not be needed. With this change, CONFIG_$(SCENARIO) will not exist in kconfig file and will be instead of CONFIG_SCENARIO, so the Makefile need to be changed accordingly; Tracked-On: #4616 Signed-off-by: Victor Sun <victor.sun@intel.com>
1 parent 28bffa7 commit 4388099

File tree

4 files changed

+35
-89
lines changed

4 files changed

+35
-89
lines changed

Makefile

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ ifeq ($(KCONFIG_FILE), $(wildcard $(KCONFIG_FILE)))
7575
$(error no BOARD info in KCONFIG_FILE: $(KCONFIG_FILE))
7676
endif
7777

78-
SCENARIO_IN_KCONFIG := $(shell grep -E "SDC=y|SDC2=y|INDUSTRY=y|LOGICAL_PARTITION=y|HYBRID=y" \
79-
$(KCONFIG_FILE) | grep -v '\#' | awk -F "=" '{print $$1}' | cut -d '_' -f 2- | tr A-Z a-z)
78+
SCENARIO_IN_KCONFIG := $(shell grep CONFIG_SCENARIO= $(KCONFIG_FILE) | grep -v '\#' | awk -F '"' '{print $$2}')
8079
ifeq ($(SCENARIO_IN_KCONFIG),)
8180
$(error no SCENARIO info in KCONFIG_FILE: $(KCONFIG_FILE))
8281
endif
@@ -131,14 +130,13 @@ include $(T)/hypervisor/scripts/makefile/cfg_update.mk
131130

132131
#help functions to build acrn and install acrn/acrn symbols
133132
define build_acrn
134-
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(4) RELEASE=$(RELEASE) clean
135-
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(4) RELEASE=$(RELEASE) defconfig
136-
@echo "$(3)=y" >> $(HV_OUT)-$(1)/$(2)/.config
137-
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(4) RELEASE=$(RELEASE) oldconfig
138-
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(4) RELEASE=$(RELEASE)
133+
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(3) RELEASE=$(RELEASE) clean
134+
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(3) RELEASE=$(RELEASE) defconfig
135+
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(3) RELEASE=$(RELEASE) oldconfig
136+
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT)-$(1)/$(2) BOARD=$(2) FIRMWARE=$(1) SCENARIO=$(3) RELEASE=$(RELEASE)
139137
echo "building hypervisor as EFI executable..."
140138
@if [ "$(1)" = "uefi" ]; then \
141-
$(MAKE) -C $(T)/misc/efi-stub HV_OBJDIR=$(HV_OUT)-$(1)/$(2) SCENARIO=$(4) EFI_OBJDIR=$(HV_OUT)-$(1)/$(2)/$(EFI_OUT); \
139+
$(MAKE) -C $(T)/misc/efi-stub HV_OBJDIR=$(HV_OUT)-$(1)/$(2) SCENARIO=$(3) EFI_OBJDIR=$(HV_OUT)-$(1)/$(2)/$(EFI_OUT); \
142140
fi
143141
endef
144142

@@ -157,17 +155,12 @@ define install_acrn_debug
157155
endef
158156

159157
hypervisor:
160-
@if [ "$(SCENARIO)" != "sdc" ] && [ "$(SCENARIO)" != "sdc2" ] && [ "$(SCENARIO)" != "industry" ] \
161-
&& [ "$(SCENARIO)" != "logical_partition" ] && [ "$(SCENARIO)" != "hybrid" ]; then \
162-
echo "SCENARIO <$(SCENARIO)> is not supported. "; exit 1; \
163-
fi
164158
@if [ "$(BOARD_FILE)" != "" ] && [ -f $(BOARD_FILE) ] && [ "$(SCENARIO_FILE)" != "" ] && [ -f $(SCENARIO_FILE) ] && [ "$(TARGET_DIR)" = "" ]; then \
165159
echo "No TARGET_DIR parameter is specified, the original configuration source is overwritten!";\
166160
fi
167161
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD_FILE=$(BOARD_FILE) SCENARIO_FILE=$(SCENARIO_FILE) clean;
168162
$(MAKE) -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) BOARD_FILE=$(BOARD_FILE) SCENARIO_FILE=$(SCENARIO_FILE) TARGET_DIR=$(abspath $(TARGET_DIR)) defconfig;
169163
@if [ "$(CONFIG_XML_ENABLED)" != "true" ] && [ ! -f $(KCONFIG_FILE) ]; then \
170-
echo "CONFIG_$(shell echo $(SCENARIO) | tr a-z A-Z)=y" >> $(HV_OUT)/.config; \
171164
if [ "$(SCENARIO)" != "sdc" ]; then \
172165
echo "CONFIG_MAX_KATA_VM_NUM=0" >> $(HV_OUT)/.config; \
173166
fi; \
@@ -239,13 +232,13 @@ ifeq ($(FIRMWARE),uefi)
239232
endif
240233

241234
apl-mrb-sbl-sdc:
242-
$(call build_acrn,sbl,apl-mrb,CONFIG_SDC,sdc)
235+
$(call build_acrn,sbl,apl-mrb,sdc)
243236
apl-up2-sbl-sdc:
244-
$(call build_acrn,sbl,apl-up2,CONFIG_SDC,sdc)
237+
$(call build_acrn,sbl,apl-up2,sdc)
245238
kbl-nuc-i7-uefi-industry:
246-
$(call build_acrn,uefi,nuc7i7dnb,CONFIG_INDUSTRY,industry)
239+
$(call build_acrn,uefi,nuc7i7dnb,industry)
247240
apl-up2-uefi-hybrid:
248-
$(call build_acrn,uefi,apl-up2,CONFIG_HYBRID,hybrid)
241+
$(call build_acrn,uefi,apl-up2,hybrid)
249242

250243
sbl-hypervisor: apl-mrb-sbl-sdc \
251244
apl-up2-sbl-sdc \

hypervisor/Makefile

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,31 +50,11 @@ include scripts/makefile/deps.mk
5050

5151
include scripts/makefile/kconfig.mk
5252

53-
#initialize BOARD if it is not specified
54-
ifeq ($(BOARD),)
55-
override BOARD := $(CONFIG_BOARD)
56-
endif
57-
58-
ifeq ($(CONFIG_SDC),y)
59-
KCONFIG_SCENARIO := sdc
60-
else ifeq ($(CONFIG_SDC2),y)
61-
KCONFIG_SCENARIO := sdc2
62-
else ifeq ($(CONFIG_LOGICAL_PARTITION),y)
63-
KCONFIG_SCENARIO := logical_partition
64-
else ifeq ($(CONFIG_INDUSTRY),y)
65-
KCONFIG_SCENARIO := industry
66-
else ifeq ($(CONFIG_HYBRID),y)
67-
KCONFIG_SCENARIO := hybrid
68-
endif
53+
#override BOARD from CONFIG_BOARD, which is specified in kconfig.mk
54+
override BOARD := $(shell echo $(CONFIG_BOARD) |sed 's/"//g')
6955

70-
#initialize SCENARIO if it is not specified
71-
ifeq ($(SCENARIO),)
72-
ifeq ($(KCONFIG_SCENARIO),)
73-
override SCENARIO := sdc
74-
else
75-
override SCENARIO := $(KCONFIG_SCENARIO)
76-
endif
77-
endif
56+
#override SCENARIO from CONFIG_SCENARIO, which is specified in kconfig.mk
57+
override SCENARIO := $(shell echo $(CONFIG_SCENARIO) |sed 's/"//g')
7858

7959
ifeq ($(TARGET_DIR),)
8060
BOARD_CFG_DIR := arch/x86/configs/$(BOARD)
@@ -510,6 +490,8 @@ distclean:
510490

511491
PHONY: (VERSION)
512492
$(VERSION):
493+
@if [ "$(SCENARIO)" = "" ]; then echo "Please specify SCENARIO for the build!"; exit 1; fi;
494+
@if [ "$(BOARD)" = "" ]; then echo "Please specify BOARD for the build!"; exit 1; fi;
513495
@echo "SCENARIO <$(SCENARIO)> for BOARD <$(BOARD)> is specified."
514496
@if [ ! -d $(BOARD_CFG_DIR) ]; then \
515497
echo "Configurations for BOARD $(BOARD) is not found."; exit 1; \

hypervisor/arch/x86/Kconfig

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,18 @@
1-
choice
2-
prompt "ACRN Scenario"
3-
default SDC
4-
help
5-
Select the scenario name to load corresponding VM configuration.
6-
7-
config SDC
8-
bool "Software Defined Cockpit"
9-
help
10-
SDC (Software Defined Cockpit) is a typical scenario that ACRN supported.
11-
SDC will have one pre-launched SOS VM and one post-launched VM.
12-
13-
config SDC2
14-
bool "Software Defined Cockpit 2"
15-
help
16-
SDC2 (Software Defined Cockpit 2) is an extended scenario for automotive SDC system.
17-
SDC2 will have one pre-launched SOS VM and up to three post-launched VM.
18-
19-
config LOGICAL_PARTITION
20-
bool "Logical Partition VMs"
21-
help
22-
This scenario will run two pre-launched VMs.
23-
24-
config INDUSTRY
25-
bool "Industry VMs"
26-
help
27-
This scenario is a typical scenario for industry usage with 4 VMs:
28-
one pre-launched SOS VM, one post-launched Standard VM for HMI, one or two
29-
post-launched RT VM for real-time control.
30-
31-
config HYBRID
32-
bool "Hybrid VMs"
33-
help
34-
This scenario is a typical scenario for hybrid usage with 3 VMs:
35-
one pre-launched VM, one pre-launched SOS VM and one post-launched Standard
36-
VM.
37-
38-
endchoice
1+
config SCENARIO
2+
string "ACRN scenario"
3+
default "sdc"
4+
help
5+
By specifying SCENARIO name, ACRN will load corresponding VM configurations
6+
to build the hypervisor. Currently ACRN provides below reference scenarios:
7+
sdc: Typical scenario for automotive Software Defined Cockpit system.
8+
sdc will have one pre-launched SOS VM and one post-launched VM;
9+
sdc2: Extended scenario for automotive Software Defined Cockpit system.
10+
sdc2 will have one pre-launched SOS VM and up to three post-launched VMs;
11+
industry: Typical scenario for industry usage with 3 VMs: one pre-launched SOS VM,
12+
one post-launched Standard VM for HMI, one post-launched RT VM for real-time control.
13+
hybrid: Typical scenario for hybrid usage with 3 VMs: one pre-launched VM,
14+
one pre-launched SOS VM and one post-launched Standard VM;
15+
logical_partition: Typical scenario that run two isolated pre-launched VMs;
3916

4017
config MULTIBOOT2
4118
bool "Multiboot2 support"

hypervisor/scripts/makefile/kconfig.mk

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,10 @@ ifeq ($(shell [ $(HV_OBJDIR)/$(HV_CONFIG) -nt $(HV_OBJDIR)/$(HV_CONFIG_MK) ] &&
3636
# only happens when GNU make checks the prerequisites.
3737
-include $(HV_OBJDIR)/$(HV_CONFIG)
3838
endif
39-
4039
$(eval $(call override_config,BOARD,apl-mrb))
40+
$(eval $(call override_config,SCENARIO,))
4141
$(eval $(call override_config,RELEASE,n))
4242

43-
ifdef BOARD
44-
TARGET_BOARD=$(BOARD)
45-
else
46-
TARGET_BOARD=$(CONFIG_BOARD)
47-
endif
48-
4943
$(eval $(call check_dep_exec,python3,KCONFIG_DEPS))
5044
$(eval $(call check_dep_py3lib,kconfiglib,KCONFIG_DEPS))
5145

@@ -73,7 +67,7 @@ $(HV_OBJDIR)/$(HV_CONFIG_H): $(HV_OBJDIR)/$(HV_CONFIG)
7367
defconfig: $(KCONFIG_DEPS)
7468
@mkdir -p $(HV_OBJDIR)
7569
@if [ ! -f $(KCONFIG_FILE) ] && [ "$(CONFIG_XML_ENABLED)" != "true" ]; then \
76-
BOARD=$(TARGET_BOARD) python3 $(KCONFIG_DIR)/defconfig.py Kconfig $(HV_OBJDIR)/$(HV_CONFIG); \
70+
BOARD=$(CONFIG_BOARD) python3 $(KCONFIG_DIR)/defconfig.py Kconfig $(HV_OBJDIR)/$(HV_CONFIG); \
7771
else \
7872
if [ "$(KCONFIG_FILE)" != "" ] && [ -f $(KCONFIG_FILE) ]; then \
7973
echo "Writing $(HV_OBJDIR)/$(HV_CONFIG) with $(KCONFIG_FILE)"; \
@@ -92,10 +86,10 @@ defconfig: $(KCONFIG_DEPS)
9286
.PHONY: oldconfig
9387
oldconfig: $(KCONFIG_DEPS)
9488
@mkdir -p $(HV_OBJDIR)
95-
@BOARD=$(TARGET_BOARD) \
89+
@BOARD=$(CONFIG_BOARD) \
9690
python3 $(KCONFIG_DIR)/silentoldconfig.py Kconfig \
9791
$(HV_OBJDIR)/$(HV_CONFIG) \
98-
RELEASE=$(RELEASE)
92+
SCENARIO=$(CONFIG_SCENARIO) RELEASE=$(RELEASE)
9993

10094
# Minimize the current .config. This target can be used to generate a defconfig
10195
# for future use.

0 commit comments

Comments
 (0)