Subversion Repositories NedoOS

Rev

Rev 922 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
930 alone 1
# Supported environments:
2
#   GNU/Linux.
3
#
4
# Tools used:
5
#   GNU core utilities, tools/aspp, tools/sjasmplus, _sdk/nedores.bin.
6
 
7
# TODO: Pack data files (author used `xlpz' tool).
8
# TODO: Missing file "barkov/hellfire.scr", used in "levels/w~214.a80".
9
 
10
include ../../_sdk/common.mk
11
 
12
NAME		= br.com brintro.com
13
SOURCES		= main.asm WSTART1.asm brfinal.asm
14
RESOURCES	=
15
DOCS		=
16
LOCALDIR	= br
17
INSTALLDIR	?= ../../../release/nedogame
18
BIN_INSTALLDIR	= ${INSTALLDIR}
19
RES_INSTALLDIR	= ${INSTALLDIR}/br
20
DOC_INSTALLDIR	= ${INSTALLDIR}/doc
21
NEDORES		= ../../_sdk/nedores.bin
22
 
23
# All targets
24
TARGETS=executables flicks modules levels resources
25
.PHONY: empty ${foreach t,${TARGETS},${t} install-${t} clean-${t}} all install install-doc clean
26
 
27
.DEFAULT_GOAL=all
28
 
29
empty:
30
	@echo 'Usage: make [ TARGET | ACTION-TARGET | all | install | install-doc | clean ]'
31
	@echo 'where ACTION is one of: install clean'
32
	@echo '      TARGET is one of: ${TARGETS}'
33
 
34
# Clear lists
35
DEPS=
36
 
37
# Create directories
38
${sort \
39
${LOCALDIR} \
40
${BIN_INSTALLDIR} \
41
${RES_INSTALLDIR} \
42
${DOC_INSTALLDIR} \
43
}:
44
	mkdir -p $@
45
 
46
##########################
47
## Target "executables" ##
48
##########################
49
 
50
EXEC_DEPS=
51
EXEC_BINS=
52
EXEC_DATS=
53
 
54
# main
55
 
56
EXEC_MAIN_BINS=br.com
57
EXEC_MAIN_DATS=\
58
${LOCALDIR}/br0.dat \
59
${LOCALDIR}/br1.dat \
60
${LOCALDIR}/br3.dat \
61
${LOCALDIR}/br4.dat \
62
${LOCALDIR}/br6.dat \
63
${LOCALDIR}/br7.dat
64
 
65
${eval ${call sjasmplus_odd_rule,${EXEC_MAIN_BINS} ${EXEC_MAIN_DATS},main.asm,,EXEC_DEPS,}}
66
 
67
EXEC_BINS+=${EXEC_MAIN_BINS}
68
EXEC_DATS+=${EXEC_MAIN_DATS}
69
 
70
# intro
71
 
72
EXEC_INTRO_BINS=brintro.com
73
EXEC_INTRO_DATS=\
74
${LOCALDIR}/bri3.dat \
75
${LOCALDIR}/bri4.dat \
76
${LOCALDIR}/bri7.dat
77
 
78
${eval ${call sjasmplus_odd_rule,${EXEC_INTRO_BINS} ${EXEC_INTRO_DATS},WSTART1.asm,,EXEC_DEPS,}}
79
 
80
EXEC_BINS+=${EXEC_INTRO_BINS}
81
EXEC_DATS+=${EXEC_INTRO_DATS}
82
 
83
# final
84
 
85
EXEC_FINAL_DATS=${LOCALDIR}/brfinal.dat
86
 
87
${eval ${call sjasmplus_rule,${EXEC_FINAL_DATS},brfinal.asm,,EXEC_DEPS,}}
88
 
89
EXEC_DATS+=${EXEC_FINAL_DATS}
90
 
91
executables: ${EXEC_BINS} ${EXEC_DATS} | ${LOCALDIR}
92
 
93
install-executables: executables | ${sort ${BIN_INSTALLDIR} ${RES_INSTALLDIR}}
94
	cp ${EXEC_BINS} ${BIN_INSTALLDIR}
95
	cp ${EXEC_DATS} ${RES_INSTALLDIR}
96
 
97
clean-executables:
98
	${RM} ${EXEC_DEPS} ${EXEC_BINS} ${EXEC_DATS}
99
 
100
DEPS+=${EXEC_DEPS}
101
 
102
#####################
103
## Target "flicks" ##
104
#####################
105
 
106
FLICKS_LPZS=${wildcard intro/flick.lpz/*.lpz}
107
FLICKS_BINS=
108
 
109
define flick_rule =
110
# No pack rule
111
# Copy rule
112
${eval ${call copy_file_rule,${1},${2},FLICKS_BINS}}
113
endef
114
 
115
${foreach f,${FLICKS_LPZS},${eval ${call flick_rule,${LOCALDIR}/${notdir ${f}},${f}}}}
116
 
117
flicks: ${FLICKS_BINS} | ${LOCALDIR}
118
 
119
install-flicks: flicks | ${RES_INSTALLDIR}
120
	cp ${FLICKS_BINS} $|
121
 
122
clean-flicks:
123
	${RM} ${FLICKS_BINS}
124
 
125
######################
126
## Target "modules" ##
127
######################
128
 
129
MODULES_DEPS=
130
MODULES_ASTS=
131
MODULES_BINS=
132
 
133
# ${1} = single output file
134
# ${2} = single input file 1
135
# ${3} = single input file 2
136
define nedores_rule =
137
# File order does matter!
138
${1}: ${2} ${3}
139
	${NEDORES} $$^ $$@
140
MODULES_ASTS+=${1}
141
endef
142
 
143
${eval ${call nedores_rule,W1LAND.ast,images/W1LAND.bmp,images/W1LAND.dat}}
144
${eval ${call nedores_rule,W2LAND.ast,images/W2LAND.bmp,images/W2LAND.dat}}
145
${eval ${call nedores_rule,W3LAND.ast,images/W3LAND.bmp,images/W3LAND.dat}}
146
${eval ${call nedores_rule,W4LAND.ast,images/W4LAND.bmp,images/W4LAND.dat}}
147
${eval ${call nedores_rule,WBAR.ast,images/WBAR.bmp,images/WBAR.dat}}
148
${eval ${call nedores_rule,WHUMBUTT.ast,images/WHUMBUTT.bmp,images/WHUMBUTT.dat}}
149
${eval ${call nedores_rule,WORCBUTT.ast,images/WORCBUTT.bmp,images/WORCBUTT.dat}}
150
${eval ${call nedores_rule,WHUM1.ast,images/WHUM1.bmp,images/WHUM1.dat}}
151
${eval ${call nedores_rule,WHUM1b.ast,images/WHUM1.bmp,images/WHUM1b.dat}}
152
${eval ${call nedores_rule,WHUM1c.ast,images/WHUM1.bmp,images/WHUM1c.dat}}
153
${eval ${call nedores_rule,WHUMCAT.ast,images/WHUM2.bmp,images/WHUMCAT.dat}}
154
${eval ${call nedores_rule,WHUMHOR.ast,images/WHUM2.bmp,images/WHUMHOR.dat}}
155
${eval ${call nedores_rule,WORC1.ast,images/WORC1.bmp,images/WORC1.dat}}
156
${eval ${call nedores_rule,WORC1b.ast,images/WORC1.bmp,images/WORC1b.dat}}
157
${eval ${call nedores_rule,WORC1c.ast,images/WORC1.bmp,images/WORC1c.dat}}
158
${eval ${call nedores_rule,WORCCAT.ast,images/WORC2.bmp,images/WORCCAT.dat}}
159
${eval ${call nedores_rule,WORCHOR.ast,images/WORC2.bmp,images/WORCHOR.dat}}
160
${eval ${call nedores_rule,WCREAT1.ast,images/WCREAT1.bmp,images/WCREAT1.dat}}
161
${eval ${call nedores_rule,WCREAT1b.ast,images/WCREAT1.bmp,images/WCREAT1b.dat}}
162
${eval ${call nedores_rule,WCREAT1c.ast,images/WCREAT1.bmp,images/WCREAT1c.dat}}
163
${eval ${call nedores_rule,WCREAT2.ast,images/WCREAT2.bmp,images/WCREAT2.dat}}
164
${eval ${call nedores_rule,WCREAT2b.ast,images/WCREAT2.bmp,images/WCREAT2b.dat}}
165
${eval ${call nedores_rule,WCREAT2c.ast,images/WCREAT2.bmp,images/WCREAT2c.dat}}
166
${eval ${call nedores_rule,WBODY.ast,images/WMISC.bmp,images/WBODY.dat}}
167
${eval ${call nedores_rule,WBULLET.ast,images/WMISC.bmp,images/WBULLET.dat}}
168
${eval ${call nedores_rule,demobar.ast,images/demobar.bmp,images/demobar.dat}}
169
 
170
define compile_module_rule =
171
${eval ${call sjasmplus_rule,${1},${2},${3},MODULES_DEPS,MODULES_BINS}}
172
endef
173
 
174
define compile_module_odd_rule =
175
${eval ${call sjasmplus_odd_rule,${1},${2},${3},MODULES_DEPS,MODULES_BINS}}
176
endef
177
 
178
${eval ${call compile_module_rule,${LOCALDIR}/W1LAND.bin,W1LAND.ast,}}
179
${eval ${call compile_module_rule,${LOCALDIR}/W2LAND.bin,W2LAND.ast,}}
180
${eval ${call compile_module_rule,${LOCALDIR}/W3LAND.bin,W3LAND.ast,}}
181
${eval ${call compile_module_rule,${LOCALDIR}/W4LAND.bin,W4LAND.ast,}}
182
${eval ${call compile_module_rule,${LOCALDIR}/WBAR.bin,WBAR.ast,}}
183
${eval ${call compile_module_rule,${LOCALDIR}/W0BUT.bin,WHUMBUTT.ast,}}	# renamed
184
${eval ${call compile_module_rule,${LOCALDIR}/W1BUT.bin,WORCBUTT.ast,}}	# renamed
185
${eval ${call compile_module_rule,${LOCALDIR}/WHUM1.bin,WHUM1.asm,}}
186
${eval ${call compile_module_rule,${LOCALDIR}/WHUM1b.bin,WHUM1b.asm,}}
187
${eval ${call compile_module_rule,${LOCALDIR}/WHUM1c.bin,WHUM1c.asm,}}
188
${eval ${call compile_module_rule,${LOCALDIR}/WHUMCAT.bin,WHUMCAT.asm,}}
189
${eval ${call compile_module_rule,${LOCALDIR}/WHUMHOR.bin,WHUMHOR.asm,}}
190
${eval ${call compile_module_rule,${LOCALDIR}/WORC1.bin,WORC1.asm,}}
191
${eval ${call compile_module_rule,${LOCALDIR}/WORC1b.bin,WORC1b.asm,}}
192
${eval ${call compile_module_rule,${LOCALDIR}/WORC1c.bin,WORC1c.asm,}}
193
${eval ${call compile_module_rule,${LOCALDIR}/WORCCAT.bin,WORCCAT.asm,}}
194
${eval ${call compile_module_rule,${LOCALDIR}/WORCHOR.bin,WORCHOR.asm,}}
195
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1.bin,WCREAT1.asm,}}
196
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1b.bin,WCREAT1b.asm,}}
197
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1c.bin,WCREAT1c.asm,}}
198
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2.bin,WCREAT2.asm,}}
199
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2b.bin,WCREAT2b.asm,}}
200
${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2c.bin,WCREAT2c.asm,}}
201
#${eval ${call compile_module_odd_rule,${LOCALDIR}/WBODY.bin,WBODY.asm,}}
202
${eval ${call compile_module_rule,${LOCALDIR}/WBULLET.bin,WBULLET.asm,}}
203
 
204
modules: ${MODULES_BINS} | ${LOCALDIR}
205
 
206
install-modules: modules | ${RES_INSTALLDIR}
207
	cp ${MODULES_BINS} $|
208
 
209
clean-modules:
210
	${RM} ${MODULES_DEPS} ${MODULES_ASTS} ${MODULES_BINS}
211
 
212
DEPS+=${MODULES_DEPS}
213
 
214
#####################
215
## Target "levels" ##
216
#####################
217
 
218
LEVELS_DEPS=
219
LEVELS_DATS=
220
LEVELS_LPZS=
221
LEVELS_BINS=
222
 
223
define compile_level_rule =
224
# Compile rule
225
${eval ${call sjasmplus_rule,${patsubst %${suffix ${2}},%.dat,${2}},${2},${3},LEVELS_DEPS,LEVELS_DATS}}
226
# Fake pack rule
227
${eval ${call copy_file_rule,${patsubst %${suffix ${2}},%.lpz,${2}},${patsubst %${suffix ${2}},%.dat,${2}},LEVELS_LPZS}}
228
# Copy rule
229
${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}
230
endef
231
 
232
define fake_compile_level_rule =
233
# Copy rule
234
${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}
235
# No pack rule
236
# No compile rule
237
endef
238
 
239
define compile_level_odd_rule =
240
# Compile rule
241
${eval ${call sjasmplus_rule,${patsubst %${suffix ${2}},%.dat,${2}},${2},${3},LEVELS_DEPS,LEVELS_DATS}}
242
# Fake pack rule
243
${eval ${call copy_file_rule,${patsubst %${suffix ${2}},%.lpz,${2}},${patsubst %${suffix ${2}},%.dat,${2}},LEVELS_LPZS}}
244
# Copy rule
245
${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}
246
endef
247
 
248
${eval ${call fake_compile_level_rule,${LOCALDIR}/br101.dat,levels/w~101.a80,}}
249
${eval ${call fake_compile_level_rule,${LOCALDIR}/br102.dat,levels/w~102.a80,}}
250
${eval ${call fake_compile_level_rule,${LOCALDIR}/br103.dat,levels/w~103.a80,}}
251
${eval ${call compile_level_odd_rule,${LOCALDIR}/br104.dat,levels/w~104.a80,}}
252
${eval ${call fake_compile_level_rule,${LOCALDIR}/br105.dat,levels/w~105.a80,}}
253
${eval ${call fake_compile_level_rule,${LOCALDIR}/br106.dat,levels/w~106.a80,}}
254
${eval ${call compile_level_odd_rule,${LOCALDIR}/br107.dat,levels/w~107.a80,}}
255
${eval ${call fake_compile_level_rule,${LOCALDIR}/br108.dat,levels/w~108.a80,}}
256
${eval ${call fake_compile_level_rule,${LOCALDIR}/br109.dat,levels/w~109.a80,}}
257
${eval ${call fake_compile_level_rule,${LOCALDIR}/br110.dat,levels/w~110.a80,}}
258
${eval ${call fake_compile_level_rule,${LOCALDIR}/br111.dat,levels/w~111.a80,}}
259
${eval ${call compile_level_odd_rule,${LOCALDIR}/br112.dat,levels/w~112.a80,}}
260
${eval ${call fake_compile_level_rule,${LOCALDIR}/br113.dat,levels/w~113.a80,}}
261
${eval ${call fake_compile_level_rule,${LOCALDIR}/br114.dat,levels/w~114.a80,}}
262
${eval ${call fake_compile_level_rule,${LOCALDIR}/br115.dat,levels/w~115.a80,}}
263
${eval ${call fake_compile_level_rule,${LOCALDIR}/br116.dat,levels/w~116.a80,}}
264
${eval ${call compile_level_odd_rule,${LOCALDIR}/br117.dat,levels/w~117end.a80,}}
265
${eval ${call fake_compile_level_rule,${LOCALDIR}/br201.dat,levels/w~201.a80,}}
266
${eval ${call fake_compile_level_rule,${LOCALDIR}/br202.dat,levels/w~202.a80,}}
267
${eval ${call fake_compile_level_rule,${LOCALDIR}/br203.dat,levels/w~203.a80,}}
268
${eval ${call fake_compile_level_rule,${LOCALDIR}/br204.dat,levels/w~204.a80,}}
269
${eval ${call compile_level_odd_rule,${LOCALDIR}/br205.dat,levels/w~205.a80,}}
270
${eval ${call fake_compile_level_rule,${LOCALDIR}/br206.dat,levels/w~206.a80,}}
271
${eval ${call fake_compile_level_rule,${LOCALDIR}/br207.dat,levels/w~207.a80,}}
272
${eval ${call fake_compile_level_rule,${LOCALDIR}/br208.dat,levels/w~208.a80,}}
273
${eval ${call fake_compile_level_rule,${LOCALDIR}/br209.dat,levels/w~209.a80,}}
274
${eval ${call fake_compile_level_rule,${LOCALDIR}/br210.dat,levels/w~210.a80,}}
275
${eval ${call fake_compile_level_rule,${LOCALDIR}/br211.dat,levels/w~211.a80,}}
276
${eval ${call fake_compile_level_rule,${LOCALDIR}/br212.dat,levels/w~212.a80,}}
277
${eval ${call compile_level_odd_rule,${LOCALDIR}/br213.dat,levels/w~213.a80,}}
278
${eval ${call fake_compile_level_rule,${LOCALDIR}/br214.dat,levels/w~214.a80,}}
279
${eval ${call fake_compile_level_rule,${LOCALDIR}/br215.dat,levels/w~215.a80,}}
280
${eval ${call fake_compile_level_rule,${LOCALDIR}/br216.dat,levels/w~216.a80,}}
281
${eval ${call compile_level_odd_rule,${LOCALDIR}/br217.dat,levels/w~217end.a80,}}
282
 
283
levels: ${LEVELS_BINS} | ${LOCALDIR}
284
 
285
install-levels: levels | ${RES_INSTALLDIR}
286
	cp ${LEVELS_BINS} $|
287
 
288
clean-levels:
289
	${RM} ${LEVELS_DEPS} ${LEVELS_DATS} ${LEVELS_LPZS} ${LEVELS_BINS}
290
 
291
DEPS+=${LEVELS_DEPS}
292
 
293
########################
294
## Target "resources" ##
295
########################
296
 
297
RES_DATS=\
298
${LOCALDIR}/br0.dat \
299
${LOCALDIR}/br1.dat \
300
${LOCALDIR}/br3.dat \
301
${LOCALDIR}/br4.dat \
302
${LOCALDIR}/br6.dat \
303
${LOCALDIR}/br7.dat \
304
${LOCALDIR}/braniu_0.dat \
305
${LOCALDIR}/braniu_1.dat \
306
${LOCALDIR}/braniv_0.dat \
307
${LOCALDIR}/braniv_1.dat \
308
${LOCALDIR}/braniw_0.dat \
309
${LOCALDIR}/braniw_1.dat \
310
${LOCALDIR}/branix_0.dat \
311
${LOCALDIR}/branix_1.dat \
312
${LOCALDIR}/braniy_0.dat \
313
${LOCALDIR}/braniy_1.dat \
314
${LOCALDIR}/braniz_0.dat \
315
${LOCALDIR}/braniz_1.dat \
316
${LOCALDIR}/brbar.dat \
317
${LOCALDIR}/brbut0.dat \
318
${LOCALDIR}/brbut1.dat \
319
${LOCALDIR}/brmuz0.dat \
320
${LOCALDIR}/brmuz1.dat \
321
${LOCALDIR}/brmuz2.dat \
322
${LOCALDIR}/brmuz3.dat \
323
${LOCALDIR}/brmuz4.dat \
324
${LOCALDIR}/brmuz5.dat \
325
${LOCALDIR}/brmuz6.dat \
326
${LOCALDIR}/brmuz7.dat \
327
${LOCALDIR}/brspr1.dat \
328
${LOCALDIR}/brspr2.dat \
329
${LOCALDIR}/brspr3.dat \
330
${LOCALDIR}/brspr4.dat
331
 
332
resources: flicks modules levels ${RES_DATS}
333
 
334
install-resources: install-flicks install-modules install-levels ${RES_DATS} | ${RES_INSTALLDIR}
335
ifneq "${sort ${RESOURCES}}" ""
336
	cp ${RESOURCES} $|
337
endif
338
	cp ${RES_DATS} $|
339
 
340
clean-resources: clean-flicks clean-modules clean-levels
341
 
342
####################
343
## Common targets ##
344
####################
345
 
346
all: executables resources
347
 
348
install: install-executables install-resources
349
 
350
ifeq "${sort ${DOCS}}" ""
351
install-doc:
352
else
353
install-doc: ${DOCS} | ${DOC_INSTALLDIR}
354
	cp $^ $|
355
endif
356
 
357
clean: clean-executables clean-resources
358
 
359
##################
360
## Dependencies ##
361
##################
362
 
363
ifneq "${sort \
364
${filter empty,${MAKECMDGOALS}} \
365
${filter clean,${MAKECMDGOALS}} \
366
${filter clean-%,${MAKECMDGOALS}} \
367
}" ""
368
else
369
# FIXME: Triggered when multiple targets specified.
370
include ${DEPS}
371
endif