initial commit
[mdlife] / Makefile
1 csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c)
2 asrc = $(wildcard src/*.s)
3 aSsrc = $(wildcard src/*.S)
4 obj = $(asrc:.s=.o) $(aSsrc:.S=.o) $(csrc:.c=.o)
5 dep = $(csrc:.c=.d)
6
7 name = life
8 elf = $(name).elf
9 bin = $(name).bin
10
11 warn = -pedantic -Wall
12 dbg = -g
13 opt = -O2
14 def = -D__NO_CTYPE
15 inc = -I. -Isrc -Isrc/libc
16
17 TC = m68k-linux-gnu-
18
19 CC = $(TC)gcc
20 AS = $(TC)as
21 LD = $(TC)ld
22 OBJCOPY = $(TC)objcopy
23
24 CFLAGS = -m68000 -ffreestanding -fno-builtin -fcommon $(warn) $(dbg) $(opt) $(def) $(inc) -MMD
25 CPPFLAGS = $(def)
26 ASFLAGS = -m68000 $(inc)
27 LDFLAGS = -T megadrive.ld -print-gc-sections \
28                   -L/usr/lib/gcc-cross/m68k-linux-gnu/11 -lgcc
29
30 $(bin): $(elf)
31         $(OBJCOPY) -O binary $< $@
32
33 $(elf): $(obj)
34         $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS)
35
36 -include $(dep)
37
38 .PHONY: clean
39 clean:
40         rm -f $(obj) $(elf) $(bin)
41
42 .PHONY: cleandep
43 cleandep:
44         rm -f $(dep)
45
46 .PHONY: run
47 run: $(bin)
48         mednafen $<
49
50 .PHONY: copy
51 copy: $(bin)
52         mount /media/usbmass && cp $(bin) /media/usbmass/$(bin)
53         umount /media/usbmass
54
55 .PHONY: install
56 install: $(bin)
57         mount /media/usbmass
58         [ -f /media/usbmass/MEGA/MEGA.RBF ] || cp $(bin) /media/usbmass/MEGA/MEGA.BIN
59         umount /media/usbmass