1HV_OBJDIR ?= $(CURDIR)/build 2HV_CONFIG_H := $(HV_OBJDIR)/include/config.h 3HV_SRC_DIR := ../../hypervisor 4 5ifneq ($(HV_CONFIG_H), $(wildcard $(HV_CONFIG_H))) 6 $(error $(HV_CONFIG_H) does not exist) 7endif 8 9ifeq ($(BOARD),) 10 $(error please specify BOARD for the build!) 11endif 12 13ifeq ($(SCENARIO),) 14 $(error please specify SCENARIO for the build!) 15endif 16 17ifeq ($(CHECKER_OUT),) 18 $(error please specify the path to the generated checker! ) 19endif 20 21BOARD_INFO_DIR := $(HV_OBJDIR)/configs/boards 22SCENARIO_CFG_DIR := $(HV_OBJDIR)/configs/scenarios/$(SCENARIO) 23BOARD_CFG_DIR := $(SCENARIO_CFG_DIR) 24 25PRE_BUILD_SRCS += main.c 26PRE_BUILD_SRCS += static_checks.c 27PRE_BUILD_SRCS += vm_cfg_checks.c 28PRE_BUILD_SRCS += $(HV_SRC_DIR)/arch/x86/configs/vm_config.c 29PRE_BUILD_SRCS += $(SCENARIO_CFG_DIR)/vm_configurations.c 30PRE_BUILD_SRCS += $(BOARD_CFG_DIR)/pt_intx.c 31ifneq (,$(wildcard $(BOARD_CFG_DIR)/pci_dev.c)) 32PRE_BUILD_SRCS += $(BOARD_CFG_DIR)/pci_dev.c 33endif 34PRE_BUILD_CFLAGS += -fno-stack-protector -fno-builtin -W -Wall 35PRE_BUILD_INCLUDE := $(patsubst %, -I %, $(INCLUDE_PATH)) -include $(HV_CONFIG_H) -I . 36 37.PHONY: default 38default: $(PRE_BUILD_SRCS) 39 @echo "SCENARIO <$(SCENARIO)> for BOARD <$(BOARD)> is specified." 40 @if [ ! -d $(BOARD_INFO_DIR) ]; then \ 41 echo "Information of BOARD $(BOARD) is not found."; exit 1; \ 42 else \ 43 echo "Found BOARD $(BOARD) information under $(BOARD_INFO_DIR)"; \ 44 fi; 45 @if [ ! -d $(SCENARIO_CFG_DIR) ]; then \ 46 echo "Configurations for SCENARIO $(SCENARIO) is not found."; exit 1; \ 47 else \ 48 echo "Found SCENARIO $(SCENARIO) configurations under $(SCENARIO_CFG_DIR)"; \ 49 fi; 50 @if [ ! -d $(BOARD_CFG_DIR) ]; then \ 51 echo "$(BOARD) configuration for SCENARIO $(SCENARIO) is not found."; exit 1; \ 52 else \ 53 echo "Found $(BOARD) configuration for SCENARIO $(SCENARIO) under $(BOARD_CFG_DIR)"; \ 54 fi; 55 $(CC) $(PRE_BUILD_SRCS) $(PRE_BUILD_INCLUDE) $(PRE_BUILD_CFLAGS) -o $(CHECKER_OUT) 56