added rules for constructing hard disk images (better(?) for usb sticks)
[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 -i src/
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 disk.img
15
16 disk.img: boot.img blank.img
17         cp blank.img $@
18         dd of=$@ if=$< conv=notrunc
19         dd of=$@ if=blank.img bs=1 seek=440 skip=440 count=70 status=none conv=notrunc
20
21 floppy.img: boot.img
22         dd of=$@ if=/dev/zero bs=512 count=2880
23         dd of=$@ if=$< conv=notrunc
24
25 boot.img: bootldr.bin $(bin)
26         cat $^ >$@
27
28 blank.img: Makefile
29         dd if=/dev/zero of=$@ bs=512 count=8192
30         echo start=2048 type=c | sfdisk $@
31
32 bootldr.bin: $(elf)
33         objcopy -O binary -j '.boot*' $< $@
34
35 $(bin): $(elf)
36         objcopy -O binary -R '.boot*' $< $@
37
38 $(elf): $(obj)
39         $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS)
40
41 src/data.o: src/data.asm $(data)
42
43 %.o: %.asm
44         nasm -o $@ $(ASFLAGS) $<
45
46 .PHONY: clean
47 clean:
48         rm -f $(bin) $(obj) $(data) bootldr.bin floppy.img boot.img
49
50 .PHONY: disasm
51 disasm: bootldr.disasm $(name).disasm
52
53 bootldr.disasm: $(elf)
54         objdump -d $< -j .boot -j .boot2 -m i8086 >$@
55
56 $(name).disasm: $(elf)
57         objdump -d $< -j .text -m i386 >$@
58
59 $(name).sym: $(elf)
60         objcopy --only-keep-debug $< $@
61
62 .PHONY: run
63 run: floppy.img
64         qemu-system-i386 $(QEMU_FLAGS)
65
66 .PHONY: debug
67 debug: floppy.img
68         qemu-system-i386 $(QEMU_FLAGS) -s -S
69
70 .PHONY: sym
71 sym: $(name).sym
72
73
74 tools/csprite/csprite:
75         $(MAKE) -C tools/csprite
76
77 data/sprsheet.inc: data/sprsheet.png tools/csprite/csprite
78         tools/csprite/csprite -n sprsheet -s 32x32 $< >$@
79
80 #data/sprsheet.inc: data/sprsheet.png
81 #       img2tiles -o $@ -n -t 32x32 $<