ec659d8bed5366f4585cc4344cda856ffd881f85
[metatoy] / Makefile
1 csrc = $(wildcard src/*.c) $(wildcard src/kern/*.c) $(wildcard src/libc/*.c) \
2            $(wildcard src/3dgfx/*.c)
3 ssrc = $(wildcard src/*.asm) $(wildcard src/kern/*.asm) $(wildcard src/libc/*.asm)
4 obj = $(csrc:.c=.o) $(ssrc:.asm=.o)
5 dep = $(csrc:.c=.d)
6 bin = game.com
7
8 warn = -pedantic -Wall -Wno-unused-function
9 opt = -O2
10 inc = -Isrc -Isrc/kern -Isrc/libc
11
12 AS = nasm
13
14 ASFLAGS = -Isrc/ -Isrc/kern/
15 CFLAGS = -m32 -march=i386 $(warn) $(opt) $(dbg) -fno-pic -ffreestanding \
16                  -fno-stack-protector -mpreferred-stack-boundary=2 -nostdinc -ffast-math \
17                  -fno-asynchronous-unwind-tables -fno-strict-aliasing $(inc) $(def) -MMD
18 LDFLAGS = -m elf_i386 -nostdlib -T com32.ld -Map game.map
19
20 $(bin): $(obj)
21         $(LD) -o $@ $(obj) $(LDFLAGS)
22
23 -include $(dep)
24
25 %.o: %.asm
26         $(AS) -o $@ -f elf $(ASFLAGS) $<
27
28 %.s: %.c
29         $(CC) $(CFLAGS) -masm=intel -S $< -o $@
30
31 .PHONY: clean
32 clean:
33         rm -f $(obj) $(bin)
34
35 .PHONY: cleandep
36 cleandep:
37         rm -f $(dep)
38
39 disasm: $(bin)
40         ndisasm -o 0x100 -b 16 $< >$@