1#
2# EDGE Makefile : WIN32 cross-compile
3#
4
5PROGRAM=edge.win32
6
7OBJDIR=obj_win32
8LIBDIR=lib_win32
9
10
11# ----------
12
13# The compiler and compiler flags
14
15CC=i586-mingw32msvc-gcc
16CXX=i586-mingw32msvc-g++
17
18CFLAGS=-O2 -ffast-math -fno-strict-aliasing -Wall
19
20CFLAGS += -I.
21
22
23LDFLAGS=-Wl,--warn-common
24
25LDFLAGS += -lmingw32 -lm
26
27
28# Operating System
29
30CFLAGS += -DWIN32
31
32
33# SDL
34
35CFLAGS += -I$(LIBDIR)/SDL-1.2.13/include
36
37LDFLAGS += -L$(LIBDIR)/SDL-1.2.13/lib
38LDFLAGS += -lSDLmain -lSDL.dll
39
40
41# OpenGL rendering
42
43CFLAGS  += -I$(LIBDIR)/glew-1.4/include
44LDFLAGS += -L$(LIBDIR)/glew-1.4/lib
45LDFLAGS += -lGLEW -lopengl32
46
47
48# PNG, JPEG and ZLIB
49
50CFLAGS  += -I$(LIBDIR)/libpng-1.2.12
51LDFLAGS += -L$(LIBDIR)/libpng-1.2.12
52LDFLAGS += -lpng
53
54CFLAGS  += -I$(LIBDIR)/jpeg-6b
55LDFLAGS += -L$(LIBDIR)/jpeg-6b
56LDFLAGS += -ljpeg
57
58CFLAGS  += -I$(LIBDIR)/zlib-1.2.3
59LDFLAGS += -L$(LIBDIR)/zlib-1.2.3
60LDFLAGS += -lz
61
62
63# OGG/Vorbis
64
65CFLAGS += -DUSE_OGG
66CFLAGS += -I$(LIBDIR)/libogg-1.1.3/include
67CFLAGS += -I$(LIBDIR)/libvorbis-1.1.2/include
68
69LDFLAGS += -L$(LIBDIR)/libogg-1.1.3/src
70LDFLAGS += -L$(LIBDIR)/libvorbis-1.1.2/lib
71LDFLAGS += -lvorbisfile -lvorbis -logg
72
73
74# glBSP
75
76CFLAGS_GLBSP=-O -Wall -fno-strict-aliasing
77
78CFLAGS_GLBSP += -DGLBSP_PLUGIN
79CFLAGS_GLBSP += -DINLINE_G=inline
80
81CFLAGS_GLBSP += -I$(LIBDIR)/zlib-1.2.3
82
83
84# Win32 libs
85
86LDFLAGS += -lwsock32 -lwinmm -lgdi32 -ldxguid -ldinput -mwindows
87
88
89# ----------
90
91# Targets
92
93all: makedirs $(PROGRAM)
94
95stripped: $(PROGRAM)
96	i586-mingw32msvc-strip --strip-unneeded $(PROGRAM)
97
98clean:
99	rm -f $(PROGRAM) $(OBJDIR)/*/*.*
100
101halfclean:
102	rm -f $(PROGRAM) $(OBJDIR)/ddf/*.* $(OBJDIR)/edge/*.*
103
104makedirs:
105	mkdir -p $(OBJDIR)/coal
106	mkdir -p $(OBJDIR)/ddf
107	mkdir -p $(OBJDIR)/deh_edge
108	mkdir -p $(OBJDIR)/edge
109	mkdir -p $(OBJDIR)/epi
110	mkdir -p $(OBJDIR)/glbsp
111	mkdir -p $(OBJDIR)/timidity
112
113.PHONY: all stripped clean halfclean makedirs
114
115
116# ---------- Coal ---------------
117
118COAL_OBJS= \
119	$(OBJDIR)/coal/c_compile.o  \
120	$(OBJDIR)/coal/c_execute.o  \
121	$(OBJDIR)/coal/c_memory.o
122
123$(OBJDIR)/coal/%.o: coal/%.cc
124	$(CXX) $(CFLAGS) -o $@ -c $<
125
126
127# --------- DDF ----------------
128
129DDF_OBJS= \
130	$(OBJDIR)/ddf/anim.o     \
131	$(OBJDIR)/ddf/attack.o   \
132	$(OBJDIR)/ddf/boom.o     \
133	$(OBJDIR)/ddf/colormap.o \
134	$(OBJDIR)/ddf/font.o     \
135	$(OBJDIR)/ddf/game.o     \
136	$(OBJDIR)/ddf/image.o    \
137	$(OBJDIR)/ddf/language.o \
138	$(OBJDIR)/ddf/level.o    \
139	$(OBJDIR)/ddf/line.o     \
140	$(OBJDIR)/ddf/main.o     \
141	$(OBJDIR)/ddf/playlist.o \
142	$(OBJDIR)/ddf/sector.o   \
143	$(OBJDIR)/ddf/sfx.o      \
144	$(OBJDIR)/ddf/states.o   \
145	$(OBJDIR)/ddf/style.o    \
146	$(OBJDIR)/ddf/switch.o   \
147	$(OBJDIR)/ddf/thing.o    \
148	$(OBJDIR)/ddf/weapon.o
149
150$(OBJDIR)/ddf/%.o: ddf/%.cc
151	$(CXX) $(CFLAGS) -o $@ -c $<
152
153
154# ---------- Deh_EDGE ---------------
155
156DEHEDGE_OBJS= \
157	$(OBJDIR)/deh_edge/ammo.o     \
158	$(OBJDIR)/deh_edge/attacks.o  \
159	$(OBJDIR)/deh_edge/buffer.o   \
160	$(OBJDIR)/deh_edge/convert.o  \
161	$(OBJDIR)/deh_edge/frames.o   \
162	$(OBJDIR)/deh_edge/info.o     \
163	$(OBJDIR)/deh_edge/main.o     \
164	$(OBJDIR)/deh_edge/system.o   \
165	$(OBJDIR)/deh_edge/util.o     \
166	$(OBJDIR)/deh_edge/wad.o      \
167	$(OBJDIR)/deh_edge/mobj.o     \
168	$(OBJDIR)/deh_edge/sounds.o   \
169	$(OBJDIR)/deh_edge/things.o   \
170	$(OBJDIR)/deh_edge/weapons.o  \
171	$(OBJDIR)/deh_edge/misc.o     \
172	$(OBJDIR)/deh_edge/text.o     \
173	$(OBJDIR)/deh_edge/storage.o  \
174	$(OBJDIR)/deh_edge/patch.o    \
175	$(OBJDIR)/deh_edge/rscript.o
176
177$(OBJDIR)/deh_edge/%.o: deh_edge/%.cc
178	$(CXX) $(CFLAGS) -DDEH_EDGE_PLUGIN -o $@ -c $<
179
180
181# ---------- EDGE ---------------
182
183EDGE_OBJS= \
184	$(OBJDIR)/edge/i_main.o     \
185	$(OBJDIR)/edge/i_ctrl.o     \
186	$(OBJDIR)/edge/i_video.o    \
187	$(OBJDIR)/edge/i_sound.o    \
188	$(OBJDIR)/edge/i_net.o      \
189	$(OBJDIR)/edge/am_map.o     \
190	$(OBJDIR)/edge/con_con.o    \
191	$(OBJDIR)/edge/con_main.o   \
192	$(OBJDIR)/edge/con_link.o   \
193	$(OBJDIR)/edge/con_var.o    \
194	$(OBJDIR)/edge/e_input.o    \
195	$(OBJDIR)/edge/e_main.o     \
196	$(OBJDIR)/edge/e_player.o   \
197	$(OBJDIR)/edge/f_finale.o   \
198	$(OBJDIR)/edge/f_interm.o   \
199	$(OBJDIR)/edge/g_game.o     \
200	$(OBJDIR)/edge/hu_draw.o    \
201	$(OBJDIR)/edge/hu_font.o    \
202	$(OBJDIR)/edge/hu_stuff.o   \
203	$(OBJDIR)/edge/hu_style.o   \
204	$(OBJDIR)/edge/l_glbsp.o    \
205	$(OBJDIR)/edge/l_deh.o      \
206	$(OBJDIR)/edge/m_argv.o     \
207	$(OBJDIR)/edge/m_bbox.o     \
208	$(OBJDIR)/edge/m_cheat.o    \
209	$(OBJDIR)/edge/m_math.o     \
210	$(OBJDIR)/edge/m_menu.o     \
211	$(OBJDIR)/edge/m_misc.o     \
212	$(OBJDIR)/edge/m_option.o   \
213	$(OBJDIR)/edge/m_netgame.o  \
214	$(OBJDIR)/edge/m_random.o   \
215	$(OBJDIR)/edge/n_bcast.o    \
216	$(OBJDIR)/edge/n_reliable.o \
217	$(OBJDIR)/edge/n_network.o  \
218	$(OBJDIR)/edge/p_action.o   \
219	$(OBJDIR)/edge/p_blockmap.o \
220	$(OBJDIR)/edge/p_bot.o      \
221	$(OBJDIR)/edge/p_enemy.o    \
222	$(OBJDIR)/edge/p_inter.o    \
223	$(OBJDIR)/edge/p_lights.o   \
224	$(OBJDIR)/edge/p_map.o      \
225	$(OBJDIR)/edge/p_maputl.o   \
226	$(OBJDIR)/edge/p_mobj.o     \
227	$(OBJDIR)/edge/p_plane.o    \
228	$(OBJDIR)/edge/p_setup.o    \
229	$(OBJDIR)/edge/p_sight.o    \
230	$(OBJDIR)/edge/p_spec.o     \
231	$(OBJDIR)/edge/p_switch.o   \
232	$(OBJDIR)/edge/p_tick.o     \
233	$(OBJDIR)/edge/p_user.o     \
234	$(OBJDIR)/edge/p_forces.o   \
235	$(OBJDIR)/edge/p_telept.o   \
236	$(OBJDIR)/edge/p_weapon.o   \
237	$(OBJDIR)/edge/rad_act.o    \
238	$(OBJDIR)/edge/rad_pars.o   \
239	$(OBJDIR)/edge/rad_trig.o   \
240	$(OBJDIR)/edge/r_draw.o     \
241	$(OBJDIR)/edge/r_shader.o   \
242	$(OBJDIR)/edge/r_render.o   \
243	$(OBJDIR)/edge/r_effects.o  \
244	$(OBJDIR)/edge/r_main.o     \
245	$(OBJDIR)/edge/r_occlude.o  \
246	$(OBJDIR)/edge/m_logo.o     \
247	$(OBJDIR)/edge/r_things.o   \
248	$(OBJDIR)/edge/r_units.o    \
249	$(OBJDIR)/edge/r_wipe.o     \
250	$(OBJDIR)/edge/r_misc.o     \
251	$(OBJDIR)/edge/r_sky.o      \
252	$(OBJDIR)/edge/r_colormap.o \
253	$(OBJDIR)/edge/r_modes.o    \
254	$(OBJDIR)/edge/r_md2.o      \
255	$(OBJDIR)/edge/r_image.o    \
256	$(OBJDIR)/edge/r_doomtex.o  \
257	$(OBJDIR)/edge/r_texgl.o    \
258	$(OBJDIR)/edge/s_blit.o     \
259	$(OBJDIR)/edge/s_cache.o    \
260	$(OBJDIR)/edge/s_sound.o    \
261	$(OBJDIR)/edge/s_music.o    \
262	$(OBJDIR)/edge/s_ogg.o      \
263	$(OBJDIR)/edge/s_timid.o    \
264	$(OBJDIR)/edge/sv_chunk.o   \
265	$(OBJDIR)/edge/sv_glob.o    \
266	$(OBJDIR)/edge/sv_level.o   \
267	$(OBJDIR)/edge/sv_load.o    \
268	$(OBJDIR)/edge/sv_main.o    \
269	$(OBJDIR)/edge/sv_misc.o    \
270	$(OBJDIR)/edge/sv_mobj.o    \
271	$(OBJDIR)/edge/sv_play.o    \
272	$(OBJDIR)/edge/sv_save.o    \
273	$(OBJDIR)/edge/w_flat.o     \
274	$(OBJDIR)/edge/w_model.o    \
275	$(OBJDIR)/edge/w_sprite.o   \
276	$(OBJDIR)/edge/w_texture.o  \
277	$(OBJDIR)/edge/w_wad.o      \
278	$(OBJDIR)/edge/z_zone.o     \
279	$(OBJDIR)/edge/vm_coal.o    \
280	$(OBJDIR)/edge/vm_hud.o     \
281	$(OBJDIR)/edge/vm_player.o  \
282	$(OBJDIR)/edge/w32_music.o  \
283	$(OBJDIR)/edge/w32_mus.o    \
284	$(OBJDIR)/edge/w32_net.o    \
285	$(OBJDIR)/edge/w32_res.o    \
286	$(OBJDIR)/edge/w32_system.o
287
288$(OBJDIR)/edge/w32_res.o: src/w32_res.rc
289	i586-mingw32msvc-windres $^ -o $@
290
291$(OBJDIR)/edge/%.o: src/%.cc
292	$(CXX) $(CFLAGS) -o $@ -c $<
293
294
295# ---------- EPI ---------------
296
297EPI_OBJS= \
298	$(OBJDIR)/epi/arrays.o       \
299	$(OBJDIR)/epi/bytearray.o    \
300	$(OBJDIR)/epi/exe_path.o     \
301	$(OBJDIR)/epi/file.o         \
302	$(OBJDIR)/epi/filesystem.o   \
303	$(OBJDIR)/epi/file_memory.o  \
304	$(OBJDIR)/epi/file_sub.o     \
305	$(OBJDIR)/epi/image_data.o   \
306	$(OBJDIR)/epi/image_hq2x.o   \
307	$(OBJDIR)/epi/image_jpeg.o   \
308	$(OBJDIR)/epi/image_png.o    \
309	$(OBJDIR)/epi/image_tga.o    \
310	$(OBJDIR)/epi/math_angle.o   \
311	$(OBJDIR)/epi/math_bbox.o    \
312	$(OBJDIR)/epi/math_color.o   \
313	$(OBJDIR)/epi/math_crc.o     \
314	$(OBJDIR)/epi/math_md5.o     \
315	$(OBJDIR)/epi/math_oddity.o  \
316	$(OBJDIR)/epi/math_matrix.o  \
317	$(OBJDIR)/epi/math_vector.o  \
318	$(OBJDIR)/epi/math_random.o  \
319	$(OBJDIR)/epi/mersenne_twist.o \
320	$(OBJDIR)/epi/mus_2_midi.o   \
321	$(OBJDIR)/epi/path.o         \
322	$(OBJDIR)/epi/str_format.o   \
323	$(OBJDIR)/epi/sound_data.o   \
324	$(OBJDIR)/epi/sound_gather.o \
325	$(OBJDIR)/epi/sound_wav.o    \
326	$(OBJDIR)/epi/timestamp.o    \
327	$(OBJDIR)/epi/utility.o      \
328	$(OBJDIR)/epi/epi_win32.o    \
329	$(OBJDIR)/epi/filesystem_win32.o
330
331$(OBJDIR)/epi/%.o: epi/%.cc
332	$(CXX) $(CFLAGS) -o $@ -c $<
333
334
335# ---------- glBSP ---------------
336
337GLBSP_OBJS= \
338	$(OBJDIR)/glbsp/analyze.o  \
339	$(OBJDIR)/glbsp/blockmap.o \
340	$(OBJDIR)/glbsp/glbsp.o    \
341	$(OBJDIR)/glbsp/level.o    \
342	$(OBJDIR)/glbsp/node.o     \
343	$(OBJDIR)/glbsp/reject.o   \
344	$(OBJDIR)/glbsp/seg.o      \
345	$(OBJDIR)/glbsp/system.o   \
346	$(OBJDIR)/glbsp/util.o     \
347	$(OBJDIR)/glbsp/wad.o
348
349$(OBJDIR)/glbsp/%.o: glbsp/src/%.c
350	$(CC) $(CFLAGS_GLBSP) -o $@ -c $<
351
352
353# ---------- Timidity ---------------
354
355TIMIDITY_OBJS= \
356	$(OBJDIR)/timidity/common.o    \
357	$(OBJDIR)/timidity/instrum.o   \
358	$(OBJDIR)/timidity/mix.o       \
359	$(OBJDIR)/timidity/playmidi.o  \
360	$(OBJDIR)/timidity/loadmidi.o  \
361	$(OBJDIR)/timidity/resample.o  \
362	$(OBJDIR)/timidity/tables.o    \
363	$(OBJDIR)/timidity/timidity.o
364
365$(OBJDIR)/timidity/%.o: timidity/%.cc
366	$(CXX) $(CFLAGS) -o $@ -c $<
367
368
369
370# ---------- FINAL LINK STEP -----------
371
372$(PROGRAM) : $(COAL_OBJS) \
373             $(DDF_OBJS)  \
374	     $(DEHEDGE_OBJS) \
375	     $(EDGE_OBJS) \
376	     $(EPI_OBJS) \
377	     $(GLBSP_OBJS) \
378	     $(TIMIDITY_OBJS)
379	$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
380
381
382#--- editor settings ------------
383# vi:ts=8:sw=8:noexpandtab
384