blob: 97796702e8ffd1de79ba4fa13419074015b08e07 (
plain) (
blame)
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
|
.DEFAULT_GOAL := macaroni.iso
LIMINE_SHARE = /opt/homebrew/share/limine/
BUILD_OUT = build
ASM = nasm
ASM_FLAGS = -felf32
CFLAG = -std=c11 -ffreestanding -O0 -Wall -Wextra
CC = i686-elf-gcc
BINFLAG = -T linker.ld -ffreestanding -O0 -nostdlib -lgcc
boot.o: src/boot.asm
${ASM} ${ASM_FLAGS} src/boot.asm -o ${BUILD_OUT}/boot.o
kernel.o: src/kernel.c
${CC} -c src/kernel.c -o ${BUILD_OUT}/kernel.o ${CFLAG}
macaroni.bin: boot.o kernel.o
${CC} -o ${BUILD_OUT}/macaroni.bin ${BINFLAG} ${BUILD_OUT}/*.o
macaroni.iso: macaroni.bin
mkdir -p ${BUILD_OUT}/iso
cp ${BUILD_OUT}/macaroni.bin ${BUILD_OUT}/iso/macaroni.bin
printf "timeout: 0\n/macaroni\n protocol: multiboot1\n kernel_path: boot():/macaroni.bin\n" > ${BUILD_OUT}/iso/limine.conf
cp ${LIMINE_SHARE}/limine-bios-cd.bin ${LIMINE_SHARE}/limine-bios.sys ${LIMINE_SHARE}/limine-uefi-cd.bin ${BUILD_OUT}/iso/
xorriso -as mkisofs -R -r -J -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 \
${BUILD_OUT}/iso -o ${BUILD_OUT}/macaroni.iso
limine bios-install ${BUILD_OUT}/macaroni.iso
.PHONY: demo
demo: macaroni.iso
qemu-system-x86_64 -cdrom ${BUILD_OUT}/macaroni.iso
.PHONY: clean
clean:
rm -rf ${BUILD_OUT}/**
|