This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
portland-os/makefile
Benji Dial 63167f223e lots of progress
currently, BAR fields of IDE drives are all returning zero, and the ATA read function isn't working. i'm not sure why.
i'm going to work on VESA next, and come back to the IDE driver later
2020-08-11 11:33:21 -04:00

57 lines
2 KiB
Makefile

disk: kernel boot skel hello
mkdir -p obj out
/sbin/mkfs.fat -C -f 1 -F 16 -n "PORTLAND OS" -R 65 -s 1 -S 512 obj/shadow.img 8192
echo -n -e '\xeb\x3c' > obj/jmp.bin
dd if=obj/jmp.bin of=obj/shadow.img obs=2 conv=notrunc
dd if=out/boot.bin of=obj/shadow.img obs=1 seek=62 conv=notrunc
dd if=out/kernel.bin of=obj/shadow.img seek=1 conv=notrunc
mv obj/shadow.img out/disk.img
mcopy -i out/disk.img -s out/fs/* ::/
vdi-file: disk
VBoxManage convertfromraw out/disk.img out/disk.vdi --uuid a61929ed-3bf2-45ff-b98a-44f87c616dba
debug: disk
gdb -x qemu-debug.gdb
clean:
rm -r obj out
skel:
mkdir -p out/fs
cp -r fs-skel/* out/fs/
kgccargs = -Wall -m32 -Og -ffreestanding -fno-asynchronous-unwind-tables
ugccargs = ${kgccargs} -Isrc/libc/inc
nasmargs = -f elf32
hello:
mkdir -p obj/hello out/fs/bin
nasm ${nasmargs} src/user/hello/hello.asm -o obj/hello/hello.o
ld -T src/user-elf.ld obj/hello/hello.o -o obj/hello.elf
objcopy -O binary obj/hello.elf out/fs/bin/hello.ple
init:
#TODO
kernel:
mkdir -p obj/kernel out
gcc ${kgccargs} -c src/kernel/drive.c -o obj/kernel/drive.o
gcc ${kgccargs} -c src/kernel/fat.c -o obj/kernel/fat.o
gcc ${kgccargs} -c src/kernel/ide.c -o obj/kernel/ide.o
gcc ${kgccargs} -c src/kernel/main.c -o obj/kernel/main.o
gcc ${kgccargs} -c src/kernel/mem.c -o obj/kernel/mem.o
gcc ${kgccargs} -c src/kernel/panic.c -o obj/kernel/panic.o
gcc ${kgccargs} -c src/kernel/pci.c -o obj/kernel/pci.o
gcc ${kgccargs} -c src/kernel/plef.c -o obj/kernel/plef.o
gcc ${kgccargs} -c src/kernel/serial.c -o obj/kernel/serial.o
gcc ${kgccargs} -c src/kernel/task.c -o obj/kernel/task.o
gcc ${kgccargs} -c src/kernel/util.c -o obj/kernel/util.o
gcc ${kgccargs} -c src/kernel/vesa.c -o obj/kernel/vesa.o
gcc ${kgccargs} -c src/kernel/vga.c -o obj/kernel/vga.o
ld -T src/kernel/elf-link.ld obj/kernel/*.o -o obj/kernel.elf
objcopy -O binary obj/kernel.elf out/kernel.bin
boot:
mkdir -p out
nasm src/boot.asm -o out/boot.bin