mirror of
https://github.com/pixelyblah/florid-os.git
synced 2026-05-15 03:36:07 +00:00
44 lines
No EOL
1.6 KiB
Fish
44 lines
No EOL
1.6 KiB
Fish
#!/usr/bin/fish
|
|
|
|
# 1. Setup - Let's get the folders right
|
|
echo "🧹 Cleaning up..."
|
|
rm -rf build/iso_root
|
|
mkdir -p build/iso_root/boot
|
|
|
|
# 2. Compile - The most important part
|
|
echo "🔨 Compiling Kernel..."
|
|
gcc -ffreestanding -fno-stack-protector -fno-pic -m64 -Isrc/include -c src/kernel/kernel.c -o build/kernel.o
|
|
or begin
|
|
echo "❌ Kernel compilation failed! Check your code."
|
|
exit 1
|
|
end
|
|
|
|
echo "🔨 Compiling Launcher..."
|
|
gcc -ffreestanding -fno-stack-protector -fno-pic -m64 -Isrc/include -c src/userspace/launcher/main.c -o build/launcher.o
|
|
gcc -ffreestanding -fno-stack-protector -fno-pic -m64 -Isrc/include -c src/userspace/bridge/loadable.c -o build/bridge.o
|
|
|
|
# 3. Link - Turning code into binaries
|
|
echo "🔗 Linking everything..."
|
|
ld -nostdlib -static -m elf_x86_64 -z max-page-size=0x1000 -T src/kernel/linker.ld build/kernel.o -o build/kernel.elf
|
|
ld -nostdlib -static -m elf_x86_64 build/launcher.o build/bridge.o -o build/launcher.fpf
|
|
|
|
# 4. Deployment - Move files to the ISO root
|
|
echo "📂 Moving binaries to ISO root..."
|
|
cp build/kernel.elf build/iso_root/boot/
|
|
cp build/launcher.fpf build/iso_root/boot/
|
|
cp limine/limine.conf build/iso_root/boot/
|
|
cp limine/limine-bios.sys build/iso_root/boot/
|
|
cp limine/limine-bios-cd.bin build/iso_root/boot/
|
|
|
|
# 5. Build ISO
|
|
echo "💿 Creating ISO..."
|
|
xorriso -as mkisofs -b boot/limine-bios-cd.bin \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
build/iso_root -o build/florid_os.iso
|
|
|
|
if test -f build/florid_os.iso
|
|
echo "✅ SUCCESS! ISO created: build/florid_os.iso"
|
|
echo "🚀 Run: qemu-system-x86_64 -cdrom build/florid_os.iso"
|
|
else
|
|
echo "❌ ISO failed. Make sure xorriso is installed."
|
|
end |