diff --git a/Makefile b/Makefile index 16a8252..382afae 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,9 @@ ASMFLAGS := $(ASMFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" LDFLAGS := $(LDFLAGS) -g ALL_KERNEL_OBJECT_FILES := $(KERNEL_OBJ) $(ARCH_OBJ) $(LIBC_OBJ) +ALL_KERNEL_DEPS := $(ALL_KERNEL_OBJECT_FILES:.o=.d) + +-include $(ALL_KERNEL_DEPS) all: $(BUILD_DIR)/$(KERNEL_EXEC) sandbox @@ -54,12 +57,12 @@ $(BUILD_DIR)/$(KERNEL_EXEC): $(ALL_KERNEL_OBJECT_FILES) $(BUILD_DIR)/%.o: %.S @printf " \033[1;32mAS\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n" @mkdir -p $(@D) - @$(ASM) $< -o $@ -c $(ASMFLAGS) $(ARCH_ASMFLAGS) + @$(ASM) $< -o $@ -c $(ASMFLAGS) $(ARCH_ASMFLAGS) -MMD $(BUILD_DIR)/%.o: %.c @printf " \033[1;32mCC\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n" @mkdir -p $(@D) - @$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS) + @$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS) -MMD clean: @printf " \033[1;93mRM\033[0m Deleting build files.\n" diff --git a/sandbox/Makefile b/sandbox/Makefile index 25b8e0c..7a65408 100644 --- a/sandbox/Makefile +++ b/sandbox/Makefile @@ -10,6 +10,7 @@ DIR_LIST := memblock vm base queue btree util INCLUDE_DIRS := $(foreach dir,$(DIR_LIST),-I$(dir)/include) SRC := $(foreach dir,$(DIR_LIST),$(wildcard $(dir)/*.c)) OBJ := $(addprefix $(BUILD_DIR)/,$(SRC:.c=.o)) +DEPS := $(OBJ:.o=.d) CFLAGS := $(INCLUDE_DIRS) -g @@ -22,12 +23,14 @@ $(BUILD_DIR)/$(EXEC_NAME): $(OBJ) @mkdir -p $(@D) @printf " \033[1;36mHOSTLD\033[0m \033[1mbuild/sandbox/\033[35m$(EXEC_NAME)\n" - @$(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) + @$(CC) $(OBJ) -o $@ $(CFLAGS) $(LDFLAGS) + +-include $(DEPS) $(BUILD_DIR)/%.o: %.c @printf " \033[1;32mHOSTCC\033[0m \033[35msandbox\033[0m/$<\n" @mkdir -p $(@D) - @$(CC) $< -o $@ -c $(CFLAGS) + @$(CC) $< -o $@ -c $(CFLAGS) -MMD .PHONY: all