aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2021-08-20 20:57:59 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2021-08-20 21:04:24 +0300
commit31c3c8dcb5ea281201b9c01140bceeadc80f7686 (patch)
tree5424805f919938e58e0a2c88c0e3d8f583fbcfd7 /Makefile
parent1175179058fa809c57d724cd2043c67edc511695 (diff)
downloadkmi-31c3c8dcb5ea281201b9c01140bceeadc80f7686.tar.gz
kmi-31c3c8dcb5ea281201b9c01140bceeadc80f7686.zip
New build system
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile51
1 files changed, 25 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index ecfecec..dbf6456 100644
--- a/Makefile
+++ b/Makefile
@@ -1,40 +1,39 @@
-DO != echo > deps.mk
-CFLAGS := -fno-pie -ggdb3 -ffreestanding -nostdlib
-INCLUDE_DIRS := include
+DO != echo > deps.mk
+
+CFLAGS = -fno-pie -ggdb3 -ffreestanding -nostdlib
+DEPFLAGS = -MT $@ -MMD -MP -MF $@.d
all: apos.bin
-ARCH ?= riscv
-CROSS_COMPILE ?= riscv64-unknown-elf-
+ARCH ?= riscv
+CROSS_COMPILE ?= riscv64-unknown-elf-
# Common programs
-CC := gcc
-AR := ar
-CPP := cpp
-OBJCOPY ?= objcopy
-OBJCOPY_FLAGS ?= -Obinary
+CC := gcc
+AR := ar
+CPP := cpp
+OBJCOPY ?= objcopy
+OBJCOPY_FLAGS ?= -Obinary
KERNEL_SOURCES :=
-KERNEL_LINK :=
INIT_SOURCES :=
-INIT_LINK :=
-INCLUDE_DIRS := include
+CLEANUP := build deps.mk kernel.* init.* apos.bin
include arch/$(ARCH)/source.mk
-INCLUDE_FLAGS != ./scripts/prepend -I $(INCLUDE_DIRS)
-
-KERNEL_OBJECTS != ./scripts/mkobjs $(CROSS_COMPILE)$(CC) $(CFLAGS)\
- $(INCLUDE_FLAGS) --kern-files $(KERNEL_SOURCES)
+INCLUDE_FLAGS := -Iinclude -Iarch/$(ARCH)/include
-KERNEL_LD != ./scripts/mkobjs $(CROSS_COMPILE)$(CPP)\
- $(INCLUDE_FLAGS) --kern-lds $(KERNEL_LINK)
+COMPILE = $(CROSS_COMPILE)$(CC) $(CFLAGS) $(DEPFLAGS) $(INCLUDE_FLAGS)
+GENLINK = $(CROSS_COMPILE)$(CPP) $(DEPFLAGS) $(INCLUDE_FLAGS)
+STRIPLINK = sed -n '/^[^\#]/p'
-INIT_OBJECTS != ./scripts/mkobjs $(CROSS_COMPILE)$(CC) $(CFLAGS)\
- $(INCLUDE_FLAGS) --init-files $(INIT_SOURCES)
+KERNEL_LINK := arch/$(ARCH)/conf/kernel-link
+INIT_LINK := arch/$(ARCH)/conf/init-link
-INIT_LD != ./scripts/mkobjs $(CROSS_COMPILE)$(CPP)\
- $(INCLUDE_FLAGS) --init-lds $(INIT_LINK)
+KERNEL_OBJECTS != ./scripts/gen-deps --kern "$(KERNEL_SOURCES)"
+INIT_OBJECTS != ./scripts/gen-deps --init "$(INIT_SOURCES)"
+KERNEL_LD != ./scripts/gen-deps --link "$(KERNEL_LINK).S"
+INIT_LD != ./scripts/gen-deps --link "$(INIT_LINK).S"
include deps.mk
@@ -44,10 +43,10 @@ apos.bin: kernel.elf init.elf
cat init.bin kernel.bin > $@
kernel.elf: $(KERNEL_OBJECTS) $(KERNEL_LD)
- $(CROSS_COMPILE)$(CC) -T$(KERNEL_LD) $(CFLAGS) $(INCLUDE_FLAGS) $(KERNEL_OBJECTS) -o $@
+ $(COMPILE) -T$(KERNEL_LD) $(KERNEL_OBJECTS) -o $@
init.elf: $(INIT_OBJECTS) $(INIT_LD)
- $(CROSS_COMPILE)$(CC) -T$(INIT_LD) $(CFLAGS) $(INCLUDE_FLAGS) $(INIT_OBJECTS) -o $@
+ $(COMPILE) -T$(INIT_LD) $(INIT_OBJECTS) -o $@
clean:
- rm $(KERNEL_OBJECTS) $(INIT_OBJECTS) $(INIT_LD) $(KERNEL_LD) kernel.bin kernel.elf init.bin init.elf apos.bin
+ $(RM) -r $(CLEANUP)