mirror of
https://github.com/pixelyblah/florid-os.git
synced 2026-05-15 11:38:40 +00:00
40 lines
No EOL
1.1 KiB
Makefile
40 lines
No EOL
1.1 KiB
Makefile
CC = gcc
|
|
LD = ld
|
|
CFLAGS = -Wall -Wextra -std=c11 -ffreestanding -fno-stack-protector -fno-stack-check -fno-lto -fPIE -m64 -march=x86-64 -Isrc
|
|
LDFLAGS = -T linker.ld -static -nostdlib -no-pie -z max-page-size=0x1000
|
|
|
|
# Explicitly define the objects
|
|
OBJS = build/kernel.o build/drivers/tty.o build/drivers/keyboard.o
|
|
|
|
all: Fflorid.iso
|
|
|
|
# Rule to make the build directories
|
|
build_dirs:
|
|
mkdir -p build/drivers build/shell
|
|
|
|
# Rule to compile C files
|
|
build/%.o: src/%.c | build_dirs
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# THE MISSING RULE: Link the kernel
|
|
build/kernel.bin: $(OBJS)
|
|
$(LD) $(LDFLAGS) $(OBJS) -o build/kernel.bin
|
|
|
|
# Build the ISO
|
|
Fflorid.iso: build/kernel.bin
|
|
rm -rf iso_root
|
|
mkdir -p iso_root
|
|
cp build/kernel.bin iso_root/kernel
|
|
cp limine.cfg iso_root/limine.cfg
|
|
cp limine/limine-bios.sys iso_root/limine-bios.sys
|
|
cp limine/limine-bios-cd.bin iso_root/limine-bios-cd.bin
|
|
xorriso -as mkisofs -b limine-bios-cd.bin \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
iso_root -o Fflorid.iso
|
|
./limine/limine bios-install Fflorid.iso
|
|
|
|
run: Fflorid.iso
|
|
qemu-system-x86_64 -cdrom Fflorid.iso
|
|
|
|
clean:
|
|
rm -rf build iso_root Fflorid.iso
|