31 lines
759 B
Makefile
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
|