blob: b016f4f2ccfac6fb4f9004e5b8c6a538117284ab (
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
|
CC = gcc
LD = ld
CFLAGS = -std=gnu11 -ffreestanding -O2 -Wall -Wextra -m64 \
-nostdlib -nostartfiles -I src/kernel/headers
LDFLAGS = -T linker.ld -nostdlib -static
SRC_DIR = src/kernel
BUILD_DIR = build
ISO_DIR = $(BUILD_DIR)/iso
BOOT_DIR = $(ISO_DIR)/boot
LIMINE_DIR = /usr/share/limine
SOURCES = $(wildcard $(SRC_DIR)/*.c)
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES))
KERNEL = $(BUILD_DIR)/kernel.elf
ISO_IMAGE = $(BUILD_DIR)/mullos.iso
all: $(KERNEL)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(KERNEL): $(OBJECTS)
$(LD) $(OBJECTS) $(LDFLAGS) -o $(KERNEL)
iso: $(KERNEL)
rm -vrf $(ISO_DIR)
mkdir -p $(BOOT_DIR)
cp $(KERNEL) $(BOOT_DIR)/kernel.elf
cp limine.conf $(ISO_DIR)/limine.conf
# copy limine boot files
cp $(LIMINE_DIR)/limine-bios.sys $(ISO_DIR)/
cp $(LIMINE_DIR)/limine-bios-cd.bin $(ISO_DIR)/
cp $(LIMINE_DIR)/limine-uefi-cd.bin $(ISO_DIR)/
xorriso -as mkisofs \
-b limine-bios-cd.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
--efi-boot limine-uefi-cd.bin \
-efi-boot-part --efi-boot-image \
--protective-msdos-label \
$(ISO_DIR) -o $(ISO_IMAGE)
limine bios-install $(ISO_IMAGE)
run: iso
qemu-system-x86_64 -cdrom $(ISO_IMAGE)
clean:
rm -vrf $(BUILD_DIR)
|