comparison Makefile.win @ 5:11fbaecc6c5e

copied the windows makefile straight from SGDK.
author William Morgan <bill@mrgn.org>
date Sun, 12 Jan 2014 13:43:51 -0800
parents
children
comparison
equal deleted inserted replaced
2:8f23be2db808 5:11fbaecc6c5e
1 BIN= $(GDK)/bin
2 LIB= $(GDK)/lib
3
4 LIBSRC= $(GDK)/src
5 LIBINCLUDE= $(GDK)/include
6
7 SRC= src
8 RES= res
9 INCLUDE= include
10
11 SHELL=$(BIN)/sh
12 RM= $(BIN)/rm
13 AR= $(BIN)/ar
14 CC= $(BIN)/gcc
15 LD= $(BIN)/ld
16 ECHO=echo
17 OBJCPY= $(BIN)/objcopy
18 ASMZ80= $(BIN)/sjasm
19 MACCER= $(BIN)/mac68k
20 SIZEBND= $(BIN)/sizebnd
21 BINTOS= $(BIN)/bintos
22 WAVTORAW= $(BIN)/wavtoraw
23 PCMTORAW= $(BIN)/pcmtoraw
24 GENRES= $(BIN)/genres
25 TFMCOM= $(BIN)/tfmcom
26 NM= $(BIN)/nm
27 MKDIR= $(BIN)/mkdir
28 NM2WCH= $(BIN)/nm2wch
29 ADDR2LINE=$(BIN)/addr2line
30 OUT2GSRC=$(BIN)/out2gsrc
31
32 OPTION=
33
34 SRC_C= $(wildcard *.c)
35 SRC_C+= $(wildcard $(SRC)/*.c)
36 SRC_S= $(wildcard *.s)
37 SRC_S+= $(wildcard $(SRC)/*.s)
38 SRC_SZ80= $(wildcard *.s80)
39 SRC_SZ80+= $(wildcard $(SRC)/*.s80)
40
41 RES_C= $(wildcard $(RES)/*.c)
42 RES_S= $(wildcard $(RES)/*.s)
43 RES_BMP= $(wildcard *.bmp)
44 RES_BMP+= $(wildcard $(RES)/*.bmp)
45 RES_WAV= $(wildcard *.wav)
46 RES_WAV+= $(wildcard $(RES)/*.wav)
47 RES_WAVPCM= $(wildcard *.wavpcm)
48 RES_WAVPCM+= $(wildcard $(RES)/*.wavpcm)
49 RES_DAT= $(wildcard *.dat)
50 RES_DAT+= $(wildcard $(RES)/*.dat)
51 RES_RAW= $(wildcard *.raw)
52 RES_RAW+= $(wildcard $(RES)/*.raw)
53 RES_PCM= $(wildcard *.pcm)
54 RES_PCM+= $(wildcard $(RES)/*.pcm)
55 RES_TFD= $(wildcard *.tfd)
56 RES_TFD+= $(wildcard $(RES)/*.tfd)
57 RES_TFC= $(wildcard *.tfc)
58 RES_TFC+= $(wildcard $(RES)/*.tfc)
59 RES_MVS= $(wildcard *.mvs)
60 RES_MVS+= $(wildcard $(RES)/*.mvs)
61 RES_EIF= $(wildcard *.eif)
62 RES_EIF+= $(wildcard $(RES)/*.eif)
63 RES_ESF= $(wildcard *.esf)
64 RES_ESF+= $(wildcard $(RES)/*.esf)
65 RES_VGM= $(wildcard *.vgm)
66 RES_VGM+= $(wildcard $(RES)/*.vgm)
67 RES_RC= $(wildcard *.rc)
68 RES_RC+= $(wildcard $(RES)/*.rc)
69 RES_ASM= $(wildcard *.asm)
70 RES_ASM+= $(wildcard $(RES)/*.asm)
71
72 OBJ= $(RES_BMP:.bmp=.o)
73 OBJ+= $(RES_WAV:.wav=.o)
74 OBJ+= $(RES_WAVPCM:.wavpcm=.o)
75 OBJ+= $(RES_RC:.rc=.o)
76 OBJ+= $(RES_ASM:.asm=.o)
77 OBJ+= $(RES_DAT:.dat=.o)
78 OBJ+= $(RES_RAW:.raw=.o)
79 OBJ+= $(RES_PCM:.pcm=.o)
80 OBJ+= $(RES_TFD:.tfd=.o)
81 OBJ+= $(RES_TFC:.tfc=.o)
82 OBJ+= $(RES_MVS:.mvs=.o)
83 OBJ+= $(RES_VGM:.vgm=.o)
84 OBJ+= $(RES_EIF:.eif=.o)
85 OBJ+= $(RES_ESF:.esf=.o)
86 OBJ+= $(RES_S:.s=.o)
87 OBJ+= $(RES_C:.c=.o)
88 OBJ+= $(SRC_SZ80:.s80=.o)
89 OBJ+= $(SRC_S:.s=.o)
90 OBJ+= $(SRC_C:.c=.o)
91
92 OBJS = $(addprefix out/, $(OBJ))
93
94 INCS= -I$(LIBINCLUDE) -I$(INCLUDE) -I$(SRC) -I$(RES)
95 #FLAGS= $(OPTION) -g3 -m68000 -Wall -O1 -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
96 FLAGS= $(OPTION) -m68000 -Wall -O1 -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
97 #FLAGS= $(OPTION) -m68000 -Wall -O3 -fno-web -fno-gcse -fno-unit-at-a-time -fomit-frame-pointer -fno-builtin-memset -fno-builtin-memcpy $(INCS)
98 FLAGSZ80= -i$(LIBSRC) -i$(LIBINCLUDE) -i$(SRC) -i$(INCLUDE) -i$(RES)
99
100
101 release: out/rom.bin
102 debug: out/rom.bin out/rom.wch
103 debugall: out/rom.bin out/rom.wch out/rom.gsrc
104
105 all: release
106 default: release
107
108 .PHONY: clean
109
110 clean:
111 $(RM) -f $(OBJS) out.lst out/cmd_ out/sega.o out/rom_head.bin out/rom_head.o out/rom.nm out/rom.wch out/rom.out out/rom.bin
112
113 cleanobj:
114 $(RM) -f $(OBJS) out/sega.o out/rom_head.bin out/rom_head.o out/rom.out
115
116 out/rom.bin: out/rom.out
117 $(OBJCPY) -O binary out/rom.out out/rom.bin
118 $(SIZEBND) out/rom.bin -sizealign 131072
119
120 out/rom.wch: out/rom.out
121 $(NM) -n -S -t x out/rom.out >out/rom.nm
122 $(NM2WCH) out/rom.nm out/rom.wch
123
124 out/rom.gsrc: out/rom.bin
125 $(OUT2GSRC) i out/rom.bin out/rom.addr
126 $(ADDR2LINE) -e out/rom.out < out/rom.addr > out/rom.gsrc
127
128 out/rom.out: out/sega.o out/cmd_ $(LIB)/libmd.a
129 $(CC) -n -T $(GDK)/md.ld -nostdlib out/sega.o @out/cmd_ $(LIB)/libmd.a $(LIB)/libgcc.a -o out/rom.out
130 $(RM) out/cmd_
131
132 out/cmd_: $(OBJS)
133 $(ECHO) "$(OBJS)" > out/cmd_
134
135 out/sega.o: $(LIBSRC)/boot/sega.s out/rom_head.bin
136 $(MKDIR) -p out
137 $(CC) $(FLAGS) -c $(LIBSRC)/boot/sega.s -o $@
138
139 out/rom_head.bin: out/rom_head.o
140 $(LD) -T $(GDK)/md.ld -nostdlib --oformat binary -o $@ $<
141
142 out/rom_head.o: $(LIBSRC)/boot/rom_head.c
143 $(MKDIR) -p out
144 $(CC) $(FLAGS) -c $< -o $@
145
146
147 out/%.o: %.c
148 $(MKDIR) -p out
149 $(MKDIR) -p out/src
150 $(MKDIR) -p out/res
151 $(CC) $(FLAGS) -c $< -o $@
152
153 out/%.o: %.s
154 $(MKDIR) -p out
155 $(MKDIR) -p out/src
156 $(MKDIR) -p out/res
157 $(CC) $(FLAGS) -c $< -o $@
158
159
160 %.asm: %.rc
161 $(GENRES) $< $@
162
163 %.s: %.asm
164 $(MACCER) -o $@ $<
165
166 %.s: %.bmp
167 $(BINTOS) -bmp $<
168
169 %.raw: %.wav
170 $(WAVTORAW) $< $@ 16000
171
172 %.pcm: %.wavpcm
173 $(WAVTORAW) $< $@ 22050
174
175 %.rawpcm: %.pcm
176 $(PCMTORAW) $< $@
177
178 %.tfc: %.tfd
179 $(TFMCOM) $<
180
181 %.o80: %.s80
182 $(ASMZ80) $(FLAGSZ80) $< $@ out.lst
183
184 %.s: %.tfc
185 $(BINTOS) -align 32768 $<
186
187 %.s: %.mvs
188 $(BINTOS) -align 256 $<
189
190 %.s: %.esf
191 $(BINTOS) -align 32768 $<
192
193 %.s: %.eif
194 $(BINTOS) -align 256 $<
195
196 %.s: %.vgm
197 $(BINTOS) -align 256 $<
198
199 %.s: %.raw
200 $(BINTOS) -align 256 -sizealign 256 $<
201
202 %.s: %.rawpcm
203 $(BINTOS) -align 128 -sizealign 128 -nullfill 136 $<
204
205 %.s: %.dat
206 $(BINTOS) -align 256 -sizealign 256 $<
207
208 %.s: %.o80
209 $(BINTOS) $<