aadff3693d802294e9f2179e4f5ab9b8e46843a8
[ld45_start_nothing] / Makefile
1 src = $(wildcard src/boot/*.asm) $(wildcard src/*.asm)
2 obj = $(src:.asm=.o)
3 data = data/sprsheet.inc
4 name = game
5 elf = $(name).elf
6 bin = $(name).bin
7
8 ASFLAGS = -f elf32
9 LDFLAGS = -m elf_i386 -T game.ld -print-gc-sections
10
11 QEMU_FLAGS = -fda floppy.img -serial file:serial.log -d guest_errors
12
13 .PHONY: all
14 all: floppy.img
15
16 floppy.img: boot.img
17         dd of=$@ if=/dev/zero bs=512 count=2880
18         dd of=$@ if=$< conv=notrunc
19
20 boot.img: bootldr.bin $(bin)
21         cat $^ >$@
22
23 bootldr.bin: $(elf)
24         objcopy -O binary -j '.boot*' $< $@
25
26 $(bin): $(elf) $(data)
27         objcopy -O binary -R '.boot*' $< $@
28
29 $(elf): $(obj)
30         $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS)
31
32 %.o: %.asm
33         nasm -o $@ $(ASFLAGS) $<
34
35 data/sprsheet.inc: data/sprsheet.png
36         img2tiles -o $@ -n -t 32x32 $<
37
38 .PHONY: clean
39 clean:
40         rm -f $(bin) $(obj) bootldr.bin floppy.img boot.img
41
42 .PHONY: disasm
43 disasm: bootldr.disasm $(name).disasm
44
45 bootldr.disasm: $(elf)
46         objdump -d $< -j .boot -j .boot2 -m i8086 >$@
47
48 $(name).disasm: $(elf)
49         objdump -d $< -j .text -m i386 >$@
50
51 $(name).sym: $(elf)
52         objcopy --only-keep-debug $< $@
53
54 .PHONY: run
55 run: floppy.img
56         qemu-system-i386 $(QEMU_FLAGS)
57
58 .PHONY: debug
59 debug: floppy.img
60         qemu-system-i386 $(QEMU_FLAGS) -s -S
61
62 .PHONY: sym
63 sym: $(name).sym