1CONFIG_XML_ENABLED ?=
2UPDATE_RESULT = $(HV_OBJDIR)/.cfg_src_result
3
4define check_xml_enabled =
5CONFIG_XML_ENABLED := $(shell if [ "$(1)" != "" ] || [ "$(2)" != "" ]; then echo false; fi)
6BOARD_IN_XML := $(shell echo `if [ "$(1)" != "" ]; then sed -n '/<acrn-config/p' $(1) | sed -r 's/.*board="(.*)".*/\1/g'; fi`)
7SCENARIO_IN_XML := $(shell echo `if [ "$(2)" != "" ]; then sed -n '/<acrn-config/p' $(2) | sed -r 's/.*scenario="(.*)".*/\1/g'; fi`)
8
9ifneq ($$(BOARD_IN_XML),)
10    ifneq ($$(SCENARIO_IN_XML),)
11        CONFIG_XML_ENABLED := true
12    endif
13endif
14
15endef
16
17ifeq ($(CONFIG_XML_ENABLED),)
18    $(eval $(call check_xml_enabled,$(BOARD_FILE),$(SCENARIO_FILE)))
19endif
20
21ifeq ($(CONFIG_XML_ENABLED),true)
22    override BOARD := $(BOARD_IN_XML)
23    override SCENARIO := $(SCENARIO_IN_XML)
24    RELEASE_IN_XML := $(shell echo `sed -n '/<RELEASE/p' $(SCENARIO_FILE) | sed -r 's/.*<RELEASE(.*)>(.*)<(.*)/\2/g'`)
25    ifndef RELEASE
26        ifeq ($(RELEASE_IN_XML),y)
27            override RELEASE := 1
28        else
29            override RELEASE := 0
30        endif
31    endif
32endif
33
34update_config:
35ifeq ($(CONFIG_XML_ENABLED),true)
36	@if [ ! -f $(UPDATE_RESULT) ]; then \
37		mkdir -p $(dir $(UPDATE_RESULT));\
38		python3 ../misc/config_tools/board_config/board_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) --out $(TARGET_DIR) > $(UPDATE_RESULT);\
39		cat $(UPDATE_RESULT);\
40		if [ "`sed -n /successfully/p $(UPDATE_RESULT)`" = "" ]; then rm -f $(UPDATE_RESULT); exit 1;	fi;\
41		if [ "$(TARGET_DIR)" = "" ]; then \
42			python3 ../misc/config_tools/scenario_config/scenario_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) > $(UPDATE_RESULT);\
43		else \
44			python3 ../misc/config_tools/scenario_config/scenario_cfg_gen.py --board $(BOARD_FILE) --scenario $(SCENARIO_FILE) --out $(abspath $(TARGET_DIR)) > $(UPDATE_RESULT);\
45		fi;\
46		cat $(UPDATE_RESULT);\
47		if [ "`sed -n /successfully/p $(UPDATE_RESULT)`" = "" ]; then rm -f $(UPDATE_RESULT); exit 1;	fi;\
48		echo "Import hypervisor Board/VM configuration from XMLs.";\
49		if [ "$(TARGET_DIR)" = "" ]; then echo "Warning: configurations in source code has been overwritten!"; fi;\
50	elif [ "`sed -n /successfully/p $(UPDATE_RESULT)`" = "" ]; then \
51		echo "Problem is found on Board/VM configuration patching, please rebuild."; rm -f $(UPDATE_RESULT); exit 1; \
52	else \
53		echo "Configurations is patched already!";\
54	fi;
55else ifeq ($(CONFIG_XML_ENABLED),false)
56	@echo "Config XML file does not exist or with unknown format."
57	@exit 1
58else
59	@echo "Using hypervisor configurations from source code directly."
60endif
61