From 6eefbd0e736c3334e9b1b8141feb0430a5f247c1 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Tue, 30 Mar 2021 22:49:06 +0300 Subject: Makefile: build targets properly from subdirs --- src/makefile | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/makefile') diff --git a/src/makefile b/src/makefile index d1e2147..731e948 100644 --- a/src/makefile +++ b/src/makefile @@ -1,5 +1,7 @@ +include ../common.mk + AS_OBJ = boot.o idt/stubs.o -AS_OBJ := $(addprefix $(OBJ_DIR)/, $(AS_OBJ)) +AS_OBJ := $(addprefix $(OBJ_DIR)/glitch/, $(AS_OBJ)) CXX_OBJ = kernel.o \ kernel/dump_gdt.o kernel/dump_multiboot.o kernel/multiboot.o \ @@ -10,11 +12,15 @@ CXX_OBJ = kernel.o \ idt/exception.o idt/interruptgate.o idt/interrupthandler.o \ vmm.o \ scheduler.o scheduler/task.o -CXX_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_OBJ)) +CXX_OBJ := $(addprefix $(OBJ_DIR)/glitch/, $(CXX_OBJ)) CXX_DEP = $(CXX_OBJ:%.o=%.d) CXX_JSON = $(CXX_OBJ:.o=.json) -cpu/irq.h: $(OBJ_DIR)/idt/stubs.o +.PHONY: all test clean +all: $(OBJ_DIR)/glitch.elf +test: $(TEST_CXX_OBJ) + +cpu/irq.h: $(OBJ_DIR)/glitch/idt/stubs.o @echo " GEN $@" @echo '#pragma once' > $@ @echo 'extern "C" {' >> $@ @@ -24,28 +30,24 @@ cpu/irq.h: $(OBJ_DIR)/idt/stubs.o autogen := $(autogen) cpu/irq.h -.PHONY: all test clean -all: $(OBJ_DIR)/kernel.a -test: $(TEST_CXX_OBJ) - -$(AS_OBJ): $(OBJ_DIR)/%.o: %.S +$(AS_OBJ): $(OBJ_DIR)/glitch/%.o: %.S @mkdir -p $(@D) @echo " AS $<" @$(AS) -target $(TARGET) $(AS_FLAGS) $(CXX_INCLUDE) -c $^ -o $@ -include $(CXX_DEP) -$(CXX_OBJ) : $(OBJ_DIR)/%.o : %.cc +$(CXX_OBJ) : $(OBJ_DIR)/glitch/%.o : %.cc @mkdir -p $(@D) @echo " CXX $<" @$(CXX) -target $(TARGET) $(CXX_FLAGS) $(CXX_INCLUDE) -MMD -MJ$(subst .o,.json,$@) -c $< -o $@ $(OBJ_DIR)/glitch.elf: $(autogen) $(AS_OBJ) $(CXX_OBJ) linker.ld @echo " LD $(@F)" - @$(LD) $(LD_FLAGS) -o $@ $(AS_OBJ) $(CXX_OBJ) -lk -ld + @$(LD) $(LD_FLAGS) --library-path $(OBJ_DIR) -o $@ $(AS_OBJ) $(CXX_OBJ) -lk -ld # constexpr tests -include $(TEST_CXX_DEP) -$(TEST_CXX_OBJ): $(OBJ_DIR)/%.o : %.cc +$(TEST_CXX_OBJ): $(OBJ_DIR)/glitch/%.o : %.cc @mkdir -p $(@D) @echo " TEST $<" @$(TEST_CXX) -target $(TARGET) $(TEST_CXX_FLAGS) $(CXX_INCLUDE) -MMD -c $< -o $@ -- cgit v1.2.1