blob: 0b534fb76ff6ac9bc03190c45229f3cff2cba90b (
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
|
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
K_LINKSCRIPT := kernel/ldscript
BINARIES := \
$(KERNEL)
OVMF_ROOT := /usr/share/qemu
.PHONY: all clean run
all: hinterOS.iso
run:
qemu-system-x86_64 --bios $(OVMF_ROOT)/ovmf-x86_64.bin -cdrom hinterOS.iso
clean:
- find kernel -type f -name '*.o' -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)
rm -rf bin
mkdir -p bin
$(LD) -o $@ -T$(K_LINKSCRIPT) $^
$(K_OBJS): %.o: %.cxx
$(CC) -c $(CFLAGS) $^ -o $@
|