6c0e96dc5c741e6990f2044104e274b700da5af7
[neverball] / Makefile
1
2 #------------------------------------------------------------------------------
3
4 # Maybe you need one of these.  Maybe you don't.
5
6 #X11_PATH= -L/usr/X11/lib
7 #X11_PATH= -L/usr/X11R6/lib
8
9 OGL_LIBS= -lGL -lm
10 #OGL_LIBS= -lm                                                # Think Different
11
12 #------------------------------------------------------------------------------
13
14 CFLAGS= -Wall -O3 -ansi -pedantic $(shell sdl-config --cflags)
15 #CFLAGS= -Wall -g -ansi $(shell sdl-config --cflags)
16 #CFLAGS= -Wall -pg -ansi $(shell sdl-config --cflags)
17
18 SDL_LIBS= $(shell sdl-config --libs)
19 FT2_LIBS= $(shell freetype-config --libs)
20
21 MAPC_TARG= mapc
22 BALL_TARG= neverball
23 PUTT_TARG= neverputt
24
25 LOCALEDIR= locale
26 LOCALEDOM= neverball
27
28 LINGUAS= fr lv # List of locales to generates
29 POTFILE= po/neverball.pot
30
31 MAPC_OBJS= \
32         share/vec3.o   \
33         share/image.o  \
34         share/solid.o  \
35         share/binary.o \
36         share/config.o \
37         share/mapc.o
38 BALL_OBJS= \
39         share/i18n.o    \
40         share/st_lang.o \
41         share/st_resol.o \
42         share/vec3.o    \
43         share/image.o   \
44         share/solid.o   \
45         share/part.o    \
46         share/back.o    \
47         share/geom.o    \
48         share/gui.o     \
49         share/config.o  \
50         share/binary.o  \
51         share/state.o   \
52         share/audio.o   \
53         ball/hud.o      \
54         ball/game.o     \
55         ball/level.o    \
56         ball/set.o      \
57         ball/demo.o     \
58         ball/util.o     \
59         ball/st_conf.o  \
60         ball/st_demo.o  \
61         ball/st_save.o  \
62         ball/st_fail.o  \
63         ball/st_goal.o  \
64         ball/st_done.o  \
65         ball/st_level.o \
66         ball/st_over.o  \
67         ball/st_play.o  \
68         ball/st_set.o   \
69         ball/st_start.o \
70         ball/st_title.o \
71         ball/main.o
72 PUTT_OBJS= \
73         share/i18n.o    \
74         share/st_lang.o \
75         share/vec3.o   \
76         share/image.o  \
77         share/solid.o  \
78         share/part.o   \
79         share/geom.o   \
80         share/back.o   \
81         share/config.o \
82         share/binary.o \
83         share/audio.o  \
84         share/state.o  \
85         share/gui.o    \
86         putt/hud.o     \
87         putt/game.o    \
88         putt/hole.o    \
89         putt/course.o  \
90         putt/st_all.o  \
91         putt/st_conf.o \
92         putt/main.o
93
94 BALL_DEPS= $(BALL_OBJS:.o=.d)
95 PUTT_DEPS= $(PUTT_OBJS:.o=.d)
96 MAPC_DEPS= $(MAPC_OBJS:.o=.d)
97
98 LIBS= $(X11_PATH) $(SDL_LIBS) -lSDL_image -lSDL_ttf -lSDL_mixer $(FT2_LIBS) $(OGL_LIBS)
99
100 MESSAGEPART= /LC_MESSAGES/$(LOCALEDOM).mo
101 MESSAGES= $(LINGUAS:%=$(LOCALEDIR)/%$(MESSAGEPART))
102
103 SOLS= \
104         data/map-rlk/easy.sol     \
105         data/map-rlk/peasy.sol    \
106         data/map-rlk/coins.sol    \
107         data/map-rlk/goslow.sol   \
108         data/map-rlk/fence.sol    \
109         data/map-rlk/bumper.sol   \
110         data/map-rlk/maze.sol     \
111         data/map-rlk/goals.sol    \
112         data/map-rlk/hole.sol     \
113         data/map-rlk/bumps.sol    \
114         data/map-rlk/corners.sol  \
115         data/map-rlk/easytele.sol \
116         data/map-rlk/zigzag.sol   \
117         data/map-rlk/greed.sol    \
118         data/map-rlk/mover.sol    \
119         data/map-rlk/wakka.sol    \
120         data/map-rlk/curbs.sol    \
121         data/map-rlk/curved.sol   \
122         data/map-rlk/stairs.sol   \
123         data/map-rlk/rampdn.sol   \
124         data/map-rlk/sync.sol     \
125         data/map-rlk/spiralin.sol \
126         data/map-rlk/plinko.sol   \
127         data/map-rlk/drops.sol    \
128         data/map-rlk/locks.sol    \
129         data/map-rlk/grid.sol     \
130         data/map-rlk/four.sol     \
131         data/map-rlk/telemaze.sol \
132         data/map-rlk/spiraldn.sol \
133         data/map-rlk/islands.sol  \
134         data/map-rlk/angle.sol    \
135         data/map-rlk/spiralup.sol \
136         data/map-rlk/rampup.sol   \
137         data/map-rlk/check.sol    \
138         data/map-rlk/risers.sol   \
139         data/map-rlk/tilt.sol     \
140         data/map-rlk/gaps.sol     \
141         data/map-rlk/pyramid.sol  \
142         data/map-rlk/quads.sol    \
143         data/map-rlk/frogger.sol  \
144         data/map-rlk/timer.sol    \
145         data/map-rlk/spread.sol   \
146         data/map-rlk/hump.sol     \
147         data/map-rlk/movers.sol   \
148         data/map-rlk/teleport.sol \
149         data/map-rlk/poker.sol    \
150         data/map-rlk/invis.sol    \
151         data/map-rlk/ring.sol     \
152         data/map-rlk/pipe.sol     \
153         data/map-rlk/title.sol    \
154         data/map-mym/assault.sol    \
155         data/map-mym/bombman.sol    \
156         data/map-mym/circuit1.sol   \
157         data/map-mym/circuit2.sol   \
158         data/map-mym/climb.sol      \
159         data/map-mym/comeback.sol   \
160         data/map-mym/dance2.sol     \
161         data/map-mym/dance1.sol     \
162         data/map-mym/descent.sol    \
163         data/map-mym/drive1.sol     \
164         data/map-mym/drive2.sol     \
165         data/map-mym/earthquake.sol \
166         data/map-mym/glasstower.sol \
167         data/map-mym/hard.sol       \
168         data/map-mym/loop1.sol      \
169         data/map-mym/loop2.sol      \
170         data/map-mym/maze1.sol      \
171         data/map-mym/maze2.sol      \
172         data/map-mym/narrow.sol     \
173         data/map-mym/running.sol    \
174         data/map-mym/scrambling.sol \
175         data/map-mym/snow.sol       \
176         data/map-mym/trust.sol      \
177         data/map-mym/turn.sol       \
178         data/map-mym/up.sol         \
179         data/map-mym2/backforth.sol \
180         data/map-mym2/basket.sol \
181         data/map-mym2/bigball.sol \
182         data/map-mym2/bigcones.sol \
183         data/map-mym2/bounces.sol \
184         data/map-mym2/fall.sol \
185         data/map-mym2/freefall.sol \
186         data/map-mym2/ghosts.sol \
187         data/map-mym2/grinder.sol \
188         data/map-mym2/littlecones.sol \
189         data/map-mym2/longpipe.sol \
190         data/map-mym2/morenarrow.sol \
191         data/map-mym2/movinglumps.sol \
192         data/map-mym2/movingpath.sol \
193         data/map-mym2/push.sol \
194         data/map-mym2/rainbow.sol \
195         data/map-mym2/rodeo.sol \
196         data/map-mym2/runstop.sol \
197         data/map-mym2/shaker.sol \
198         data/map-mym2/sonic.sol \
199         data/map-mym2/speeddance.sol \
200         data/map-mym2/speed.sol \
201         data/map-mym2/translation.sol \
202         data/map-mym2/updown.sol \
203         data/map-mym2/webs.sol \
204         data/map-putt/01_easy.sol    \
205         data/map-putt/02_uturn.sol   \
206         data/map-putt/03_kink.sol    \
207         data/map-putt/04_aych.sol    \
208         data/map-putt/05_ramp.sol    \
209         data/map-putt/06_cone.sol    \
210         data/map-putt/07_tele.sol    \
211         data/map-putt/08_zig.sol     \
212         data/map-putt/09_vturn.sol   \
213         data/map-putt/10_diamond.sol \
214         data/map-putt/11_mover.sol   \
215         data/map-putt/12_bumpy.sol   \
216         data/map-putt/13_choose.sol  \
217         data/map-putt/14_walls.sol   \
218         data/map-putt/15_hole.sol    \
219         data/map-putt/16_pipe.sol    \
220         data/map-putt/17_timing.sol  \
221         data/map-putt/18_hill.sol    \
222         data/map-back/alien.sol   \
223         data/map-back/blank.sol   \
224         data/map-back/city.sol    \
225         data/map-back/clouds.sol  \
226         data/map-back/ocean.sol   \
227         data/map-back/jupiter.sol \
228         data/map-paxed/01_fastpenta.sol  \
229         data/map-paxed/02_bumpy_road.sol \
230         data/map-paxed/03_zigzag.sol     \
231         data/map-paxed/04_u_twist.sol    \
232         data/map-paxed/05_hookey.sol     \
233         data/map-paxed/06_partitions.sol \
234         data/map-paxed/07_a_danger.sol   \
235         data/map-paxed/08_f.sol          \
236         data/map-paxed/09_rampedge.sol   \
237         data/map-paxed/10_pentomino.sol  \
238         data/map-paxed/11_stapler.sol    \
239         data/map-paxed/12_helixramp.sol  \
240         data/map-paxed/13_loch_ness.sol  \
241         data/map-paxed/14_figur8.sol     \
242         data/map-paxed/15_upNdown.sol    \
243         data/map-paxed/16_pyramidian.sol \
244         data/map-paxed/17_oopsydaisy.sol \
245         data/map-paxed/18_3rd_floor.sol  \
246         data/map-paxed/a.sol \
247         data/map-paxed/b.sol \
248         data/map-paxed/c.sol \
249         data/map-paxed/d.sol \
250         data/map-paxed/e.sol \
251         data/map-paxed/f.sol \
252         data/map-paxed/g.sol \
253         data/map-paxed/h.sol \
254         data/map-paxed/i.sol \
255         data/map-paxed/j.sol \
256         data/map-paxed/k.sol \
257         data/map-paxed/l.sol \
258         data/map-paxed/m.sol \
259         data/map-paxed/n.sol \
260         data/map-paxed/o.sol \
261         data/map-paxed/p.sol \
262         data/map-paxed/q.sol \
263         data/map-paxed/r.sol \
264         data/map-paxed/s.sol \
265         data/map-paxed/t.sol \
266         data/map-paxed/u.sol \
267         data/map-paxed/v.sol \
268         data/map-paxed/w.sol \
269         data/map-paxed/x.sol \
270         data/map-paxed/y.sol \
271         data/map-paxed/z.sol
272
273 #------------------------------------------------------------------------------
274
275 %.d : %.c
276         $(CC) $(CFLAGS) -Ishare -MM -MF $@ $<
277
278 %.o : %.c
279         $(CC) $(CFLAGS) -Ishare -o $@ -c $<
280
281 $(LOCALEDIR)/%$(MESSAGEPART) : po/%.po
282         mkdir -p `dirname $@`
283         msgfmt -c -v -o $@ $<
284         
285 data/map-rlk/%.sol : data/map-rlk/%.map $(MAPC_TARG)
286         ./$(MAPC_TARG) $< data
287
288 data/map-mym/%.sol : data/map-mym/%.map $(MAPC_TARG)
289         ./$(MAPC_TARG) $< data
290
291 data/map-mym2/%.sol : data/map-mym2/%.map $(MAPC_TARG)
292         ./$(MAPC_TARG) $< data
293
294 data/map-putt/%.sol : data/map-putt/%.map $(MAPC_TARG)
295         ./$(MAPC_TARG) $< data
296
297 data/map-back/%.sol : data/map-back/%.map $(MAPC_TARG)
298         ./$(MAPC_TARG) $< data
299
300 data/map-paxed/%.sol : data/map-paxed/%.map $(MAPC_TARG)
301         ./$(MAPC_TARG) $< data
302
303 #------------------------------------------------------------------------------
304
305 all : $(BALL_TARG) $(PUTT_TARG) $(MAPC_TARG) $(SOLS) locales
306
307 $(BALL_TARG) : $(BALL_OBJS)
308         $(CC) $(CFLAGS) -o $(BALL_TARG) $(BALL_OBJS) $(LIBS)
309
310 $(PUTT_TARG) : $(PUTT_OBJS)
311         $(CC) $(CFLAGS) -o $(PUTT_TARG) $(PUTT_OBJS) $(LIBS)
312
313 $(MAPC_TARG) : $(MAPC_OBJS)
314         $(CC) $(CFLAGS) -o $(MAPC_TARG) $(MAPC_OBJS) $(LIBS)
315
316 locales: $(MESSAGES)
317
318 clean-src :
319         rm -f $(BALL_TARG) $(BALL_OBJS) $(BALL_DEPS)
320         rm -f $(PUTT_TARG) $(PUTT_OBJS) $(PUTT_DEPS)
321         rm -f $(MAPC_TARG) $(MAPC_OBJS) $(MAPC_DEPS)
322
323 clean : clean-src
324         rm -f $(SOLS)
325         rm -rf $(LOCALEDIR)
326
327 test : all
328         ./neverball
329
330 #------------------------------------------------------------------------------
331
332 po/%.po : $(POTFILE)
333         msgmerge -U $@ $<
334         touch $@
335         
336 po-update-extract :
337         bash extractpo.sh $(POTFILE) $(LOCALEDOM)
338
339 po-update-merge : $(LINGUAS:%=po/%.po)
340
341 po-update : po-update-extract po-update-merge
342
343 #------------------------------------------------------------------------------