Files

31 lines
759 B
Makefile

CC ?= cc
LD ?= ld
OBJCOPY ?= objcopy
CFLAGS = -std=c11 -O2 -Wall -Wextra -Werror -ffreestanding -fno-pie -fno-stack-protector -fno-builtin -mno-red-zone -mgeneral-regs-only
.PHONY: all check clean
all: build/disk
build:
mkdir -p build
build/boot.o: boot.S | build
$(CC) -c -m64 -fno-pie $< -o $@
build/guest.o: guest.c | build
$(CC) $(CFLAGS) -c $< -o $@
build/guest: build/boot.o build/guest.o layout.ld
$(LD) -T layout.ld build/boot.o build/guest.o -o $@
build/disk: build/guest
$(OBJCOPY) -O binary $< $@
python3 -c 'from pathlib import Path; p = Path("$@"); b = p.read_bytes(); assert len(b) <= 61440; p.write_bytes(b.ljust(61952, b"\0"))'
check: build/disk
python3 verify.py ../_build/default/bin/main.exe build/disk
clean:
rm -rf build