2016-01-22 11:11:33 +01:00
|
|
|
TARGET = muen
|
|
|
|
REQUIRES = x86_64 muen
|
|
|
|
MUEN_SRC_DIR = $(call select_from_ports,muen)/src/kernel/muen
|
|
|
|
MUEN_BUILD_DIR = $(BUILD_BASE_DIR)/kernel
|
|
|
|
MUEN_CONF_FILE = $(MUEN_BUILD_DIR)/muen.conf
|
|
|
|
MUEN_DST_DIR = $(MUEN_BUILD_DIR)/muen
|
|
|
|
MUEN_LOG = $(MUEN_BUILD_DIR)/build.log
|
|
|
|
|
|
|
|
MUEN_SYSTEM = $(shell sed -n "/^SYSTEM/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
|
|
|
MUEN_HARDWARE = $(shell sed -n "/^HARDWARE/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
2017-04-05 18:29:07 +02:00
|
|
|
MUEN_PLATFORM = $(shell sed -n "/^PLATFORM/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
2016-01-22 11:11:33 +01:00
|
|
|
MUEN_COMPONENTS = $(shell sed -n "/^COMPONENTS/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
|
|
|
GNAT_PATH = $(shell sed -n "/^GNAT_PATH/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
|
|
|
SPARK_PATH = $(shell sed -n "/^SPARK_PATH/s/^.*=\\s*//p" ${MUEN_CONF_FILE})
|
|
|
|
|
|
|
|
BUILD_ENV = PATH=$(GNAT_PATH)/bin:$(SPARK_PATH)/bin:$$PATH
|
2017-04-05 18:29:07 +02:00
|
|
|
BUILD_OPTS = SYSTEM=$(MUEN_SYSTEM) HARDWARE=$(MUEN_HARDWARE) PLATFORM=$(MUEN_PLATFORM) NO_PROOF=true
|
2015-08-26 10:16:47 +02:00
|
|
|
|
2016-02-16 16:36:49 +01:00
|
|
|
ifneq ($(filter muen, $(SPECS)),)
|
2015-08-26 10:16:47 +02:00
|
|
|
$(TARGET): $(MUEN_DST_DIR)
|
2017-03-30 17:37:26 +02:00
|
|
|
$(MSG_BUILD)Muen policy
|
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR) $(BUILD_OPTS) policy-merge rts >> $(MUEN_LOG) 2>&1
|
2015-08-26 10:16:47 +02:00
|
|
|
$(MSG_BUILD)Muen components
|
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/components \
|
2016-09-26 18:20:16 +02:00
|
|
|
COMPONENTS=$(MUEN_COMPONENTS) $(BUILD_OPTS) >> $(MUEN_LOG) 2>&1
|
2017-03-30 17:37:26 +02:00
|
|
|
$(MSG_BUILD)Muen kernel
|
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/policy $(BUILD_OPTS) compile >> $(MUEN_LOG) 2>&1
|
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/kernel $(BUILD_OPTS) >> $(MUEN_LOG) 2>&1
|
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/components $(BUILD_OPTS) install-tau0 >> $(MUEN_LOG) 2>&1
|
2015-08-26 10:16:47 +02:00
|
|
|
|
2016-09-26 18:20:16 +02:00
|
|
|
$(MUEN_DST_DIR): download_contrib
|
2015-08-26 10:16:47 +02:00
|
|
|
$(VERBOSE)mkdir -p $(MUEN_DST_DIR)
|
|
|
|
$(VERBOSE)tar c -C $(MUEN_SRC_DIR) . | tar x -C $(MUEN_DST_DIR)
|
|
|
|
|
2016-09-26 18:20:16 +02:00
|
|
|
download_contrib: $(MUEN_SRC_DIR)
|
|
|
|
$(MSG_BUILD)Muen contrib
|
|
|
|
$(VERBOSE)cd $(MUEN_SRC_DIR) && git submodule update --init tools/mugenschedcfg > $(MUEN_LOG) 2>&1
|
2017-04-05 18:29:07 +02:00
|
|
|
$(VERBOSE)cd $(MUEN_SRC_DIR) && git submodule update --init components/libxhcidbg > $(MUEN_LOG) 2>&1
|
2016-09-26 18:20:16 +02:00
|
|
|
$(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_SRC_DIR)/contrib \
|
|
|
|
QUIET=true download >> $(MUEN_LOG) 2>&1
|
|
|
|
|
2015-08-26 10:16:47 +02:00
|
|
|
clean cleanall: clean_muen
|
|
|
|
|
|
|
|
#
|
|
|
|
# Make sure to execute the 'clean_muen' rule prior the generic clean
|
|
|
|
# rule in 'prg.mk' because the generic rule will attempt to remove $(TARGET)
|
|
|
|
# file, which is a directory in our case.
|
|
|
|
#
|
|
|
|
clean_prg_objects: clean_muen
|
|
|
|
|
|
|
|
clean_muen:
|
|
|
|
$(VERBOSE)rm -rf $(MUEN_DST_DIR)
|
|
|
|
$(VERBOSE)rm -f $(MUEN_CONF_FILE)
|
|
|
|
$(VERBOSE)rm -f $(MUEN_LOG)
|
2016-02-16 16:36:49 +01:00
|
|
|
endif
|
|
|
|
|
2015-08-26 10:16:47 +02:00
|
|
|
|
|
|
|
.PHONY: $(TARGET)
|