diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2021-03-25 22:37:33 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2021-03-25 22:37:33 +0200 |
commit | bf69f336c3fb680e31a5bb43450739b0b06d95e1 (patch) | |
tree | 2e14ca86442c5aafa40c3a436c0596327faaee85 /makefile | |
parent | makefile: add clang-tidy target (diff) | |
download | kernel.cpp-bf69f336c3fb680e31a5bb43450739b0b06d95e1.tar.xz |
makefile: make makefile recursive
Diffstat (limited to 'makefile')
-rw-r--r-- | makefile | 67 |
1 files changed, 23 insertions, 44 deletions
@@ -2,64 +2,43 @@ include .config OBJ_DIR != echo $(CONFIG_OBJ_DIR) include toolchain.makefile -.PHONY: default clean test tidy todo run menuconfig -all: $(OBJ_DIR)/glitch.elf +.PHONY: all clean test tidy todo run menuconfig +all: $(OBJ_DIR)/src/glitch.elf -include libk/makefile -include src/makefile -include drivers/makefile +LIBS := $(OBJ_DIR)/libk.a $(OBJ_DIR)/libd.a +LD_FLAGS := $(LD_FLAGS) --library-path $(CURDIR)/$(OBJ_DIR) -AS_OBJ := $(addprefix $(OBJ_DIR)/, $(AS_OBJ)) -CXX_SRC := $(CXX_OBJ:%.o=%.cc) -CXX_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_OBJ)) -CXX_DEP = $(CXX_OBJ:%.o=%.d) -CXX_JSON = $(CXX_OBJ:.o=.json) -CXX_TEST_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_TEST_OBJ)) -CXX_INCLUDE := $(addprefix -I, $(CXX_INCLUDE)) -SYSTEM_INCLUDE := $(addprefix -isystem, $(SYSTEM_INCLUDE)) +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: $(LIBS) + @make -C src OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/src $(CURDIR)/$(OBJ_DIR)/src/glitch.elf +$(OBJ_DIR)/libk.a: + @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk $(CURDIR)/$(OBJ_DIR)/libk.a +$(OBJ_DIR)/libd.a: + @make -C drivers OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/drivers $(CURDIR)/$(OBJ_DIR)/libd.a -$(OBJ_DIR)/glitch.elf: $(autogen) $(AS_OBJ) $(CXX_OBJ) linker.ld - @echo " LD $@" - @$(LD) $(LD_FLAGS) -o $@ $(AS_OBJ) $(CXX_OBJ) - -$(AS_OBJ): $(OBJ_DIR)/%.o: %.S - @mkdir -p $(@D) - @echo " AS $<" - @$(AS) -target $(TARGET) $(AS_FLAGS) $(SYSTEM_INCLUDE) -c $^ -o $@ - --include $(CXX_DEP) -$(OBJ_DIR)/%.o $(OBJ_DIR)%.json : %.cc - @mkdir -p $(@D) - @echo " CXX $<" - @$(CXX) -target $(TARGET) $(CXX_FLAGS) $(CXX_INCLUDE) $(SYSTEM_INCLUDE) -MMD -MJ$(subst .o,.json,$@) -c $< -o $@ - -$(CXX_TEST_OBJ): $(OBJ_DIR)/%.o : %.cc - @mkdir -p $(@D) - @echo " TEST $<" - @$(TEST_CXX) -target $(TARGET) $(CXX_TEST_FLAGS) $(CXX_INCLUDE) -MMD -c $< -o $@ - -compile_commands.json: $(CXX_JSON) - @echo [ > $@ - @cat $(CXX_JSON) >> $@ - @echo ] >> $@ +compile_commands: + @make -C libk OBJ_DIR=$(CURDIR)/$(OBJ_DIR)/libk compile_commands.json clean: - @rm -rf $(autogen) $(AS_OBJ) $(CXX_OBJ) $(CXX_DEP) $(CXX_TEST_OBJ) $(OBJ_DIR)/glitch.elf $(OBJ_DIR)/isodir - @rm -f $(CXX_JSON) compile_commands.json + @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 -tidy: compile_commands.json - $(foreach x, $(CXX_SRC), $(shell clang-tidy $x)) - # testing -test: $(CXX_TEST_OBJ) +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)/glitch.elf grub/grub.cfg +$(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 |