aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2021-02-11 16:16:11 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2021-02-11 16:16:11 +0200
commit14a3ffac9723f237ff7085a7a5b470f4567b339b (patch)
tree91cadb64820fd8b1834127a3fdff87b3c3cb2b16
parentUpdate VGA cursor position on printk (diff)
downloadkernel.cpp-14a3ffac9723f237ff7085a7a5b470f4567b339b.tar.xz
Generate target dependency files
-rw-r--r--makefile15
1 files changed, 4 insertions, 11 deletions
diff --git a/makefile b/makefile
index 724c57b..f65e699 100644
--- a/makefile
+++ b/makefile
@@ -1,8 +1,3 @@
-# https://www.gnu.org/software/make/manual/html_node/Setting.html
-# := expanded variable, right-hand side can contain variables
-# ?= only set if it doesn't have a value
-# != execute a shell script on the right-hand side and assign its result to the left-hand side
-
include toolchain.makefile
OBJ_DIR := build
@@ -10,14 +5,11 @@ include src/makefile
include libk/makefile
AS_OBJ := $(addprefix $(OBJ_DIR)/, $(AS_OBJ))
CXX_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_OBJ))
+CXX_DEP = $(CXX_OBJ:%o=%.d)
CXX_TEST_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_TEST_OBJ))
CXX_INCLUDE := $(addprefix -I, $(CXX_INCLUDE))
CXX_SYSTEM_INCLUDE := $(addprefix -isystem, $(CXX_SYSTEM_INCLUDE))
-# $@ is target
-# $< is first dependency
-# $^ is all dependencies
-
.PHONY: default clean test check-grub run
default: glitch.elf
@@ -30,13 +22,14 @@ $(AS_OBJ): $(OBJ_DIR)/%.o: %.s
@echo " AS $^"
@$(AS) -target $(TARGET) -nostdlib -Wall -Wextra -c $^ -o $@
+-include $(CXX_DEP)
$(CXX_OBJ) $(CXX_TEST_OBJ): $(OBJ_DIR)/%.o : %.cc
@mkdir -p $(@D)
@echo " CXX $^"
- @$(CXX) -target $(TARGET) $(CXX_FLAGS) $(CXX_INCLUDE) $(CXX_SYSTEM_INCLUDE) -c $^ -o $@
+ @$(CXX) -target $(TARGET) $(CXX_FLAGS) $(CXX_INCLUDE) $(CXX_SYSTEM_INCLUDE) -MMD -c $^ -o $@
clean:
- rm -rf $(AS_OBJ) $(CXX_OBJ) $(CXX_TEST_OBJ) glitch.elf isodir
+ rm -rf $(AS_OBJ) $(CXX_OBJ) $(CXX_DEP) $(CXX_TEST_OBJ) glitch.elf isodir
# testing
test: $(CXX_TEST_OBJ) check-grub