blob: 000144d24282fbd1f5378ee70ce0f8e60352dfa8 (
plain) (
blame)
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
91
|
.POSIX:
.PHONY: all clean run dbg
.SUFFIXES: .c .S. o
NAME = aplos
CC = gcc
CFLAGS = \
-g \
-O0 \
-Wall \
-Wextra \
-std=c23 \
-pedantic \
-ffreestanding \
-mcmodel=kernel \
-fno-pie \
-fno-stack-protector
LDFLAGS = \
-m elf_x86_64 \
-static \
-T linker.lds
OFILES = \
src/acpi.o \
src/apic.o \
src/boot.o \
src/descriptors.o \
src/error.o \
src/font.o \
src/interrupt.o \
src/keyboard.o \
src/main.o \
src/nasty.o \
src/paging.o \
src/panic.o \
src/screen.o \
src/utf8.o \
src/util.o
HFILES = src/aplos.h
SPLEEN_VERSION=2.1.0
LIMINE_BRANCH=v9.x-binary
all: bin/$(NAME)
clean:
rm -rf bin iso_root external src/*.o
run: bin/$(NAME).iso
qemu-system-x86_64 -display sdl bin/$(NAME).iso
dbg: bin/$(NAME).iso
qemu-system-x86_64 -display sdl -s -S bin/$(NAME).iso
bin/$(NAME): linker.lds $(OFILES)
mkdir -p bin
$(LD) $(OFILES) $(LDFLAGS) -o $@
src/font.c: external/spleen
src/boot.c: external/limine
external/spleen:
mkdir -p external
wget -q -O - https://github.com/fcambus/spleen/releases/download/$(SPLEEN_VERSION)/spleen-$(SPLEEN_VERSION).tar.gz | tar -xzf - -C external/
mv external/spleen-$(SPLEEN_VERSION) external/spleen
external/limine:
mkdir -p external
git clone https://github.com/limine-bootloader/limine.git --branch=$(LIMINE_BRANCH) --depth=1 external/limine
make -C external/limine
bin/$(NAME).iso: bin/$(NAME) limine.conf Makefile external/limine
mkdir -p iso_root/boot/limine
mkdir -p iso_root/EFI/BOOT
cp -v bin/$(NAME) iso_root/boot
cp -v limine.conf \
external/limine/limine-bios.sys \
external/limine/limine-bios-cd.bin \
external/limine/limine-uefi-cd.bin \
iso_root/boot/limine/
cp -v external/limine/BOOTX64.EFI iso_root/EFI/BOOT/
cp -v external/limine/BOOTIA32.EFI iso_root/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_root -o bin/$(NAME).iso
./external/limine/limine bios-install bin/$(NAME).iso
|