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