75 lines
2.3 KiB
Makefile
75 lines
2.3 KiB
Makefile
TARGET = codezero
|
|
|
|
-include $(BUILD_BASE_DIR)/etc/codezero.conf
|
|
ifeq ($(wildcard $(CODEZERO_DIR)),)
|
|
$(error No valid kernel configured in 'etc/codezero.conf')
|
|
endif
|
|
|
|
include $(REP_DIR)/lib/mk/codezero_cml.inc
|
|
|
|
TOOL_CHAIN_DIR = $(dir $(CROSS_DEV_PREFIX))
|
|
CODEZERO_DST_DIR = $(BUILD_BASE_DIR)/kernel/codezero
|
|
CODEZERO_BUILD_DIR = $(CODEZERO_DST_DIR)/build
|
|
|
|
.PHONY: $(TARGET)
|
|
|
|
MIRROR_COPY := conts/baremetal/empty conts/userlibs \
|
|
build.py include SConstruct src loader
|
|
|
|
MIRROR_SYMLINK := scripts tools
|
|
|
|
update_copy = $(VERBOSE)tar c -C $(CODEZERO_DIR) $(MIRROR_COPY) | tar x -C $(CODEZERO_DST_DIR)
|
|
|
|
ifneq ($(VERBOSE),)
|
|
CODEZERO_STDOUT := > /dev/null
|
|
endif
|
|
|
|
#
|
|
# Environment variables passed to the Codezero build system
|
|
#
|
|
BUILD_ENV = PATH=$(dir $(CROSS_DEV_PREFIX)):$$PATH
|
|
|
|
#
|
|
# Local copy of the CML file used for supplying the configuration
|
|
# to the Codezero build system.
|
|
#
|
|
LOCAL_CONFIG_CML := $(shell pwd)/config.cml
|
|
|
|
$(TARGET): $(CODEZERO_BUILD_DIR)
|
|
$(MSG_BUILD)kernel
|
|
$(update_copy)
|
|
$(VERBOSE)cd $(CODEZERO_DST_DIR); $(BUILD_ENV) ./build.py $(CODEZERO_STDOUT)
|
|
|
|
#
|
|
# Mirror the parts of the Codezero source tree that are relevant for building
|
|
# the kernel
|
|
#
|
|
$(CODEZERO_DST_DIR): $(CODEZERO_DIR)
|
|
$(VERBOSE)test -d $@ || mkdir -p $@
|
|
$(VERBOSE)for d in $(MIRROR_SYMLINK); do ln -sf $(realpath $^)/$$d $@/$$d; done
|
|
|
|
$(CODEZERO_BUILD_DIR): $(CODEZERO_DST_DIR) $(CODEZERO_CML)
|
|
$(update_copy)
|
|
$(VERBOSE)cp $(CODEZERO_CML) $(LOCAL_CONFIG_CML)
|
|
@#
|
|
@# Create copy of the CML config in the local build directory to update
|
|
@# the tool chain parameters according to the CROSS_DEV_PREFIX configured
|
|
@# for Genode.
|
|
@#
|
|
$(VERBOSE)sed -i "/TOOLCHAIN_USERSPACE/s/\".*\"/\"$(notdir $(CROSS_DEV_PREFIX))\"/" $(LOCAL_CONFIG_CML)
|
|
$(VERBOSE)sed -i "/TOOLCHAIN_KERNEL/s/\".*\"/\"$(notdir $(CROSS_DEV_PREFIX))\"/" $(LOCAL_CONFIG_CML)
|
|
$(VERBOSE)cd $(CODEZERO_DST_DIR); $(BUILD_ENV) ./build.py -C -b -f $(LOCAL_CONFIG_CML) $(CODEZERO_STDOUT)
|
|
|
|
clean cleanall: clean_codezero
|
|
|
|
#
|
|
# Make sure to execute the 'clean_codezero' 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_codezero
|
|
|
|
clean_codezero:
|
|
$(VERBOSE)rm -f $(LOCAL_CONFIG_CML)
|
|
$(VERBOSE)rm -rf $(CODEZERO_DST_DIR)
|