summaryrefslogblamecommitdiff
path: root/x86-bare-metal/mbr-pure-zig/Makefile
blob: 41d2653c726613f2b804d426b3c5bee8dbf87dc3 (plain) (tree)




























                                                                                             
O := BUILD

COMMON_FLAGS := -fno-unwind-tables -fno-strip -target x86-freestanding-code16 -O ReleaseSmall

$(O)/boot: $(O)/boot.elf | check_ep dump_info
	objcopy -O binary $< $@

$(O)/boot.elf: mbr.ld mbr.zig | $(O)
	zig build-exe -femit-bin=$@ $(COMMON_FLAGS) -fno-entry --script $^

clean:
	$(RM) -r $(O)

$(O):
	mkdir -p $(O)

# Check entry point is exactly at 0x7c00.
check_ep: $(O)/boot.elf
	readelf -h $< | awk '/Entry point address:/ { print $$4 }' | grep 0x7c00 >& /dev/null

# Dump some debug info (disasm, elf load segments, code size).
dump_info: $(O)/boot.elf
	objdump -Mintel -m i8086 --disassemble --visualize-jumps=extended-color $<
	readelf -W -l $<
	size $<
	size $< | awk '/$(notdir $<)/ { print "MBR utilization " $$1/512 "%" }'

run: $(O)/boot
	qemu-system-i386 -hda $< $(QEMU_ARGS)