blob: e4c002238c64b3a6dc5908a2160d8d9ec80aff76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
CC := vendor/bin/x86_64-elf-g++
LD := vendor/bin/x86_64-elf-ld
CFLAGS := -g -O2 -pipe
override CFLAGS += \
-Wall \
-Wextra \
-std=c++17 \
-ffreestanding \
-mno-red-zone \
-msoft-float \
-mno-sse \
-fno-stack-protector \
-fno-stack-check \
-fno-rtti \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-mcmodel=kernel
KERNEL := bin/core
K_OBJS := \
kernel/entry.o \
kernel/cxx/constructors.o \
kernel/cxx/icxxabi.o \
kernel/utils.o \
kernel/io/logger/base.o \
kernel/amd64/io/com1.o
K_SRCS := $(patsubst %.o,%.cxx,$(K_OBJS))
K_ASM_OBJS := \
kernel/amd64/io/ports.o
K_LINKSCRIPT := kernel/ldscript
CPPSTDDIRS := \
vendor/x86_64-elf/include/c++/14.2.0 \
vendor/x86_64-elf/include/c++/14.2.0/x86_64-elf \
vendor/x86_64-elf/include/c++/14.2.0/backward
CPPSTD := $(addprefix -I ,$(CPPSTDDIRS))
BINARIES := \
$(KERNEL)
OVMF_ROOT := /usr/share/qemu
.PHONY: all clean run
all: hinterOS.iso
run:
qemu-system-x86_64 --serial stdio --bios $(OVMF_ROOT)/ovmf-x86_64.bin -cdrom hinterOS.iso
clean:
- find kernel -type f -name '*.o' -exec rm {} +
- find kernel -type f -name '*.d' -exec rm {} +
- rm hinterOS.iso
- rm $(BINARIES)
hinterOS.iso: $(BINARIES)
rm -rf iso
mkdir -p iso/bin
cp -v $^ iso/bin/
mkdir -p iso/boot
mkdir -p iso/boot/limine
cp -v limine.conf iso/boot/limine/
mkdir -p iso/EFI/BOOT
cp -v vendor/limine/limine-bios.sys vendor/limine/limine-bios-cd.bin vendor/limine/limine-uefi-cd.bin iso/boot/limine/
cp -v vendor/limine/BOOTX64.EFI iso/EFI/BOOT/
xorriso -as mkisofs -R -r -J -b boot/limine/limine-bios-cd.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table -hfsplus \
-apm-block-size 2048 --efi-boot boot/limine/limine-uefi-cd.bin \
-efi-boot-part --efi-boot-image --protective-msdos-label \
iso -o $@
vendor/limine/limine bios-install $@
$(KERNEL): $(K_OBJS) $(K_ASM_OBJS)
rm -rf bin
mkdir -p bin
$(LD) -o $@ -T $(K_LINKSCRIPT) $^
.SECONDEXPANSION:
$(K_OBJS): %.o: %.cxx %.d
$(CC) -c $(CFLAGS) -MT $@ -MMD -MP -MF $(basename $<).d -I kernel $(CPPSTD) $< -o $@
$(K_ASM_OBJS): %.o: %.S
$(CC) -c $(CFLAGS) $^ -o $@
DEPFILES := $(K_SRCS:%.cxx=%.d)
$(DEPFILES):
-include $(wildcard $(DEPFILES))
|