diff --git a/hypervisor/Makefile b/hypervisor/Makefile index a077eb36d..86f68ee18 100644 --- a/hypervisor/Makefile +++ b/hypervisor/Makefile @@ -393,11 +393,15 @@ MODULES += $(SYS_INIT_MOD) DISTCLEAN_OBJS := $(shell find $(BASEDIR) -name '*.o') VERSION := $(HV_OBJDIR)/include/version.h +HEADERS := $(VERSION) $(HV_CONFIG_H) $(HV_CONFIG_TIMESTAMP) PRE_BUILD_DIR := ../misc/hv_prebuild +PRE_BUILD_CHECKER := $(HV_OBJDIR)/hv_prebuild_check.out +HV_ACPI_TABLE_TIMESTAMP := $(HV_OBJDIR)/acpi.timestamp +SERIAL_CONF = $(HV_OBJDIR)/serial.conf .PHONY: all -all: env_check pre_build $(HV_OBJDIR)/$(HV_FILE).32.out $(HV_OBJDIR)/$(HV_FILE).bin +all: env_check $(HV_ACPI_TABLE_TIMESTAMP) $(SERIAL_CONF) $(HV_OBJDIR)/$(HV_FILE).32.out $(HV_OBJDIR)/$(HV_FILE).bin install: $(HV_OBJDIR)/$(HV_FILE).32.out $(HV_OBJDIR)/$(HV_FILE).bin install -D $(HV_OBJDIR)/$(HV_FILE).32.out $(DESTDIR)$(libdir)/acrn/$(HV_FILE).$(BOARD).$(SCENARIO).32.out @@ -419,18 +423,19 @@ ifndef ASL_COMPILER $(error Please either install "iasl" or provide the path to "iasl" by using the ASL_COMPILER variable) endif -.PHONY: pre_build -pre_build: $(HV_CONFIG_H) $(HV_CONFIG_TIMESTAMP) +$(PRE_BUILD_CHECKER): $(HV_CONFIG_H) $(HV_CONFIG_TIMESTAMP) @echo "Start pre-build static check ..." - $(MAKE) -C $(PRE_BUILD_DIR) BOARD=$(BOARD) SCENARIO=$(SCENARIO) TARGET_DIR=$(HV_CONFIG_DIR) - @$(HV_OBJDIR)/hv_prebuild_check.out - @echo "generate the binary of ACPI tables for pre-launched VMs ..." - python3 ../misc/config_tools/acpi_gen/bin_gen.py --board $(HV_OBJDIR)/.board.xml --scenario $(HV_OBJDIR)/.scenario.xml --asl $(HV_CONFIG_DIR) --out $(HV_OBJDIR) --iasl_path $(ASL_COMPILER) --iasl_min_ver $(IASL_MIN_VER) - @echo "generate the serial configuration file for service VM ..." - python3 ../misc/config_tools/service_vm_config/serial_config.py --allocation $(HV_OBJDIR)/configs/allocation.xml --scenario $(HV_OBJDIR)/.scenario.xml --out $(HV_OBJDIR)/serial.conf + $(MAKE) -C $(PRE_BUILD_DIR) BOARD=$(BOARD) SCENARIO=$(SCENARIO) CHECKER_OUT=$(PRE_BUILD_CHECKER) + @$(PRE_BUILD_CHECKER) -.PHONY: header -header: $(VERSION) $(HV_CONFIG_H) $(HV_CONFIG_TIMESTAMP) +$(HV_ACPI_TABLE_TIMESTAMP): $(HV_CONFIG_TIMESTAMP) + @echo "generate the binary of ACPI tables for pre-launched VMs ..." + python3 ../misc/config_tools/acpi_gen/bin_gen.py --board $(HV_BOARD_XML) --scenario $(HV_SCENARIO_XML) --asl $(HV_CONFIG_DIR) --out $(HV_OBJDIR) --iasl_path $(ASL_COMPILER) --iasl_min_ver $(IASL_MIN_VER) + @touch $(HV_ACPI_TABLE_TIMESTAMP) + +$(SERIAL_CONF): $(HV_CONFIG_TIMESTAMP) + @echo "generate the serial configuration file for service VM ..." + python3 ../misc/config_tools/service_vm_config/serial_config.py --allocation $(HV_ALLOCATION_XML) --scenario $(HV_SCENARIO_XML) --out $(SERIAL_CONF) .PHONY: lib-mod boot-mod hw-mod vp-base-mod vp-dm-mod vp-trusty-mod vp-x86tee-mod vp-hcall-mod sys-init-mod $(LIB_MOD): $(LIB_C_OBJS) $(LIB_S_OBJS) @@ -480,7 +485,7 @@ sys-init-mod: $(SYS_INIT_MOD) .PHONY: lib -$(LIB_BUILD): header +$(LIB_BUILD): $(HEADERS) $(MAKE) -f $(LIB_MK) MKFL_NAME=$(LIB_MK) lib: $(LIB_BUILD) @@ -550,17 +555,17 @@ $(VERSION): $(HV_CONFIG_H) -include $(C_OBJS:.o=.d) -include $(S_OBJS:.o=.d) -$(HV_OBJDIR)/%.o: %.c header +$(HV_OBJDIR)/%.o: %.c $(HEADERS) $(PRE_BUILD_CHECKER) [ ! -e $@ ] && mkdir -p $(dir $@) && mkdir -p $(HV_MODDIR); \ $(CC) $(patsubst %, -I%, $(INCLUDE_PATH)) -I. -c $(CFLAGS) $(ARCH_CFLAGS) $< -o $@ -MMD -MT $@ $(VM_CFG_C_SRCS): %.c: $(HV_CONFIG_TIMESTAMP) -$(VM_CFG_C_OBJS): %.o: %.c header +$(VM_CFG_C_OBJS): %.o: %.c $(HEADERS) $(PRE_BUILD_CHECKER) [ ! -e $@ ] && mkdir -p $(dir $@) && mkdir -p $(HV_MODDIR); \ $(CC) $(patsubst %, -I%, $(INCLUDE_PATH)) -I. -c $(CFLAGS) $(ARCH_CFLAGS) $< -o $@ -MMD -MT $@ -$(HV_OBJDIR)/%.o: %.S header +$(HV_OBJDIR)/%.o: %.S $(HEADERS) $(PRE_BUILD_CHECKER) [ ! -e $@ ] && mkdir -p $(dir $@) && mkdir -p $(HV_MODDIR); \ $(CC) $(patsubst %, -I%, $(INCLUDE_PATH)) -I. $(ASFLAGS) $(ARCH_ASFLAGS) -c $< -o $@ -MMD -MT $@ diff --git a/misc/hv_prebuild/Makefile b/misc/hv_prebuild/Makefile index 846149d94..73fbf6f86 100644 --- a/misc/hv_prebuild/Makefile +++ b/misc/hv_prebuild/Makefile @@ -14,8 +14,8 @@ ifeq ($(SCENARIO),) $(error please specify SCENARIO for the build!) endif -ifeq ($(TARGET_DIR),) - $(error please specify VM configs directory! ) +ifeq ($(CHECKER_OUT),) + $(error please specify the path to the generated checker! ) endif BOARD_INFO_DIR := $(HV_OBJDIR)/configs/boards @@ -52,4 +52,4 @@ default: $(PRE_BUILD_SRCS) else \ echo "Found $(BOARD) configuration for SCENARIO $(SCENARIO) under $(BOARD_CFG_DIR)"; \ fi; - $(CC) $(PRE_BUILD_SRCS) $(PRE_BUILD_INCLUDE) $(PRE_BUILD_CFLAGS) -o $(HV_OBJDIR)/hv_prebuild_check.out + $(CC) $(PRE_BUILD_SRCS) $(PRE_BUILD_INCLUDE) $(PRE_BUILD_CFLAGS) -o $(CHECKER_OUT)