src = $(wildcard src/boot/*.asm) $(wildcard src/*.asm) obj = $(src:.asm=.o) data = data/sprsheet.inc name = game elf = $(name).elf bin = $(name).bin ASFLAGS = -f elf32 LDFLAGS = -m elf_i386 -T game.ld -print-gc-sections QEMU_FLAGS = -fda floppy.img -serial file:serial.log -d guest_errors .PHONY: all all: floppy.img floppy.img: boot.img dd of=$@ if=/dev/zero bs=512 count=2880 dd of=$@ if=$< conv=notrunc boot.img: bootldr.bin $(bin) cat $^ >$@ bootldr.bin: $(elf) objcopy -O binary -j '.boot*' $< $@ $(bin): $(elf) $(data) objcopy -O binary -R '.boot*' $< $@ $(elf): $(obj) $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS) %.o: %.asm nasm -o $@ $(ASFLAGS) $< data/sprsheet.inc: data/sprsheet.png img2tiles -o $@ -n -t 32x32 $< .PHONY: clean clean: rm -f $(bin) $(obj) bootldr.bin floppy.img boot.img .PHONY: disasm disasm: bootldr.disasm $(name).disasm bootldr.disasm: $(elf) objdump -d $< -j .boot -j .boot2 -m i8086 >$@ $(name).disasm: $(elf) objdump -d $< -j .text -m i386 >$@ $(name).sym: $(elf) objcopy --only-keep-debug $< $@ .PHONY: run run: floppy.img qemu-system-i386 $(QEMU_FLAGS) .PHONY: debug debug: floppy.img qemu-system-i386 $(QEMU_FLAGS) -s -S .PHONY: sym sym: $(name).sym