5
5
include ../VERSION
6
6
FULL_VERSION =$(MAJOR_VERSION ) .$(MINOR_VERSION )$(EXTRA_VERSION )
7
7
8
+ SCENARIO_IN_XML :=
9
+
8
10
API_MAJOR_VERSION =1
9
11
API_MINOR_VERSION =0
10
12
@@ -41,6 +43,11 @@ ARCH_ASFLAGS :=
41
43
ARCH_ARFLAGS :=
42
44
ARCH_LDFLAGS :=
43
45
46
+ ifneq ($(BOARD_FILE )$(SCENARIO_FILE ) ,)
47
+ override BOARD := $(shell echo `sed -n '/<acrn-config/p' $(BOARD_FILE ) | sed -r 's/.* board="(.* ) ".*/\1/g'` )
48
+ SCENARIO_IN_XML := $( shell sed -n ' /<acrn-config/p' $( SCENARIO_FILE) | sed -r ' s/.*scenario="(.*)".*/\1/g' )
49
+ endif
50
+
44
51
.PHONY: default
45
52
default: all
46
53
@@ -327,36 +334,36 @@ BOARDTEMPLATE_ACPI_INFO_HEADER := arch/x86/configs/$(CONFIG_BOARD)/platform_acpi
327
334
SOURCE_ACPI_INFO_HEADER := arch/x86/configs/$( CONFIG_BOARD) /$( CONFIG_BOARD) _acpi_info.h
328
335
TARGET_ACPI_INFO_HEADER := $( HV_OBJDIR) /include/platform_acpi_info.h
329
336
330
- $(TARGET_ACPI_INFO_HEADER ) : $(HV_OBJDIR ) /$(HV_CONFIG )
331
- ifeq (,$(wildcard $(SOURCE_ACPI_INFO_HEADER ) ) )
332
- @echo "******* No ACPI info found *******" && \
337
+ $( TARGET_ACPI_INFO_HEADER) : $( HV_OBJDIR) /$( HV_CONFIG) cfg_src
338
+ ifeq ($( CONFIG_ENFORCE_VALIDATED_ACPI_INFO) ,y)
339
+ @if [ ! -f $( SOURCE_ACPI_INFO_HEADER) ]; then \
340
+ echo " ******* No ACPI info found *******" && \
333
341
echo " Expected ACPI info header at $( SOURCE_ACPI_INFO_HEADER) " && \
334
342
echo " " && \
335
343
echo " The ACPI info header for this board is not available. Please use" && \
336
- echo "an offline tool on the target board to generate a validated one." && \
337
- echo "More details will be available soon."
338
- ifdef CONFIG_ENFORCE_VALIDATED_ACPI_INFO
339
- @echo "" && \
344
+ echo " acrn-config tool for the target board to generate a validated one." \
340
345
echo " If you want to build the hypervisor with the template ACPI info," && \
341
346
echo " unset ENFORCE_VALIDATED_ACPI_INFO using 'make menuconfig'." && \
342
- false
343
- else ifeq (,$(wildcard $(BOARDTEMPLATE_ACPI_INFO_HEADER)))
344
- @echo "" && \
345
- echo "Using the template at $(TEMPLATE_ACPI_INFO_HEADER) instead" && \
346
- echo "**********************************"
347
- @cp $(TEMPLATE_ACPI_INFO_HEADER) $(TARGET_ACPI_INFO_HEADER)
348
- else
349
- @echo "" && \
350
- echo "Using the template at $(BOARDTEMPLATE_ACPI_INFO_HEADER) instead" && \
351
- echo "**********************************"
352
- @cp $(BOARDTEMPLATE_ACPI_INFO_HEADER) $(TARGET_ACPI_INFO_HEADER)
353
- endif
347
+ false ; \
348
+ else \
349
+ echo " Found validated ACPI info file : $( SOURCE_ACPI_INFO_HEADER) " ; \
350
+ cp $( SOURCE_ACPI_INFO_HEADER) $( TARGET_ACPI_INFO_HEADER) ; \
351
+ fi
354
352
else
355
- @cp $(SOURCE_ACPI_INFO_HEADER) $(TARGET_ACPI_INFO_HEADER)
353
+ @if [ -f $( SOURCE_ACPI_INFO_HEADER) ]; then \
354
+ echo " Found validated ACPI info file : $( SOURCE_ACPI_INFO_HEADER) " ; \
355
+ cp $( SOURCE_ACPI_INFO_HEADER) $( TARGET_ACPI_INFO_HEADER) ; \
356
+ elif [ -f $( BOARDTEMPLATE_ACPI_INFO_HEADER) ]; then \
357
+ echo " No ACPI info found, using the template at $( BOARDTEMPLATE_ACPI_INFO_HEADER) instead" ; \
358
+ cp $( BOARDTEMPLATE_ACPI_INFO_HEADER) $( TARGET_ACPI_INFO_HEADER) ; \
359
+ else \
360
+ echo " No ACPI info found, using the template at $( TEMPLATE_ACPI_INFO_HEADER) instead" ; \
361
+ cp $( TEMPLATE_ACPI_INFO_HEADER) $( TARGET_ACPI_INFO_HEADER) ; \
362
+ fi
356
363
endif
357
364
358
365
.PHONY: all
359
- all : pre_build $(HV_OBJDIR ) /$(HV_FILE ) .32.out $(HV_OBJDIR ) /$(HV_FILE ) .bin
366
+ all: cfg_src pre_build $( HV_OBJDIR) /$( HV_FILE) .32.out $( HV_OBJDIR) /$( HV_FILE) .bin
360
367
361
368
install: $( HV_OBJDIR) /$( HV_FILE) .32.out
362
369
install -D $( HV_OBJDIR) /$( HV_FILE) .32.out $( DESTDIR) /usr/lib/acrn/$( HV_FILE) .$( BOARD) .$( FIRMWARE) .$( SCENARIO_NAME) .32.out
@@ -365,6 +372,31 @@ install-debug: $(HV_OBJDIR)/$(HV_FILE).map $(HV_OBJDIR)/$(HV_FILE).out
365
372
install -D $( HV_OBJDIR) /$( HV_FILE) .out $( DESTDIR) /usr/lib/acrn/$( HV_FILE) .$( BOARD) .$( FIRMWARE) .$( SCENARIO_NAME) .out
366
373
install -D $( HV_OBJDIR) /$( HV_FILE) .map $( DESTDIR) /usr/lib/acrn/$( HV_FILE) .$( BOARD) .$( FIRMWARE) .$( SCENARIO_NAME) .map
367
374
375
+ cfg_src: $( VERSION)
376
+ ifneq ($( BOARD_FILE) $( SCENARIO_FILE) ,)
377
+ @if [ ! -f $( BOARD_FILE) ]; then \
378
+ echo " Board xml file $( BOARD_FILE) is not exist!" ; exit 1; \
379
+ fi
380
+ @if [ ! -f " $( SCENARIO_FILE) " ]; then \
381
+ echo " Scenario xml file $( SCENARIO_FILE) is not exist!" ; exit 1; \
382
+ fi
383
+ @if [ " $( BOARD) " != " $( CONFIG_BOARD) " ]; then \
384
+ echo " Board in xml file <$( BOARD) > does not match Kconfig <$( CONFIG_BOARD) >!" ; exit 1; \
385
+ fi
386
+ @if [ " $( SCENARIO_IN_XML) " != " $( SCENARIO_NAME) " ]; then \
387
+ echo " Scenario in xml file <$( SCENARIO_IN_XML) > does not match Kconfig <$( SCENARIO_NAME) >!" ; exit 1; \
388
+ fi
389
+ @python3 ../misc/acrn-config/board_config/board_cfg_gen.py --board $( BOARD_FILE) --scenario $( SCENARIO_FILE) > $( HV_OBJDIR) /.cfg_src_result
390
+ @cat $( HV_OBJDIR) /.cfg_src_result
391
+ @if [ " ` sed -n /successfully/p $( HV_OBJDIR) /.cfg_src_result` " = " " ]; then exit 1; fi
392
+ @python3 ../misc/acrn-config/scenario_config/scenario_cfg_gen.py --board $( BOARD_FILE) --scenario $( SCENARIO_FILE) > $( HV_OBJDIR) /.cfg_src_result
393
+ @cat $( HV_OBJDIR) /.cfg_src_result
394
+ @if [ " ` sed -n /successfully/p $( HV_OBJDIR) /.cfg_src_result` " = " " ]; then exit 1; fi
395
+ @echo " Import hypervisor configurations from Config-xmls, configurations in source code are ignored!"
396
+ else
397
+ @echo " Use hypervisor configurations from source code directly."
398
+ endif
399
+
368
400
.PHONY: pre_build
369
401
pre_build: $( PRE_BUILD_OBJS)
370
402
0 commit comments