mirror of
https://github.com/pixelyblah/florid-os.git
synced 2026-05-15 03:36:07 +00:00
48 lines
No EOL
1.6 KiB
Makefile
48 lines
No EOL
1.6 KiB
Makefile
# compiler
|
|
CC = gcc
|
|
LD = ld
|
|
|
|
# flags
|
|
CFLAGS = -Wall -Wextra -std=c11 -ffreestanding -fno-stack-protector -fno-stack-check -fno-lto -fPIE -m64 -march=x86-64 -mno-80387 -mno-mmx -mno-sse -mno-sse2 -mno-red-zone -Isrc
|
|
LDFLAGS = -T linker.ld -static -nostdlib -no-pie -z max-page-size=0x1000
|
|
|
|
# files - This now finds EVERYTHING in src/ so your 1000 lines actually compile
|
|
SRCS = $(shell find src -name '*.c')
|
|
OBJS = $(patsubst src/%.c, build/%.o, $(SRCS))
|
|
|
|
# build
|
|
all: Fflorid.iso
|
|
|
|
# This rule handles creating subdirectories in build/ automatically
|
|
build/%.o: src/%.c
|
|
mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
iso_root/kernel: $(OBJS)
|
|
$(LD) $(LDFLAGS) $(OBJS) -o iso_root/kernel
|
|
|
|
Fflorid.iso: iso_root/kernel
|
|
# 1. DELETE any old config to prevent "shish kebab" ghosts
|
|
rm -f iso_root/limine.cfg iso_root/boot/limine/limine.cfg
|
|
|
|
# 2. FORCE-CREATE the config in the two safest spots
|
|
# (Note: Using -e in echo for proper newlines)
|
|
echo -e "TIMEOUT=3\n\n:Florid OS\n PROTOCOL=limine\n KERNEL_PATH=boot:///kernel" > iso_root/limine.cfg
|
|
mkdir -p iso_root/boot/limine
|
|
cp iso_root/limine.cfg iso_root/boot/limine/limine.cfg
|
|
|
|
# 3. ENSURE the kernel is in the path defined above
|
|
mkdir -p iso_root/boot
|
|
cp iso_root/kernel iso_root/boot/kernel
|
|
|
|
# 4. BUILD the ISO
|
|
xorriso -as mkisofs -b limine/limine-bios-cd.bin \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
iso_root -o $@
|
|
|
|
# 5. INSTALL Limine bios stages
|
|
./iso_root/limine/limine bios-install $@
|
|
|
|
# clean - Nukes everything so you get a truly fresh start
|
|
clean:
|
|
rm -rf build Fflorid.iso florid.iso iso_root/kernel
|