1# Makefile for Linux Heretic/GLHeretic
2
3# Comment the line below if you don't want to build GLHeretic.
4#WANT_OGL = yes
5
6# Comment this if you don't want to build GLHeretic
7# with highest quality options.
8# (Only if you have WANT_OGL !)
9#WANT_NICE_OGL = yes
10
11
12# Uncomment the line below if you want to use GSI for sound.
13# (doesn't really work yet. :-()
14#WANT_GSI = yes
15
16#CC = gcc -pipe
17
18#
19# For old SVGALIB, comment out -D__NEWVGALIB__
20#
21CDEFS.ipx = -DUNIX -DHAVE_USLEEP -DHAVE_MATH_H -DHAVE_VALUES_H -DLINUX_MOUSE \
22	-DIPX_PROTOCOL -DI_GGI_HERETIC -DNEED_SHMGETEVENTBASE \
23	-D__NEWVGALIB__ # -DIPX_DEBUG -DEXTRA_WADS
24CDEFS.udp = -DUNIX -DHAVE_USLEEP -DHAVE_MATH_H -DLINUX_MOUSE \
25	-DUDP_PROTOCOL -DI_GGI_HERETIC -DNEED_SHMGETEVENTBASE \
26	-D__NEWVGALIB__ # -DEXTRA_WADS
27
28CDEFS.solaris = -DUNIX -DHAVE_USLEEP -DHAVE_MATH_H -DHAVE_VALUES_H \
29	-DUDP_PROTOCOL -DNEED_SHMGETEVENTBASE -DSOLARIS
30
31# Plattform specific definitions
32# _begin_
33COPT.x86 = -O2 -fomit-frame-pointer -mcpu=i586 -march=i586 -D__32BIT__ \
34		-DHAVE_ALLOCA_H -DINLINE_FIXED
35
36COPT.m68k = -m68020-60 -O2 -fomit-frame-pointer -D__BIG_ENDIAN__ -D__32BIT__ \
37		-DHAVE_ALLOCA_H
38
39COPT.alpha = -O2 -D__64BIT__ -DHAVE_ALLOCA_H
40
41COPT.FreeBSD = -D__32BIT__ -DHOMEDIR='"\"${PREFIX}/share/heretic\""'
42
43COPT.arm = -O2 -D__32BIT__ -fsigned-char -fomit-frame-pointer \
44           -DHAVE_ALLOCA_H -D__PACKED__=__attribute__\ \(\(packed\)\)
45
46COPT.sparc = -O2  -D__BIG_ENDIAN__ -D__32BIT__ -mcpu=v8 \
47           -DHAVE_ALLOCA_H -D__PACKED__=__attribute__\ \(\(packed\)\)
48# _end_
49
50ifeq ($(WANT_OGL),yes)
51COPT.opengl = -Iopengl -DGL_HERETIC -I/usr/X11R6/include
52
53ifeq ($(WANT_NICE_OGL),yes)
54COPT.opengl += -DNICE_GL
55endif
56
57endif
58
59# Change this to change the platform
60COPT.arch = $(COPT.FreeBSD)
61
62# If you want IPX-netcode compiled, replace $(CDEFS.udp) with $(CDEFS.ipx)
63
64CFLAGS += $(CDEFS.udp) $(COPT.arch) \
65	 -I. -I.. -I${LOCALBASE}/include -I${LOCALBASE}/include $(COPT.sound) $(COPT.opengl)
66
67# Uncomment the line below if you want to use original "[" and "]" keys
68# for inventory access, instead of "k" and "l".
69#CFLAGS += -DORIG_INVKEYS
70
71ifeq ($(WANT_GSI),yes)
72SOUND_OBJS = gsisound/i_sound.o gsisound/soundst.o gsisound/sounds.o \
73	     gsisound/gsi.o m_misc.o
74SOUND_REFS = gsisound/i_sound.c gsisound/soundst.c gsisound/sounds.c \
75	     gsisound/gsi.c m_misc.c
76
77COPT.sound = -D__DOSOUND__ -D__DOMUSIC__ -DUSE_GSI -Igsisound
78X11LIBS = -Xext -lX11 -lm
79else
80SOUND_OBJS = soundclient/i_sound.o soundclient/soundst.o soundclient/sounds.o \
81	     m_misc.o
82SOUND_REFS = soundclient/i_sound.c soundclient/soundst.c soundclient/sounds.c \
83	     m_misc.c
84
85COPT.sound = -D__DOSOUND__ -DSNDSERV -Isoundclient -D__DOMUSIC__ -DMUSSERV # -D_DEBUGSOUND
86X11LIBS = -lXext -lX11
87
88#MUSSERV = musserver
89SNDSERV = sndserver
90
91endif
92
93X_LDFLAGS = -L${LOCALBASE}/lib
94
95X11LIBS = -lXext -lX11
96GLLIBS  = `${SDL_CONFIG} --libs` -lpthread
97GGILIBS = -lggi -lm
98VGALIBS = -lvga
99SDLLIBS = `${SDL_CONFIG} --libs` -lpthread
100
101OBJS =	am_map.o ct_chat.o d_main.o d_net.o f_finale.o g_game.o \
102	p_ceilng.o p_doors.o p_enemy.o p_floor.o p_inter.o p_lights.o \
103	p_map.o p_maputl.o p_mobj.o p_plats.o p_pspr.o p_setup.o p_sight.o \
104	p_spec.o p_switch.o p_telept.o  p_tick.o p_user.o r_bsp.o r_data.o \
105	r_draw.o r_plane.o r_segs.o r_things.o r_main.o mn_menu.o sb_bar.o \
106	tables.o v_video.o w_wad.o z_zone.o in_lude.o \
107	info.o i_net.o i_system.o i_udp.o i_main.o $(SOUND_OBJS)
108
109GLOBJS = opengl/gl_effects.o opengl/gl_floorceil.o opengl/gl_fonts.o \
110	 opengl/gl_func.o opengl/gl_init.o opengl/gl_lights.o \
111	 opengl/gl_sprites.o opengl/gl_texture.o opengl/gl_walls.o \
112	 opengl/gl_weapon.o opengl/loadlum.o opengl/gl_mem.o
113
114all:
115	@echo "Choose one of following actions:"
116	@echo
117ifeq ($(WANT_OGL),yes)
118	@echo " make glheretic - will build GLHeretic - needs OpenGL hardware accelleration"
119	@echo
120else
121	@echo " make x11       - will build xheretic - runs under X11"
122	@echo
123	@echo " make fastx11   - will build xaheretic (fast X-version) - runs under X11"
124	@echo
125	@echo " make ggi       - will build ggiheretic - runs under GGI"
126	@echo
127	@echo " make vga       - will build vgaheretic - runs under SVGAlib"
128	@echo
129	@echo " make sdl       - will build sdlheretic - runs under SDL-lib"
130	@echo
131endif
132	@echo " make sndserver - will build the soundserver for Heretic"
133	@echo
134	@echo " make musserver - will build the musicserver (from lxdoom) for Heretic"
135	@echo
136	@echo " make clean     - will clean up object and exec files"
137	@echo
138
139clean:
140	rm -f $(OBJS) $(GLOBJS) xheretic xaheretic glheretic \
141	ggiheretic vgaheretic sdlheretic graphics/i_sdl_gl.o \
142	graphics/i_x11.o graphics/i_x11_fast.o \
143	graphics/i_ggi.o graphics/i_vga.o graphics/i_sdl.o
144	(cd sndserv; $(MAKE) clean; cd ..) || exit 1
145	(cd musserv; $(MAKE) clean; cd ..) || exit 1
146	(cd opengl/sgi-si/libtess; $(MAKE) clean; cd ../../../) || exit 1
147
148distclean:
149	rm -f $(OBJS) $(GLOBJS) xheretic xaheretic ggiheretic vgaheretic \
150        sdlheretic glheretic graphics/i_x11.o graphics/i_x11_fast.o \
151	graphics/i_sdl.o graphics/i_sdl_gl.o graphics/*.orig \
152        graphics/i_ggi.o graphics/i_vga.o graphics/*~ graphics/*.rej \
153        .depend soundclient/*~ gsisound/*~ sndserv/*~ opengl/*~ *~ \
154	*.rej *.orig doc/*~ doc/*.rej doc/*.orig
155	(cd sndserv; $(MAKE) clean; cd ..) || exit 1
156	(cd musserv; $(MAKE) clean; cd ..) || exit 1
157	(cd opengl/sgi-si/libtess; $(MAKE) clean; cd ../../../) || exit 1
158
159depx11:
160	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c $(SOUND_REFS) \
161	graphics/i_x11.c > .depend
162
163depx11f:
164	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c $(SOUND_REFS) \
165	graphics/i_x11.c > .depend
166
167depsdlogl:
168	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c opengl/*.c \
169	$(SOUND_REFS) graphics/i_sdl_gl.c > .depend
170
171depggi:
172	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c $(SOUND_REFS) \
173	graphics/i_ggi.c > .depend
174
175depvga:
176	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c $(SOUND_REFS) \
177	graphics/i_vga.c > .depend
178
179depsdl:
180	$(CC) -E -M $(CFLAGS) $(X_LDFLAGS) *.c $(SOUND_REFS) \
181	graphics/i_sdl.c > .depend
182
183x11:	depx11 $(OBJS) graphics/i_x11.o $(MUSSERV) $(SNDSERV)
184	$(CC) $(CFLAGS) $(X_LDFLAGS) $(X11LIBS) $(OBJS) \
185	graphics/i_x11.o -o xheretic
186
187fastx11:depx11f $(OBJS) graphics/i_x11_fast.o $(MUSSERV) $(SNDSERV)
188	$(CC) $(CFLAGS) $(X_LDFLAGS) $(X11LIBS) $(OBJS) \
189	graphics/i_x11_fast.o -o xaheretic
190
191
192glheretic:depsdlogl $(OBJS) $(GLOBJS) graphics/i_sdl_gl.o \
193	$(MUSSERV) $(SNDSERV) sgi-libtess
194ifeq ($(WANT_OGL_FULLSCREEN),yes)
195	$(CC) $(CFLAGS) $(X_LDFLAGS) $(X11LIBS) $(GLLIBS) \
196	$(OBJS) $(GLOBJS) /usr/X11R6/lib/libXxf86vm.a \
197	opengl/sgi-si/libtess/libtess.a graphics/i_sdl_gl.o -o $@
198else
199	$(CC) $(CFLAGS) $(X_LDFLAGS) $(X11LIBS) $(GLLIBS) \
200        $(OBJS) $(GLOBJS) opengl/sgi-si/libtess/libtess.a graphics/i_sdl_gl.o -o $@
201endif
202
203
204ggi:	depggi $(OBJS) graphics/i_ggi.o $(MUSSERV) $(SNDSERV)
205	$(CC) $(CFLAGS) $(GGILIBS) $(OBJS) \
206	graphics/i_ggi.o -o ggiheretic
207
208vga:	depvga $(OBJS) graphics/i_vga.o $(MUSSERV) $(SNDSERV)
209	$(CC) $(CFLAGS) $(VGALIBS) $(OBJS) \
210	graphics/i_vga.o -o vgaheretic
211
212sdl:    depsdl $(OBJS) graphics/i_sdl.o $(MUSSERV) $(SNDSERV)
213	$(CC) $(CFLAGS) $(X_LDFLAGS) $(SDLLIBS) $(OBJS) \
214	graphics/i_sdl.o -o sdlheretic
215
216sndserver:
217	$(MAKE) -C sndserv COPT.arch="$(COPT.arch)" $@
218
219musserver:
220	$(MAKE) -C musserv COPT.arch="$(COPT.arch)" $@
221
222sgi-libtess:
223	$(MAKE) -C opengl/sgi-si/libtess $@
224
225%.o:	%.c
226	$(CC) $(CFLAGS) -c $< -o $@
227
228
229ifeq (.depend,$(wildcard .depend))
230include .depend
231endif
232