include .config OBJ_DIR != echo $(CONFIG_OBJ_DIR) include toolchain.makefile .PHONY: all libk libd clean test tidy todo run menuconfig all: $(OBJ_DIR)/src/glitch.elf LIBS := $(OBJ_DIR)/libk.a $(OBJ_DIR)/libd.a LD_FLAGS := $(LD_FLAGS) --library-path $(CURDIR)/$(OBJ_DIR) export AR AR_FLAGS AS AS_FLAGS NM SED \ CXX CXX_FLAGS CXX_INCLUDE TARGET \ TEST_CXX TEST_CXX_FLAGS \ LD LD_FLAGS $(OBJ_DIR)/src/glitch.elf: libk libd @make -C src OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/src $(CURDIR)/$(OBJ_DIR)/src/glitch.elf libk: @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk $(CURDIR)/$(OBJ_DIR)/libk.a libd: @make -C drivers OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/drivers $(CURDIR)/$(OBJ_DIR)/libd.a compile_commands: @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk compile_commands.json clean: @rm -rf $(OBJ_DIR)/isodir $(LIBS) @make -C src OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/src clean @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk clean @make -C drivers OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/drivers clean @make -C tools/kconfig OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/kconfig clean # testing test: @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk test todo: @grep TODO -r libk/ src/ drivers/ # disk image $(OBJ_DIR)/glitch.iso: $(OBJ_DIR)/src/glitch.elf grub/grub.cfg @mkdir -p $(OBJ_DIR)/isodir/boot/grub $(GRUB_FILE) --is-x86-multiboot2 $< @cp $< $(OBJ_DIR)/isodir/boot/glitch.elf $(GRUB_SCRIPT) grub/grub.cfg @cp grub/grub.cfg $(OBJ_DIR)/isodir/boot/grub/grub.cfg @$(GRUB_MKRESCUE) -o $@ $(OBJ_DIR)/isodir run: $(OBJ_DIR)/glitch.iso @$(EMU) $< -no-reboot -no-shutdown -monitor stdio # menuconfig and mconf CONF := $(OBJ_DIR)/kconfig/conf MCONF := $(OBJ_DIR)/kconfig/mconf $(CONF) $(MCONF): @make -C tools/kconfig OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/kconfig $(CURDIR)/$@ menuconfig: Kconfig $(MCONF) $(MCONF) $<