diff options
author | Benji Dial <benji@benjidial.net> | 2024-01-20 17:59:40 -0500 |
---|---|---|
committer | Benji Dial <benji@benjidial.net> | 2024-01-20 17:59:40 -0500 |
commit | 7199e74aa22e592a3b77bdd81f735edca5470596 (patch) | |
tree | 66e935372acc5d6e013f764965f2a9d81814f809 /makefile | |
parent | 53135e2592c21cb9b2609bf95242aaf1f19233da (diff) | |
download | hilbert-os-7199e74aa22e592a3b77bdd81f735edca5470596.tar.gz |
update
Diffstat (limited to 'makefile')
-rw-r--r-- | makefile | 51 |
1 files changed, 31 insertions, 20 deletions
@@ -1,7 +1,8 @@ -GPP_ARGS = -Wall -Wextra -O3 -ggdb -I include \ - -ffreestanding -fno-exceptions -fno-rtti -mno-sse -KGPP_ARGS = ${GPP_ARGS} -AGPP_ARGS = ${GPP_ARGS} +GPP_ARGS = -std=c++17 -Wall -Wextra -O3 -ggdb -nostdinc \ + -fno-exceptions -ffreestanding -fno-rtti -mno-sse +KGPP_ARGS = ${GPP_ARGS} -I kernel/include -I mintsuki-freestanding-headers +AGPP_ARGS = ${GPP_ARGS} -I libraries/euler/include \ + -I libraries/daguerre/include LD_ARGS = -z noexecstack KLD_ARGS = -T kernel/link.ld ${LD_ARGS} @@ -17,21 +18,24 @@ clean: rm -rf obj out dist-clean: - rm -rf limine - rm -f include/hilbert/kernel/limine.hpp + rm -rf limine mintsuki-freestanding-headers limine: git clone --depth=1 -b v6.x-branch \ https://github.com/limine-bootloader/limine.git limine cd limine && ./bootstrap && ./configure -q --enable-bios --enable-bios-cd +make -C limine - cp limine/limine.h include/hilbert/kernel/limine.hpp -obj/kernel/entry.cpp.o: kernel/entry.cpp limine +mintsuki-freestanding-headers: + git clone --depth=1 \ + https://github.com/mintsuki/freestanding-headers.git \ + mintsuki-freestanding-headers + +obj/kernel/entry.cpp.o: kernel/entry.cpp limine mintsuki-freestanding-headers @mkdir -p $(@D) g++ -c ${KGPP_ARGS} $< -o $@ -obj/kernel/%.cpp.o: kernel/%.cpp +obj/kernel/%.cpp.o: kernel/%.cpp mintsuki-freestanding-headers @mkdir -p $(@D) g++ -c ${KGPP_ARGS} $< -o $@ @@ -46,29 +50,36 @@ KERNEL_OBJECTS = allocator.cpp application.cpp entry.cpp framebuffer.cpp \ obj/kernel.elf: ${KERNEL_OBJECTS:%=obj/kernel/%.o} ld ${KLD_ARGS} $^ -o $@ -obj/stdlib/%.asm.o: stdlib/%.asm +obj/%.cpp.o: %.cpp mintsuki-freestanding-headers @mkdir -p $(@D) - nasm -f elf64 $< -o $@ + g++ -c ${AGPP_ARGS} $< -o $@ -obj/stdlib/%.cpp.o: stdlib/%.cpp +obj/%.asm.o: %.asm @mkdir -p $(@D) - g++ -c ${AGPP_ARGS} $< -o $@ + nasm -f elf64 $< -o $@ -STDLIB_OBJECTS = entry.cpp syscall.asm -obj/stdlib.o: ${STDLIB_OBJECTS:%=obj/stdlib/%.o} +EULER_OBJECTS = entry.cpp syscall.asm cassert.cpp allocator.cpp cstdio.cpp \ + cctype.cpp +obj/euler.o: ${EULER_OBJECTS:%=obj/libraries/euler/%.o} ld -r ${LLD_ARGS} $^ -o $@ -obj/%.cpp.o: applications/%.cpp - @mkdir -p $(@D) - g++ -c ${AGPP_ARGS} $< -o $@ +DAGUERRE_OBJECTS = ppm.cpp +obj/daguerre.o: ${DAGUERRE_OBJECTS:%=obj/libraries/daguerre/%.o} + ld -r ${LLD_ARGS} $^ -o $@ INIT_OBJECTS = main.cpp -obj/initfs/bin/init.elf: ${INIT_OBJECTS:%=obj/init/%.o} obj/stdlib.o +obj/initfs/bin/init.elf: ${INIT_OBJECTS:%=obj/applications/init/%.o} \ + obj/euler.o obj/daguerre.o @mkdir -p $(@D) ld ${ALD_ARGS} $^ -o $@ +obj/initfs/.skeleton: + @mkdir -p obj/initfs + cp -r skeleton/* obj/initfs/ + @touch obj/initfs/.skeleton + APPLICATIONS = init -obj/initfs.tgz: ${APPLICATIONS:%=obj/initfs/bin/%.elf} +obj/initfs.tgz: ${APPLICATIONS:%=obj/initfs/bin/%.elf} obj/initfs/.skeleton tar czf obj/initfs.tgz -C obj/initfs . out/disk.iso: obj/kernel.elf obj/initfs.tgz limine |