1VERSION:=1.7.0git
2
3MAIN_OBJS:=actions.o \
4	actorio.o \
5	actors.o  \
6	args.o \
7	browser.o \
8	cheat.o \
9	cheat_screen.o \
10	combat.o \
11	dir.o \
12	drag.o \
13	effects.o \
14	exult.o \
15	exultmenu.o \
16	game.o \
17	gameclk.o \
18	gamedat.o \
19	gamemap.o \
20	gamerend.o \
21	gamewin.o \
22	istring.o \
23	keys.o \
24	keyactions.o \
25	menulist.o \
26	monsters.o \
27	mouse.o \
28	npcnear.o \
29	npctime.o \
30	palette.o \
31	party.o \
32	paths.o \
33	readnpcs.o \
34	schedule.o \
35	shapeid.o \
36	touchui.o \
37	tqueue.o \
38	txtscroll.o \
39	verify.o \
40	version.o \
41	windrag.o
42
43PATH_OBJS:= \
44	pathfinder/Astar.o \
45	pathfinder/path.o \
46	pathfinder/PathFinder.o \
47	pathfinder/Zombie.o
48
49CONF_OBJS:= \
50	conf/Configuration.o \
51	conf/XMLEntity.o
52# unused: xmain.o
53
54TIMIDITY_OBJS:=\
55	audio/midi_drivers/timidity/timidity.o \
56	audio/midi_drivers/timidity/timidity_common.o \
57	audio/midi_drivers/timidity/timidity_controls.o \
58	audio/midi_drivers/timidity/timidity_filter.o \
59	audio/midi_drivers/timidity/timidity_instrum.o \
60	audio/midi_drivers/timidity/timidity_mix.o \
61	audio/midi_drivers/timidity/timidity_output.o \
62	audio/midi_drivers/timidity/timidity_playmidi.o \
63	audio/midi_drivers/timidity/timidity_readmidi.o \
64	audio/midi_drivers/timidity/timidity_resample.o \
65	audio/midi_drivers/timidity/timidity_sdl_a.o \
66	audio/midi_drivers/timidity/timidity_sdl_c.o \
67	audio/midi_drivers/timidity/timidity_tables.o
68
69# Note we now always compile all midi drivers
70MIDI_DRV_OBJS:=\
71	audio/midi_drivers/ALSAMidiDriver.o \
72	audio/midi_drivers/CoreAudioMidiDriver.o \
73	audio/midi_drivers/FluidSynthMidiDriver.o \
74	audio/midi_drivers/fmopl.o \
75	audio/midi_drivers/FMOplMidiDriver.o \
76	audio/midi_drivers/LowLevelMidiDriver.o \
77	audio/midi_drivers/MidiDriver.o \
78	audio/midi_drivers/MT32EmuMidiDriver.o \
79	audio/midi_drivers/TimidityMidiDriver.o \
80	audio/midi_drivers/UnixSeqMidiDriver.o \
81	audio/midi_drivers/WindowsMidiDriver.o \
82	audio/midi_drivers/CoreMidiDriver.o \
83	audio/midi_drivers/XMidiEventList.o \
84	audio/midi_drivers/XMidiFile.o \
85	audio/midi_drivers/XMidiSequence.o \
86	$(TIMIDITY_OBJS)
87
88AUDIO_OBJS:=\
89	audio/Audio.o \
90	audio/conv.o \
91	audio/Midi.o \
92	audio/soundtest.o \
93	audio/AudioChannel.o    \
94	audio/AudioMixer.o    \
95	audio/AudioSample.o    \
96	audio/OggAudioSample.o    \
97	audio/RawAudioSample.o    \
98	audio/VocAudioSample.o    \
99	audio/WavAudioSample.o    \
100	$(MIDI_DRV_OBJS)
101# unused: test.o u7audiotool.o
102
103FLIC_OBJS:=\
104	flic/playfli.o
105
106FILE_OBJS:= \
107	files/crc.o \
108	files/Flat.o \
109	files/Flex.o \
110	files/IFF.o \
111	files/listfiles.o \
112	files/msgfile.o \
113	files/Table.o \
114	files/U7file.o \
115	files/U7fileman.o \
116	files/U7obj.o \
117	files/utils.o \
118	files/sha1/sha1.o
119
120# Zipfile support objs
121ZIP_OBJS:=\
122	files/zip/zip.o \
123	files/zip/unzip.o
124
125GAMEMGR_OBJS:= \
126	gamemgr/bggame.o \
127	gamemgr/devgame.o \
128	gamemgr/modmgr.o \
129	gamemgr/sigame.o
130
131GUMPS_OBJS:= \
132	gumps/Actor_gump.o \
133	gumps/AudioOptions_gump.o \
134	gumps/Book_gump.o \
135	gumps/MiscOptions_gump.o \
136	gumps/CombatStats_gump.o \
137	gumps/Enabled_button.o \
138	gumps/Face_button.o \
139	gumps/Face_stats.o \
140	gumps/File_gump.o \
141	gumps/Gamemenu_gump.o \
142	gumps/GameplayOptions_gump.o \
143	gumps/Gump.o \
144	gumps/Gump_button.o \
145	gumps/Gump_manager.o \
146	gumps/Gump_widget.o \
147	gumps/Gump_ToggleButton.o \
148	gumps/ShortcutBar_gump.o \
149	gumps/ItemMenu_gump.o \
150	gumps/Jawbone_gump.o \
151	gumps/misc_buttons.o \
152	gumps/Newfile_gump.o \
153	gumps/Notebook_gump.o \
154	gumps/Paperdoll_gump.o \
155	gumps/Scroll_gump.o \
156	gumps/Sign_gump.o \
157	gumps/Slider_gump.o \
158	gumps/Spellbook_gump.o \
159	gumps/Stats_gump.o \
160	gumps/Text_button.o \
161	gumps/Text_gump.o \
162	gumps/InputOptions_gump.o \
163	gumps/VideoOptions_gump.o \
164	gumps/Yesno_gump.o
165
166IMAGEWIN_OBJS:=\
167	imagewin/ibuf8.o \
168	imagewin/imagebuf.o \
169	imagewin/imagewin.o \
170	imagewin/iwin8.o \
171	imagewin/savepcx.o \
172	imagewin/scale_2x.o \
173	imagewin/scale_2xSaI.o \
174	imagewin/scale_bilinear.o \
175	imagewin/scale_hq2x.o \
176	imagewin/scale_hq3x.o \
177	imagewin/scale_hq4x.o \
178	imagewin/scale_xbr.o \
179	imagewin/scale_interlace.o \
180	imagewin/scale_point.o \
181	imagewin/BilinearScaler.o \
182	imagewin/BilinearScalerInternal_2x.o \
183	imagewin/BilinearScalerInternal_Arb.o \
184	imagewin/BilinearScalerInternal_X1Y12.o \
185	imagewin/BilinearScalerInternal_X2Y24.o \
186	imagewin/PointScaler.o
187
188### Just in case...
189
190#NMake Line\
191!if 0
192
193#NMake Line\
194!else
195
196#NMake Line\
197
198#NMake Line\
199!endif
200
201SHAPES_OBJS:= \
202	shapes/font.o \
203	shapes/fontvga.o\
204	shapes/items.o \
205	shapes/miscinf.o\
206	shapes/shapeinf.o\
207	shapes/shapevga.o \
208	shapes/u7drag.o \
209	shapes/vgafile.o \
210	shapes/shapeinf/ammoinf.o \
211	shapes/shapeinf/aniinf.o \
212	shapes/shapeinf/armorinf.o \
213	shapes/shapeinf/bodyinf.o \
214	shapes/shapeinf/continf.o \
215	shapes/shapeinf/effhpinf.o \
216	shapes/shapeinf/expinf.o \
217	shapes/shapeinf/frnameinf.o \
218	shapes/shapeinf/frflags.o \
219	shapes/shapeinf/frusefun.o \
220	shapes/shapeinf/lightinf.o \
221	shapes/shapeinf/monstinf.o \
222	shapes/shapeinf/npcdollinf.o \
223	shapes/shapeinf/objdollinf.o \
224	shapes/shapeinf/sfxinf.o \
225	shapes/shapeinf/warminf.o \
226	shapes/shapeinf/weaponinf.o
227
228OBJS_OBJS:= \
229	objs/animate.o \
230	objs/barge.o \
231	objs/chunks.o \
232	objs/chunkter.o \
233	objs/contain.o \
234	objs/egg.o \
235	objs/iregobjs.o \
236	objs/jawbone.o \
237	objs/mappatch.o \
238	objs/objnames.o \
239	objs/objs.o \
240	objs/spellbook.o \
241	objs/virstone.o
242
243USECODE_OBJS:= \
244	usecode/debugserver.o \
245	usecode/ucdebugging.o \
246	usecode/ucserial.o \
247	usecode/conversation.o \
248	usecode/intrinsics.o \
249	usecode/keyring.o \
250	usecode/stackframe.o \
251	usecode/ucdisasm.o \
252	usecode/ucfunction.o \
253	usecode/ucinternal.o \
254	usecode/ucmachine.o \
255	usecode/ucsched.o \
256	usecode/ucsymtbl.o \
257	usecode/useval.o
258
259OBJS:=$(MAIN_OBJS) $(PATH_OBJS) $(CONF_OBJS) $(AUDIO_OBJS) $(FLIC_OBJS) $(FILE_OBJS) $(GAMEMGR_OBJS) $(GUMPS_OBJS) $(OBJS_OBJS) $(SHAPES_OBJS) $(IMAGEWIN_OBJS) $(USECODE_OBJS) $(ZIP_OBJS) $(SERVER_OBJS) $(ICON_OBJS)
260
261EXULT_FLX := data/exult.flx data/exult_flx.h
262EXULT_FLX_OBJECTS := \
263	data/flx.in \
264	data/quotes.txt \
265	data/credits.txt \
266	data/exult_logo.shp \
267	data/exult0.pal \
268	data/meditown.mid \
269	data/font.shp \
270	data/fonton.shp \
271	data/navfont.shp \
272	data/navfonton.shp \
273	data/pointers.shp \
274	data/extras.shp \
275	data/notebook.shp \
276	data/stats_extra.shp \
277	data/savegump.shp \
278	data/sav_downdown.shp \
279	data/sav_down.shp \
280	data/sav_up.shp \
281	data/sav_upup.shp \
282	data/sav_slider.shp \
283	data/sav_selected.shp \
284	data/gameplayoptions.shp \
285	data/gamemenu.shp \
286	data/audiooptions.shp \
287	data/videooptions.shp \
288	data/miscoptions.shp \
289	data/hp_bar.shp \
290	data/sfx_icon.shp \
291	data/mtgm.mid \
292	data/sb_combat.shp \
293	data/sb_disk.shp \
294	data/sb_jawbone.shp \
295	data/sb_keyring.shp \
296	data/sb_spellbook.shp \
297	data/sb_target.shp \
298	data/sb_food.shp \
299	data/sb_key.shp \
300	data/sb_maps.shp \
301	data/sb_notebook.shp \
302	data/sb_backpack.shp \
303	data/transparentmenu.shp
304
305EXULT_BG_FLX := data/exult_bg.flx data/exult_bg_flx.h
306EXULT_BG_FLX_OBJECTS := \
307	data/bg/flx.in \
308	data/bg/BGmap.shp \
309	data/bg/defaultkeys.txt	\
310	data/bg/u7menupal.pal \
311	data/bg/bg_paperdol.vga \
312	data/bg/bg_mr_faces.vga \
313	data/bg/bodies.txt \
314	data/bg/shape_files.txt \
315	data/bg/avatar_data.txt \
316	data/bg/paperdol_info.txt \
317	data/bg/shape_info.txt \
318	data/bg/blends.dat \
319	data/bg/container.dat \
320	data/bg/autonotes.txt \
321	data/bg/intro_hand.shp \
322	data/bg/introsfx_mt32.flx \
323	data/bg/introsfx_sb.flx
324
325EXULT_BG_INTROSFX_MT32 := data/bg/introsfx_mt32.flx data/bg/introsfx_mt32.h
326EXULT_BG_INTROSFX_MT32_OBJECTS = \
327	data/bg/introsfx_mt.in \
328	data/bg/intro_mt_static1.wav \
329	data/bg/intro_mt_static2.wav \
330	data/bg/intro_mt_static3.wav \
331	data/bg/intro_mt_guardian1.wav \
332	data/bg/intro_mt_guardian2.wav \
333	data/bg/intro_mt_guardian3.wav \
334	data/bg/intro_mt_guardian4.wav \
335	data/bg/intro_mt_outstatic.wav \
336	data/bg/intro_mt_outnoise.wav \
337	data/bg/intro_mt_monitorslap.wav \
338	data/bg/intro_mt_moongate.wav \
339	data/bg/intro_mt_shot.wav
340
341EXULT_BG_INTROSFX_SB := data/bg/introsfx_sb.flx data/bg/introsfx_sb.h
342EXULT_BG_INTROSFX_SB_OBJECTS = \
343	data/bg/introsfx_mt.in \
344	data/bg/intro_sb_static1.wav \
345	data/bg/intro_sb_static2.wav \
346	data/bg/intro_sb_static3.wav \
347	data/bg/intro_sb_guardian1.wav \
348	data/bg/intro_sb_guardian2.wav \
349	data/bg/intro_sb_guardian3.wav \
350	data/bg/intro_sb_guardian4.wav \
351	data/bg/intro_sb_outstatic.wav \
352	data/bg/intro_sb_outnoise.wav \
353	data/bg/intro_sb_monitorslap.wav \
354	data/bg/intro_sb_moongate.wav \
355	data/bg/intro_sb_shot.wav
356
357EXULT_SI_FLX := data/exult_si.flx data/exult_si_flx.h
358EXULT_SI_FLX_OBJECTS := \
359	data/si/flx.in \
360	data/si/SImap.shp \
361	data/si/defaultkeys.txt \
362	data/si/bodies.txt \
363	data/si/shape_files.txt \
364	data/si/avatar_data.txt \
365	data/si/paperdol_info.txt \
366	data/si/shape_info.txt \
367	data/si/blends.dat \
368	data/si/container.dat \
369	data/si/autonotes.txt \
370	data/si/ext_intro_castle.flc \
371	data/si/ext_intro_ship1.flc \
372	data/si/ext_intro_ship2.flc \
373	data/si/ext_intro_pil1.flc \
374	data/si/ext_intro_a.xmi \
375	data/si/ext_intro_r.xmi \
376	data/si/ext_intro_si01.ogg
377
378EXULT_BG_PAPERDOL_VGA := data/bg/bg_paperdol.vga data/bg/bg_paperdol_vga.h
379EXULT_BG_PAPERDOL_VGA_OBJECTS := \
380	data/bg/amulets.shp \
381	data/bg/bgfiredoom.shp \
382	data/bg/bluedress.shp \
383	data/bg/caddellite_helmet.shp \
384	data/bg/cleaver.shp \
385	data/bg/custom_sword.shp \
386	data/bg/death_scythe.shp \
387	data/bg/dupre_face.shp \
388	data/bg/fellowshipstaff.shp \
389	data/bg/fem_av_face.shp \
390	data/bg/firesword.shp \
391	data/bg/firewand.shp \
392	data/bg/gorget.shp \
393	data/bg/great_dagger.shp \
394	data/bg/greaves.shp \
395	data/bg/greencloak.shp \
396	data/bg/greentop.shp \
397	data/bg/greycloak.shp \
398	data/bg/hawk.shp \
399	data/bg/hoe_of_destruction.shp \
400	data/bg/hoods.shp \
401	data/bg/iolo_face.shp \
402	data/bg/jaana_face.shp \
403	data/bg/julia_face.shp \
404	data/bg/katrina_face.shp \
405	data/bg/knife.shp \
406	data/bg/lightning_whip.shp \
407	data/bg/magic_boomerang.shp \
408	data/bg/magic_helmet.shp \
409	data/bg/main_gauche.shp \
410	data/bg/male_av_face.shp \
411	data/bg/musket.shp \
412	data/bg/musket_ammo.shp \
413	data/bg/orangedress.shp \
414	data/bg/pants.shp \
415	data/bg/ring_of_protection.shp \
416	data/bg/sentri_face.shp \
417	data/bg/shamino_face.shp \
418	data/bg/shoes.shp \
419	data/bg/spark_face.shp \
420	data/bg/spiked_shield.shp \
421	data/bg/starburst.shp \
422	data/bg/throwing_axe.shp \
423	data/bg/triple_xbow.shp \
424	data/bg/tseramed_face.shp \
425	data/bg/swamp_boots.shp \
426	data/bg/spellbook.shp \
427	data/bg/av_costume.shp \
428	data/bg/oil_flask.shp \
429	data/bg/love_arrows.shp \
430	data/bg/magebane.shp \
431	data/bg/shieldbacks.shp \
432	data/bg/diaper.shp \
433	data/bg/bg_paperdol.in
434
435EXULT_BG_MR_FACES_VGA := data/bg/bg_mr_faces.vga data/bg/bg_mr_faces_vga.h
436EXULT_BG_MR_FACES_VGA_OBJECTS := \
437	data/bg/mr_faces.shp \
438	data/bg/bg_mr_faces.in
439
440FLEXES := $(EXULT_FLX) $(EXULT_BG_FLX) $(EXULT_SI_FLX)
441BG_PAPERDOLL := $(EXULT_BG_PAPERDOL_VGA)
442BG_MR_FACES := $(EXULT_BG_MR_FACES_VGA)
443
444all: $(EXEC)
445
446ucinternal.o : ucinternal.cc ucinternal.h bgintrinsics.h siintrinsics.h sibetaintrinsics.h opcodes.h usefuns.h
447
448# Generated flex dependencies...
449
450exult.o : exult.cc $(EXULT_FLX) $(EXULT_BG_FLX) $(EXULT_SI_FLX)
451
452exultmenu.o : exultmenu.cc $(EXULT_FLX)
453
454game.o : game.cc $(EXULT_FLX)
455
456shapeid.o : shapeid.cc $(EXULT_BG_FLX) $(EXULT_SI_FLX)
457
458audio/Midi.o : audio/Midi.cc $(EXULT_FLX)
459
460gumps/AudioOptions_gump.o : gumps/AudioOptions_gump.cc $(EXULT_FLX)
461
462gumps/MiscOptions_gump.o : gumps/MiscOptions_gump.cc $(EXULT_FLX)
463
464gumps/Face_stats.o : gumps/Face_stats.cc $(EXULT_FLX)
465
466gumps/Gamemenu_gump.o : gumps/Gamemenu_gump.cc $(EXULT_FLX)
467
468gumps/GameplayOptions_gump.o : gumps/GameplayOptions_gump.cc $(EXULT_FLX)
469
470gumps/ItemMenu_gump.o : gumps/ItemMenu_gump.cc $(EXULT_FLX)
471
472gumps/InputOptions_gump.o : gumps/InputOptions_gump.cc $(EXULT_FLX)
473
474gumps/Newfile_gump.o : gumps/Newfile_gump.cc $(EXULT_FLX)
475
476gumps/Notebook_gump.o : gumps/Notebook_gump.cc $(EXULT_FLX)
477
478gumps/ShortcutBar_gump.o : gumps/ShortcutBar_gump.cc $(EXULT_FLX)
479
480gumps/Stats_gump.o : gumps/Stats_gump.cc $(EXULT_FLX)
481
482gumps/VideoOptions_gump.o : gumps/VideoOptions_gump.cc $(EXULT_FLX)
483
484gamemgr/bggame.o : gamemgr/bggame.cc $(EXULT_BG_FLX)
485
486gamemgr/sigame.o : gamemgr/sigame.cc $(EXULT_SI_FLX)
487
488shapes/items.o : shapes/items.cc $(EXULT_BG_FLX) $(EXULT_SI_FLX)
489
490shapes/shapevga.o : shapes/shapevga.cc $(EXULT_BG_FLX) $(EXULT_SI_FLX)
491
492usecode/conversation.o : shapes/shapevga.cc $(EXULT_BG_FLX)
493
494$(EXEC) : $(BG_PAPERDOLL) $(FLEXES) $(OBJS)
495	$(CXX) $(LDFLAGS) -o $(@) $(OBJS) $(LIBS)
496
497expack$(EXEEXT) : tools/expack.o $(FILE_OBJS)
498	$(CXX) $(LDFLAGS) -o $(@) tools/expack.o $(FILE_OBJS)
499
500$(EXULT_FLX): expack$(EXEEXT) $(EXULT_FLX_OBJECTS)
501	$(SRC)/expack$(EXEEXT) -i data/flx.in
502
503$(EXULT_BG_FLX): expack$(EXEEXT) $(EXULT_BG_FLX_OBJECTS)
504	$(SRC)/expack$(EXEEXT) -i data/bg/flx.in
505
506$(EXULT_BG_INTROSFX_MT32): expack$(EXEEXT) $(EXULT_BG_INTROSFX_MT32_OBJECTS)
507	$(SRC)/expack$(EXEEXT) -i data/bg/introsfx_mt.in
508
509$(EXULT_BG_INTROSFX_SB): expack$(EXEEXT) $(EXULT_BG_INTROSFX_SB_OBJECTS)
510	$(SRC)/expack$(EXEEXT) -i data/bg/introsfx_sb.in
511
512$(EXULT_SI_FLX): expack$(EXEEXT) $(EXULT_SI_FLX_OBJECTS)
513	$(SRC)/expack$(EXEEXT) -i data/si/flx.in
514
515$(BG_PAPERDOLL): expack$(EXEEXT) $(EXULT_BG_PAPERDOL_VGA_OBJECTS)
516	$(SRC)/expack$(EXEEXT) -i data/bg/bg_paperdol.in
517
518$(BG_MR_FACES): expack$(EXEEXT) $(EXULT_BG_MR_FACES_VGA_OBJECTS)
519	$(SRC)/expack$(EXEEXT) -i data/bg/bg_mr_faces.in
520
521cmanip$(EXEEXT) : tools/cmanip.o $(CONF_OBJS) $(FILE_OBJS)
522	$(CXX) $(LDFLAGS) -o $(@) tools/cmanip.o $(CONF_OBJS) $(FILE_OBJS)
523
524IPACK_OBJS:=\
525	files/Flat.o \
526	files/Flex.o \
527	files/IFF.o \
528	files/Table.o \
529	files/U7file.o \
530	files/U7fileman.o \
531	files/U7obj.o \
532	files/utils.o \
533	imagewin/ibuf8.o \
534	imagewin/imagebuf.o \
535	shapes/pngio.o \
536	shapes/vgafile.o \
537	tools/ipack.o
538
539ipack$(EXEEXT) : $(IPACK_OBJS)
540	$(CXX) $(LDFLAGS) -o $(@) $(IPACK_OBJS) -lpng -lz
541
542mklink$(EXEEXT) : tools/mklink.o
543	$(CXX) $(LDFLAGS) -o $(@) tools/mklink.o
544
545mockup$(EXEEXT): mapedit/tools/mockup/main.o
546	$(CC) $(LDFLAGS) -o $(@) mapedit/tools/mockup/main.o $(subst -mwindows,-mconsole,$(SDL_IMAGE_LIBS))
547
548rip$(EXEEXT) : tools/rip.o
549	$(CXX) $(LDFLAGS) -o $(@) tools/rip.o
550
551libsmooth_randomize$(LIBEXT): mapedit/tools/smooth/plugins/plugin_randomize.o
552	$(CXX) -shared -o $(@) mapedit/tools/smooth/plugins/plugin_randomize.o $(subst -mwindows,-mconsole,$(SDL_LIBS)) $(LDFLAGS)
553
554libsmooth_smooth$(LIBEXT): mapedit/tools/smooth/plugins/plugin_smooth.o
555	$(CXX) -shared -o $(@) mapedit/tools/smooth/plugins/plugin_smooth.o $(subst -mwindows,-mconsole,$(SDL_LIBS)) $(LDFLAGS)
556
557libsmooth_stream$(LIBEXT): mapedit/tools/smooth/plugins/plugin_stream.o
558	$(CXX) -shared -o $(@) mapedit/tools/smooth/plugins/plugin_stream.o $(subst -mwindows,-mconsole,$(SDL_LIBS)) $(LDFLAGS)
559
560SMOOTH_OBJS:=\
561	mapedit/tools/smooth/config.o \
562	mapedit/tools/smooth/image.o \
563	mapedit/tools/smooth/linked.o \
564	mapedit/tools/smooth/param.o \
565	mapedit/tools/smooth/plugin.o \
566	mapedit/tools/smooth/smooth.o
567
568smooth$(EXEEXT) : $(SMOOTH_OBJS)
569	$(CC) $(LDFLAGS) -o $(@) $(SMOOTH_OBJS) $(subst -mwindows,-mconsole,$(SDL_IMAGE_LIBS))
570
571shp2pcx$(EXEEXT) : tools/shp2pcx.o
572	$(CXX) $(LDFLAGS) -o $(@) tools/shp2pcx.o
573
574splitshp$(EXEEXT) : tools/splitshp.o
575	$(CXX) $(LDFLAGS) -o $(@) tools/splitshp.o
576
577textpack$(EXEEXT) : tools/textpack.o $(FILE_OBJS)
578	$(CXX) $(LDFLAGS) -o $(@) tools/textpack.o $(FILE_OBJS)
579
580u7voice2syx$(EXEEXT) : tools/u7voice2syx.o $(FILE_OBJS)
581	$(CXX) $(LDFLAGS) -o $(@) tools/u7voice2syx.o $(FILE_OBJS)
582
583wuc$(EXEEXT) : tools/wuc.o tools/uctools.h usecode/bgintrinsics.h usecode/siintrinsics.h usecode/sibetaintrinsics.h
584	$(CXX) $(LDFLAGS) -o $(@) tools/wuc.o
585
586GTHUMB_OBJS:=\
587	files/Flat.o \
588	files/Flex.o \
589	files/IFF.o \
590	files/Table.o \
591	files/U7file.o \
592	files/U7fileman.o \
593	files/U7obj.o \
594	files/utils.o \
595	imagewin/ibuf8.o \
596	imagewin/imagebuf.o \
597	shapes/pngio.o \
598	shapes/vgafile.o \
599	tools/gnome_shp_thumbnailer.o
600
601gnome_shp_thumbnailer$(EXEEXT) : $(GTHUMB_OBJS)
602	$(CXX) $(LDFLAGS) -o $(@) $(GTHUMB_OBJS) $(GTK_LIBS) -lpng -lz
603
604UCC_OBJS:=\
605	ucparse.o \
606	uclex.o \
607	usecode/ucsymtbl.o \
608	usecode/compiler/ucmain.o \
609	usecode/compiler/ucexpr.o \
610	usecode/compiler/ucfun.o \
611	usecode/compiler/ucloc.o \
612	usecode/compiler/ucstmt.o \
613	usecode/compiler/ucsym.o \
614	usecode/compiler/ucclass.o
615
616ucc$(EXEEXT) : $(UCC_OBJS) files/utils.h usecode/bgintrinsics.h usecode/siintrinsics.h usecode/sibetaintrinsics.h usecode/opcodes.h usecode/ucsymtbl.h
617	$(CXX) $(LDFLAGS) -o $(@) $(UCC_OBJS)
618
619ucparse.cc: usecode/compiler/ucparse.yy
620	bison -d usecode/compiler/ucparse.yy -o ucparse.c
621	mv ucparse.c ucparse.cc
622
623uclex.cc: usecode/compiler/uclex.ll
624	flex usecode/compiler/uclex.ll
625	mv lex.yy.c uclex.cc
626
627UCXT_OBJS:=\
628	$(CONF_OBJS) \
629	$(ZIP_OBJS) \
630	$(FILE_OBJS) \
631	gamemgr/modmgr.o \
632	usecode/ucsymtbl.o \
633	usecode/ucxt/src/ops.o \
634	usecode/ucxt/src/ucdata.o \
635	usecode/ucxt/src/ucfunc.o \
636	usecode/ucxt/src/ucxt.o
637
638ucxt$(EXEEXT) : $(UCXT_OBJS)
639	$(CXX) $(LDFLAGS) -o $(@) $(UCXT_OBJS) $(ZIP_LIBS)
640
641CONFREGRESS_OBJS:=$(CONF_OBJS) conf/xmain.o files/utils.o
642
643confregress$(EXEEXT)  : $(CONFREGRESS_OBJS)
644	$(CXX) $(LDFLAGS) -o $(@) $(CONFREGRESS_OBJS)
645
646TOOL_OBJS:=tools/expack.o $(FILE_OBJS) tools/cmanip.o tools/ipack.o $(IPACK_OBJS) \
647	mapedit/tools/mockup/main.o tools/mklink.o tools/rip.o tools/shp2pcx.o \
648	tools/splitshp.o $(SMOOTH_OBJS) mapedit/tools/smooth/plugins/plugin_smooth.o \
649	mapedit/tools/smooth/plugins/plugin_randomize.o mapedit/tools/smooth/plugins/plugin_stream.o \
650	tools/textpack.o tools/u7voice2syx.o tools/wuc.o $(UCXT_OBJS) $(UCC_OBJS) \
651	$(CONFREGRESS_OBJS) usecode/ucxt/head2data.o tools/gnome_shp_thumbnailer.o
652
653head2data.o : usecode/ucxt/head2data.cc usecode/bgintrinsics.h usecode/siintrinsics.h usecode/sibetaintrinsics.h
654
655head2data$(EXEEXT) : usecode/ucxt/head2data.o $(FILE_OBJS) usecode/bgintrinsics.h usecode/siintrinsics.h usecode/sibetaintrinsics.h
656	$(CXX) $(LDFLAGS) -o $(@) usecode/ucxt/head2data.o $(FILE_OBJS)
657
658head2data.test: head2data$(EXEEXT)
659	$(SRC)/head2data$(EXEEXT) data/u7bgintrinsics.data data/u7siintrinsics.data data/u7sibetaintrinsics.data
660
661clean:
662	rm -f $(OBJS) $(OBJS:%.o=%.d) tools/expack.o $(EXEC) expack$(EXEEXT) tools/ipack.o ipack$(EXEEXT) data/exult.flx data/exult_flx.h data/exult_bg.flx data/exult_bg_flx.h data/exult_si.flx data/exult_si_flx.h data/bg/bg_paperdol.vga data/bg/bg_mr_faces.vga data/bg/bg_paperdol_vga.h data/bg/bg_mr_faces_vga.h
663
664tools:  expack$(EXEEXT) cmanip$(EXEEXT) ipack$(EXEEXT) mklink$(EXEEXT) mockup$(EXEEXT) rip$(EXEEXT) shp2pcx$(EXEEXT) smooth$(EXEEXT) splitshp$(EXEEXT) textpack$(EXEEXT) wuc$(EXEEXT) u7voice2syx$(EXEEXT) ucc$(EXEEXT) ucxt$(EXEEXT)  \
665	$(SRC)/head2data$(EXEEXT) head2data.test libsmooth_randomize$(LIBEXT) libsmooth_smooth$(LIBEXT) libsmooth_stream$(LIBEXT) gnome_shp_thumbnailer$(EXEEXT)
666
667toolsclean:
668	rm -f $(TOOL_OBJS:%.o=%.d)
669	rm -f tools/expack.o expack$(EXEEXT) $(FILE_OBJS)
670	rm -f tools/cmanip.o cmanip$(EXEEXT)
671	rm -f tools/ipack.o ipack$(EXEEXT) $(IPACK_OBJS)
672	rm -f mapedit/tools/mockup/main.o mockup$(EXEEXT)
673	rm -f tools/mklink.o mklink$(EXEEXT)
674	rm -f tools/rip.o rip$(EXEEXT)
675	rm -f tools/shp2pcx.o shp2pcx$(EXEEXT)
676	rm -f tools/splitshp.o splitshp$(EXEEXT)
677	rm -f $(SMOOTH_OBJS) smooth$(EXEEXT)
678	rm -f libsmooth_randomize$(LIBEXT) mapedit/tools/smooth/plugins/plugin_smooth.o
679	rm -f libsmooth_smooth$(LIBEXT) mapedit/tools/smooth/plugins/plugin_randomize.o
680	rm -f libsmooth_stream$(LIBEXT) mapedit/tools/smooth/plugins/plugin_stream.o
681	rm -f tools/textpack.o textpack$(EXEEXT)
682	rm -f tools/u7voice2syx.o u7voice2syx$(EXEEXT)
683	rm -f tools/wuc.o wuc$(EXEEXT)
684	rm -f tools/gnome_shp_thumbnailer.o gnome_shp_thumbnailer$(EXEEXT)
685	rm -f $(UCXT_OBJS) ucxt$(EXEEXT)
686	rm -f $(UCC_OBJS) ucc$(EXEEXT) ucparse.cc ucparse.h uclex.cc
687	rm -f $(CONFREGRESS_OBJS) confregress$(EXEEXT)
688	rm -f usecode/ucxt/head2data.o head2data$(EXEEXT) data/u7bgintrinsics.data data/u7siintrinsics.data data/u7sibetaintrinsics.data
689