summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-16 14:37:35 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-16 14:37:35 +0100
commit85fdaf22994ead86a43b4880cb4875094612bd72 (patch)
treed3a9d6f08939cd47ee944ad1d63085f3debbaa1c
parent74f71c22d3da75a50c21e8c0a48fc4d9857c975d (diff)
Recompiling when included header files change
-rw-r--r--Makefile16
-rwxr-xr-xscripts/install_headers.sh6
-rw-r--r--src/Makefile11
-rw-r--r--src/as/Makefile3
-rw-r--r--src/c/Makefile6
5 files changed, 28 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index d9da8ff..150f188 100644
--- a/Makefile
+++ b/Makefile
@@ -15,11 +15,10 @@ export CFLAGS=-ffreestanding -O2 -Wall -Wextra -fstack-protector-all
# TOOLS
-MKDIR=mkdir -p
-RM=rm -rf
-CP=cp -r
+export MKDIR=mkdir -p
+export RM=rm -rf
+export CP=cp -r
QEMU=qemu-system-x86_64
-#QEMU_DEBUG=-d int -D qemu.log
@@ -93,16 +92,11 @@ $(BINARY): $(OBJ)
$(CC) -T $(LINKER) -o $(BINARY) $(CFLAGS) -nostdlib -lgcc $(OBJ)
install_headers:
- $(RM) $(SYSROOT_INCLUDE_DIR)
- $(MKDIR) $(SYSROOT_INCLUDE_DIR)
- $(CP) $(INCLUDE_DIR)/* $(SYSROOT_INCLUDE_DIR)
+ ./scripts/install_headers.sh
compile:
$(MAKE) install_headers
- $(MKDIR) $(AS_OBJECT_DIR)
- $(MKDIR) $(C_OBJECT_DIR)
- $(MAKE) --directory $(AS_SOURCE_DIR)
- $(MAKE) --directory $(C_SOURCE_DIR)
+ @$(MAKE) --directory $(SOURCE_DIR)
$(MAKE) $(BINARY)
$(ISO): $(BINARY)
diff --git a/scripts/install_headers.sh b/scripts/install_headers.sh
new file mode 100755
index 0000000..213d9d5
--- /dev/null
+++ b/scripts/install_headers.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+SYSROOT="/opt/aleksa"
+SYSROOT_INCLUDE=$SYSROOT/usr/include/
+
+rsync src/include/ "$SYSROOT_INCLUDE" -ru --delete
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..91c565b
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,11 @@
+.PHONY: all build_as build_c
+
+all: build_as build_c
+
+build_as:
+ $(MKDIR) $(AS_OBJECT_DIR)
+ @$(MAKE) --directory as
+
+build_c:
+ $(MKDIR) $(C_OBJECT_DIR)
+ @$(MAKE) --directory c
diff --git a/src/as/Makefile b/src/as/Makefile
index bd5664b..c8919d7 100644
--- a/src/as/Makefile
+++ b/src/as/Makefile
@@ -1,5 +1,6 @@
.PHONY: all
+
all: $(AS_OBJECTS)
-$(AS_OBJECT_DIR)/%.o: %.s
+$(AS_OBJECT_DIR)/%.o: %.s Makefile
$(AS) $< -o $@
diff --git a/src/c/Makefile b/src/c/Makefile
index 9ee253d..b8fe609 100644
--- a/src/c/Makefile
+++ b/src/c/Makefile
@@ -1,6 +1,8 @@
.PHONY: all
+
all: $(C_OBJECTS)
+$(C_OBJECT_DIR)/%.o: %.c Makefile
+ $(CC) $(CFLAGS) -MD -MP -c $< -o $@
-$(C_OBJECT_DIR)/%.o: %.c
- $(CC) $(CFLAGS) -c $< -o $@
+-include $(C_OBJECTS:.o=.d)