1#
2# Quake Makefile for Linux 2.0
3#
4# Aug '98 by Zoid <zoid@idsoftware.com>
5# modified for tenebrae by fabe <der.fabe@gmx.net>
6# more modification by the tenebrae team
7#
8# ELF only
9#
10
11BASEVERSION=1.09
12VERSION=$(BASEVERSION)$(GLIBC)
13
14GLIBC=.glibc
15
16ARCH=i386
17NOARCH=noarch
18
19MOUNT_DIR     = ../
20
21MASTER_DIR    = ${Q1DIR}
22
23BUILD_DEBUG_DIR = debug$(ARCH)$(GLIBC)
24BUILD_RELEASE_DIR = release
25
26LEX           ?= /usr/bin/flex -i -Cfr
27#CC            = /usr/bin/gcc
28
29X11_LIBS      = -L${LOCALBASE}/lib -lX11 -lXext -lXxf86dga -lXxf86vm
30
31# to enable OpenGL code in source
32OPENGL_CFLAGS = -D__glx__ -DGLQUAKE -I${LOCALBASE}/include
33OPENGL_LIBS   = -lGL -lGLU
34
35PNG_LIBS      = -L${LOCALBASE}/lib -lpng -lz
36
37#OPENAL_LIBS   = -lopenal
38#OPENAL_CFLAGS = -DOPENAL -I${LOCALBASE}/include/AL
39
40BASE_CFLAGS   = -DBASEDIR="$(MASTER_DIR)" -DUSERPREF_DIR $(OPENGL_CFLAGS) $(OPENAL_CFLAGS) -I$(MOUNT_DIR) -I${LOCALBASE}/include `${SDL_CONFIG} --cflags`
41RELEASE_CFLAGS = $(BASE_CFLAGS) -ffast-math -funroll-loops \
42	-fomit-frame-pointer -fexpensive-optimizations
43DEBUG_CFLAGS  = $(BASE_CFLAGS) -g
44LDFLAGS       += -lm $(X11_LIBS) $(OPENGL_LIBS) $(PNG_LIBS) $(OPENAL_LIBS) `${SDL_CONFIG} --libs`
45
46DO_GL_CC      = $(CC) $(CFLAGS) -o $@ -c $<
47DO_GL_AS      = $(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
48DO_LEX        = $(LEX) -o$@ $<
49
50ifdef USE_ASM
51BASE_CFLAGS += -DUSE_ASM
52endif
53
54#############################################################################
55# SETUP AND BUILD
56#############################################################################
57
58TARGETS=$(BUILDDIR)/bin/tenebrae
59
60all: build_release
61
62targets: $(TARGETS)
63
64build_debug:
65	@-mkdir -p $(BUILD_DEBUG_DIR) \
66		$(BUILD_DEBUG_DIR)/bin \
67		$(BUILD_DEBUG_DIR)/glquake
68	$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS+="$(DEBUG_CFLAGS)"
69
70build_release:
71	@-mkdir -p $(BUILD_RELEASE_DIR) \
72		$(BUILD_RELEASE_DIR)/bin \
73		$(BUILD_RELEASE_DIR)/glquake
74	$(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS+="$(RELEASE_CFLAGS)"
75
76#############################################################################
77# GLQuake
78#############################################################################
79
80GLQUAKE_OBJS= \
81	$(BUILDDIR)/glquake/cl_demo.o \
82	$(BUILDDIR)/glquake/cl_input.o \
83	$(BUILDDIR)/glquake/cl_main.o \
84	$(BUILDDIR)/glquake/cl_parse.o \
85	$(BUILDDIR)/glquake/cl_tent.o \
86	$(BUILDDIR)/glquake/chase.o \
87	$(BUILDDIR)/glquake/cmd.o \
88	$(BUILDDIR)/glquake/common.o \
89	$(BUILDDIR)/glquake/console.o \
90	$(BUILDDIR)/glquake/crc.o \
91	$(BUILDDIR)/glquake/cvar.o \
92	\
93	$(BUILDDIR)/glquake/gl_aliasinstant.o \
94	$(BUILDDIR)/glquake/gl_brushinstant.o \
95	$(BUILDDIR)/glquake/gl_bumpdriver.o \
96	$(BUILDDIR)/glquake/gl_bumpgf.o \
97	$(BUILDDIR)/glquake/gl_bumparb.o \
98	$(BUILDDIR)/glquake/gl_bumpmap.o \
99	$(BUILDDIR)/glquake/gl_bumpparhelia.o \
100	$(BUILDDIR)/glquake/gl_bumpradeon.o \
101	$(BUILDDIR)/glquake/gl_common.o \
102	$(BUILDDIR)/glquake/gl_draw.o \
103	$(BUILDDIR)/glquake/gl_decals.o \
104	$(BUILDDIR)/glquake/gl_glare.o \
105	$(BUILDDIR)/glquake/gl_md3.o \
106	$(BUILDDIR)/glquake/gl_mesh.o \
107	$(BUILDDIR)/glquake/gl_model.o \
108	$(BUILDDIR)/glquake/gl_refrag.o \
109	$(BUILDDIR)/glquake/gl_rlight.o \
110	$(BUILDDIR)/glquake/gl_rmain.o \
111	$(BUILDDIR)/glquake/gl_rmisc.o \
112	$(BUILDDIR)/glquake/gl_rsurf.o \
113	$(BUILDDIR)/glquake/gl_screen.o \
114	$(BUILDDIR)/glquake/gl_screenrect.o \
115	$(BUILDDIR)/glquake/gl_shadow.o \
116	$(BUILDDIR)/glquake/gl_svbsp.o \
117	$(BUILDDIR)/glquake/gl_test.o \
118	$(BUILDDIR)/glquake/gl_warp.o \
119	\
120	$(BUILDDIR)/glquake/host.o \
121	$(BUILDDIR)/glquake/host_cmd.o \
122	$(BUILDDIR)/glquake/keys.o \
123	$(BUILDDIR)/glquake/menu.o \
124	$(BUILDDIR)/glquake/mathlib.o \
125	$(BUILDDIR)/glquake/net_dgrm.o \
126	$(BUILDDIR)/glquake/net_loop.o \
127	$(BUILDDIR)/glquake/net_main.o \
128	$(BUILDDIR)/glquake/net_vcr.o \
129	$(BUILDDIR)/glquake/net_udp.o \
130	$(BUILDDIR)/glquake/net_bsd.o \
131	$(BUILDDIR)/glquake/pr_cmds.o \
132	$(BUILDDIR)/glquake/pr_edict.o \
133	$(BUILDDIR)/glquake/pr_exec.o \
134	$(BUILDDIR)/glquake/r_part.o \
135	$(BUILDDIR)/glquake/sbar.o \
136	$(BUILDDIR)/glquake/sv_main.o \
137	$(BUILDDIR)/glquake/sv_phys.o \
138	$(BUILDDIR)/glquake/sv_move.o \
139	$(BUILDDIR)/glquake/sv_user.o \
140	$(BUILDDIR)/glquake/zone.o	\
141	$(BUILDDIR)/glquake/view.o	\
142	$(BUILDDIR)/glquake/wad.o \
143	$(BUILDDIR)/glquake/world.o \
144	$(BUILDDIR)/glquake/cd_linux.o \
145	$(BUILDDIR)/glquake/sys_linux.o \
146	$(BUILDDIR)/glquake/sys_uxfindfirst.o \
147	$(BUILDDIR)/glquake/snd_dma.o \
148	$(BUILDDIR)/glquake/snd_mem.o \
149	$(BUILDDIR)/glquake/snd_mix.o \
150	$(BUILDDIR)/glquake/snd_sdl.o \
151	$(BUILDDIR)/glquake/gl_vidlinuxglx.o \
152	$(BUILDDIR)/glquake/math.o \
153	$(BUILDDIR)/glquake/worlda.o \
154	$(BUILDDIR)/glquake/snd_mixa.o \
155	$(BUILDDIR)/glquake/sys_dosa.o \
156	\
157	$(BUILDDIR)/glquake/lex.yy.o \
158	$(BUILDDIR)/glquake/te_scripts.o
159
160
161$(BUILDDIR)/bin/tenebrae : $(GLQUAKE_OBJS)
162	$(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(LDFLAGS)
163
164$(BUILDDIR)/glquake/cl_demo.o :      $(MOUNT_DIR)/cl_demo.c
165	$(DO_GL_CC)
166
167$(BUILDDIR)/glquake/cl_input.o :     $(MOUNT_DIR)/cl_input.c
168	$(DO_GL_CC)
169
170$(BUILDDIR)/glquake/cl_main.o :      $(MOUNT_DIR)/cl_main.c
171	$(DO_GL_CC)
172
173$(BUILDDIR)/glquake/cl_parse.o :     $(MOUNT_DIR)/cl_parse.c
174	$(DO_GL_CC)
175
176$(BUILDDIR)/glquake/cl_tent.o :      $(MOUNT_DIR)/cl_tent.c
177	$(DO_GL_CC)
178
179$(BUILDDIR)/glquake/chase.o :        $(MOUNT_DIR)/chase.c
180	$(DO_GL_CC)
181
182$(BUILDDIR)/glquake/cmd.o :          $(MOUNT_DIR)/cmd.c
183	$(DO_GL_CC)
184
185$(BUILDDIR)/glquake/common.o :       $(MOUNT_DIR)/common.c
186	$(DO_GL_CC)
187
188$(BUILDDIR)/glquake/console.o :      $(MOUNT_DIR)/console.c
189	$(DO_GL_CC)
190
191$(BUILDDIR)/glquake/crc.o :          $(MOUNT_DIR)/crc.c
192	$(DO_GL_CC)
193
194$(BUILDDIR)/glquake/cvar.o :         $(MOUNT_DIR)/cvar.c
195	$(DO_GL_CC)
196
197$(BUILDDIR)/glquake/gl_aliasinstant.o :      $(MOUNT_DIR)/gl_aliasinstant.c
198	$(DO_GL_CC)
199
200$(BUILDDIR)/glquake/gl_draw.o :      $(MOUNT_DIR)/gl_draw.c
201	$(DO_GL_CC)
202
203$(BUILDDIR)/glquake/gl_brushinstant.o :      $(MOUNT_DIR)/gl_brushinstant.c
204	$(DO_GL_CC)
205
206$(BUILDDIR)/glquake/gl_bumpdriver.o :      $(MOUNT_DIR)/gl_bumpdriver.c
207	$(DO_GL_CC)
208
209$(BUILDDIR)/glquake/gl_bumpgf.o :      $(MOUNT_DIR)/gl_bumpgf.c
210	$(DO_GL_CC)
211
212$(BUILDDIR)/glquake/gl_bumparb.o :      $(MOUNT_DIR)/gl_bumparb.c
213	$(DO_GL_CC)
214
215$(BUILDDIR)/glquake/gl_bumpmap.o :      $(MOUNT_DIR)/gl_bumpmap.c
216	$(DO_GL_CC)
217
218$(BUILDDIR)/glquake/gl_bumpparhelia.o :      $(MOUNT_DIR)/gl_bumpparhelia.c
219	$(DO_GL_CC)
220
221$(BUILDDIR)/glquake/gl_bumpradeon.o :      $(MOUNT_DIR)/gl_bumpradeon.c
222	$(DO_GL_CC)
223
224$(BUILDDIR)/glquake/gl_common.o :      $(MOUNT_DIR)/gl_common.c
225	$(DO_GL_CC)
226
227$(BUILDDIR)/glquake/gl_decals.o :      $(MOUNT_DIR)/gl_decals.c
228	$(DO_GL_CC)
229
230$(BUILDDIR)/glquake/gl_glare.o :      $(MOUNT_DIR)/gl_glare.c
231	$(DO_GL_CC)
232
233$(BUILDDIR)/glquake/gl_mesh.o :      $(MOUNT_DIR)/gl_mesh.c
234	$(DO_GL_CC)
235
236$(BUILDDIR)/glquake/gl_md3.o :      $(MOUNT_DIR)/gl_md3.c
237	$(DO_GL_CC)
238
239$(BUILDDIR)/glquake/gl_model.o :     $(MOUNT_DIR)/gl_model.c
240	$(DO_GL_CC)
241
242$(BUILDDIR)/glquake/gl_refrag.o :    $(MOUNT_DIR)/gl_refrag.c
243	$(DO_GL_CC)
244
245$(BUILDDIR)/glquake/gl_rlight.o :    $(MOUNT_DIR)/gl_rlight.c
246	$(DO_GL_CC)
247
248$(BUILDDIR)/glquake/gl_rmain.o :     $(MOUNT_DIR)/gl_rmain.c
249	$(DO_GL_CC)
250
251$(BUILDDIR)/glquake/gl_rmisc.o :     $(MOUNT_DIR)/gl_rmisc.c
252	$(DO_GL_CC)
253
254$(BUILDDIR)/glquake/gl_rsurf.o :     $(MOUNT_DIR)/gl_rsurf.c
255	$(DO_GL_CC)
256
257$(BUILDDIR)/glquake/gl_screen.o :    $(MOUNT_DIR)/gl_screen.c
258	$(DO_GL_CC)
259
260$(BUILDDIR)/glquake/gl_screenrect.o :    $(MOUNT_DIR)/gl_screenrect.c
261	$(DO_GL_CC)
262
263$(BUILDDIR)/glquake/gl_shadow.o :    $(MOUNT_DIR)/gl_shadow.c
264	$(DO_GL_CC)
265
266$(BUILDDIR)/glquake/gl_svbsp.o :    $(MOUNT_DIR)/gl_svbsp.c
267	$(DO_GL_CC)
268
269$(BUILDDIR)/glquake/gl_test.o :      $(MOUNT_DIR)/gl_test.c
270	$(DO_GL_CC)
271
272$(BUILDDIR)/glquake/gl_vidlinuxglx.o :  $(MOUNT_DIR)/gl_vidlinuxglx.c
273	$(DO_GL_CC)
274
275$(BUILDDIR)/glquake/gl_warp.o :      $(MOUNT_DIR)/gl_warp.c
276	$(DO_GL_CC)
277
278$(BUILDDIR)/glquake/host.o :         $(MOUNT_DIR)/host.c
279	$(DO_GL_CC)
280
281$(BUILDDIR)/glquake/host_cmd.o :     $(MOUNT_DIR)/host_cmd.c
282	$(DO_GL_CC)
283
284$(BUILDDIR)/glquake/keys.o :         $(MOUNT_DIR)/keys.c
285	$(DO_GL_CC)
286
287$(BUILDDIR)/glquake/menu.o :         $(MOUNT_DIR)/menu.c
288	$(DO_GL_CC)
289
290$(BUILDDIR)/glquake/mathlib.o :      $(MOUNT_DIR)/mathlib.c
291	$(DO_GL_CC)
292
293$(BUILDDIR)/glquake/net_dgrm.o :     $(MOUNT_DIR)/net_dgrm.c
294	$(DO_GL_CC)
295
296$(BUILDDIR)/glquake/net_loop.o :     $(MOUNT_DIR)/net_loop.c
297	$(DO_GL_CC)
298
299$(BUILDDIR)/glquake/net_main.o :     $(MOUNT_DIR)/net_main.c
300	$(DO_GL_CC)
301
302$(BUILDDIR)/glquake/net_vcr.o :      $(MOUNT_DIR)/net_vcr.c
303	$(DO_GL_CC)
304
305$(BUILDDIR)/glquake/net_udp.o :      $(MOUNT_DIR)/net_udp.c
306	$(DO_GL_CC)
307
308$(BUILDDIR)/glquake/net_bsd.o :      $(MOUNT_DIR)/net_bsd.c
309	$(DO_GL_CC)
310
311$(BUILDDIR)/glquake/pr_cmds.o :      $(MOUNT_DIR)/pr_cmds.c
312	$(DO_GL_CC)
313
314$(BUILDDIR)/glquake/pr_edict.o :     $(MOUNT_DIR)/pr_edict.c
315	$(DO_GL_CC)
316
317$(BUILDDIR)/glquake/pr_exec.o :      $(MOUNT_DIR)/pr_exec.c
318	$(DO_GL_CC)
319
320$(BUILDDIR)/glquake/r_part.o :       $(MOUNT_DIR)/r_part.c
321	$(DO_GL_CC)
322
323$(BUILDDIR)/glquake/sbar.o :         $(MOUNT_DIR)/sbar.c
324	$(DO_GL_CC)
325
326$(BUILDDIR)/glquake/sv_main.o :      $(MOUNT_DIR)/sv_main.c
327	$(DO_GL_CC)
328
329$(BUILDDIR)/glquake/sv_phys.o :      $(MOUNT_DIR)/sv_phys.c
330	$(DO_GL_CC)
331
332$(BUILDDIR)/glquake/sv_move.o :      $(MOUNT_DIR)/sv_move.c
333	$(DO_GL_CC)
334
335$(BUILDDIR)/glquake/sv_user.o :      $(MOUNT_DIR)/sv_user.c
336	$(DO_GL_CC)
337
338$(BUILDDIR)/glquake/zone.o	:        $(MOUNT_DIR)/zone.c
339	$(DO_GL_CC)
340
341$(BUILDDIR)/glquake/view.o	:        $(MOUNT_DIR)/view.c
342	$(DO_GL_CC)
343
344$(BUILDDIR)/glquake/wad.o :          $(MOUNT_DIR)/wad.c
345	$(DO_GL_CC)
346
347$(BUILDDIR)/glquake/world.o :        $(MOUNT_DIR)/world.c
348	$(DO_GL_CC)
349
350$(BUILDDIR)/glquake/cd_linux.o :     $(MOUNT_DIR)/cd_linux.c
351	$(DO_GL_CC)
352
353$(BUILDDIR)/glquake/sys_linux.o :    $(MOUNT_DIR)/sys_linux.c
354	$(DO_GL_CC)
355
356$(BUILDDIR)/glquake/sys_uxfindfirst.o :    $(MOUNT_DIR)/sys_uxfindfirst.c
357	$(DO_GL_CC)
358
359$(BUILDDIR)/glquake/snd_dma.o :      $(MOUNT_DIR)/snd_dma.c
360	$(DO_GL_CC)
361
362$(BUILDDIR)/glquake/snd_mem.o :      $(MOUNT_DIR)/snd_mem.c
363	$(DO_GL_CC)
364
365$(BUILDDIR)/glquake/snd_mix.o :      $(MOUNT_DIR)/snd_mix.c
366	$(DO_GL_CC)
367
368$(BUILDDIR)/glquake/snd_sdl.o :    $(MOUNT_DIR)/snd_sdl.c
369	$(DO_GL_CC)
370
371$(BUILDDIR)/glquake/math.o :         $(MOUNT_DIR)/math.s
372	$(DO_GL_AS)
373
374$(BUILDDIR)/glquake/worlda.o :       $(MOUNT_DIR)/worlda.s
375	$(DO_GL_AS)
376
377$(BUILDDIR)/glquake/snd_mixa.o :     $(MOUNT_DIR)/snd_mixa.s
378	$(DO_GL_AS)
379
380$(BUILDDIR)/glquake/sys_dosa.o :     $(MOUNT_DIR)/sys_dosa.s
381	$(DO_GL_AS)
382
383$(MOUNT_DIR)/lex.yy.c :     $(MOUNT_DIR)/lex_part.l
384	$(DO_LEX)
385
386$(BUILDDIR)/glquake/lex.yy.o : $(MOUNT_DIR)/lex.yy.c
387	$(DO_GL_CC)
388
389$(BUILDDIR)/glquake/te_scripts.o :  $(MOUNT_DIR)/te_scripts.c $(MOUNT_DIR)/te_scripts.h
390	$(DO_GL_CC)
391
392
393#############################################################################
394# MISC
395#############################################################################
396
397clean: clean-debug clean-release
398	rm -f glquake.spec
399
400clean-debug:
401	$(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"
402
403clean-release:
404	$(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)"
405
406clean2:
407	-rm -f $(GLQUAKE_OBJS)
408
409
410