# --------------------------------------------------------------------------
# GNU Makefile
#
# $Id: Makefile,v 1.18 1999/11/16 07:32:06 karl Exp $
# --------------------------------------------------------------------------


#GLHEXEN = true

VPATH = audio x11 opengl

OBJDIR = obj

GLOBJS = \
    $(OBJDIR)/i_gl.o \
	$(OBJDIR)/x11window.o \
    $(OBJDIR)/ogl_clip.o \
    $(OBJDIR)/ogl_draw.o \
    $(OBJDIR)/ogl_font.o \
    $(OBJDIR)/ogl_rend.o \
    $(OBJDIR)/ogl_rl.o \
    $(OBJDIR)/ogl_sky.o \
    $(OBJDIR)/ogl_tex.o \
    $(OBJDIR)/m_bams.o

X11OBJS = \
	$(OBJDIR)/i_x11.o \
	$(OBJDIR)/x11window.o \
	$(OBJDIR)/xshmext.o

SVGAOBJS = \
	$(OBJDIR)/i_svgalib.o

LINUXOBJS = \
	$(OBJDIR)/i_linux.o \
	$(OBJDIR)/oss.o \
	$(OBJDIR)/i_sound.o \
	$(OBJDIR)/i_cdmus.o \
	$(OBJDIR)/i_cyber.o

GAMEOBJS = \
	$(OBJDIR)/am_map.o \
	$(OBJDIR)/a_action.o \
	$(OBJDIR)/ct_chat.o \
	$(OBJDIR)/d_net.o \
	$(OBJDIR)/f_finale.o \
	$(OBJDIR)/g_game.o \
	$(OBJDIR)/h2_main.o \
	$(OBJDIR)/info.o \
	$(OBJDIR)/in_lude.o \
	$(OBJDIR)/mn_menu.o \
	$(OBJDIR)/m_misc.o \
	$(OBJDIR)/p_acs.o \
	$(OBJDIR)/p_anim.o \
	$(OBJDIR)/p_ceilng.o \
	$(OBJDIR)/p_doors.o \
	$(OBJDIR)/p_enemy.o \
	$(OBJDIR)/p_floor.o \
	$(OBJDIR)/p_inter.o \
	$(OBJDIR)/p_lights.o \
	$(OBJDIR)/p_map.o \
	$(OBJDIR)/p_maputl.o \
	$(OBJDIR)/p_mobj.o \
	$(OBJDIR)/p_plats.o \
	$(OBJDIR)/p_pspr.o \
	$(OBJDIR)/p_setup.o \
	$(OBJDIR)/p_sight.o \
	$(OBJDIR)/p_spec.o \
	$(OBJDIR)/p_switch.o \
	$(OBJDIR)/p_telept.o \
	$(OBJDIR)/p_tick.o \
	$(OBJDIR)/p_things.o \
	$(OBJDIR)/p_user.o \
	$(OBJDIR)/po_man.o \
	$(OBJDIR)/r_bsp.o \
	$(OBJDIR)/r_data.o \
	$(OBJDIR)/r_draw.o \
	$(OBJDIR)/r_main.o \
	$(OBJDIR)/r_plane.o \
	$(OBJDIR)/r_segs.o \
	$(OBJDIR)/r_things.o \
	$(OBJDIR)/sb_bar.o \
	$(OBJDIR)/sc_man.o \
	$(OBJDIR)/sn_sonix.o \
	$(OBJDIR)/st_start.o \
	$(OBJDIR)/sv_save.o \
	$(OBJDIR)/sounds.o \
	$(OBJDIR)/tables.o \
	$(OBJDIR)/v_video.o \
	$(OBJDIR)/w_wad.o \
	$(OBJDIR)/z_zone.o

RENDER3D_OBJS = \
	$(OBJDIR)/am_map.o \
	$(OBJDIR)/mn_menu.o \
	$(OBJDIR)/p_setup.o \
	$(OBJDIR)/r_data.o \
	$(OBJDIR)/r_draw.o \
	$(OBJDIR)/r_main.o \
	$(OBJDIR)/r_plane.o \
	$(OBJDIR)/r_segs.o \
	$(OBJDIR)/r_things.o \
	$(OBJDIR)/sb_bar.o

#
# DEBUG Build:
#
#  The EXTERNOPT macro should be set to /d2
#
# FINAL Build:
#
#  The EXTERNOPT macro should be set to /dNORANGECHECKING
#

VERSION_ID = BCP

VERSIONOPT = -DVER_ID="$(VERSION_ID)"
EXTERNOPT = -DNORANGECHECKING

CFLAGS = $(EXTERNOPT) $(VERSIONOPT) -g -O3 -U__i386 -D_REENTRANT -I.
#CFLAGS += -DDEMO_WAD
CFLAGS += -DSNDSERV
XLIBS = -L/usr/X11R6/lib -lXext -lX11 -ldl -lpthread -lm
SVGALIBS = -lvga -lpthread
GLLIBS = -lMesaGLU -lMesaGL $(XLIBS)
CC = gcc


ifeq ($(GLHEXEN),true)
CFLAGS += -Ix11 -Iopengl -DRENDER3D

glhexen : $(GAMEOBJS) $(LINUXOBJS) $(GLOBJS)
	$(CC) -o glhexen $(GAMEOBJS) $(LINUXOBJS) $(GLOBJS) $(GLLIBS)
endif

xhexen : $(GAMEOBJS) $(LINUXOBJS) $(X11OBJS)
	$(CC) -o xhexen $(GAMEOBJS) $(LINUXOBJS) $(X11OBJS) $(XLIBS)

shexen : $(GAMEOBJS) $(LINUXOBJS) $(SVGAOBJS)
	$(CC) -o shexen $(GAMEOBJS) $(LINUXOBJS) $(SVGAOBJS) $(SVGALIBS)

clean :
	rm $(OBJDIR)/*.o

clean3d :
	rm $(RENDER3D_OBJS)

cleandemo :
	rm $(OBJDIR)/h2_main.o $(OBJDIR)/r_data.o $(OBJDIR)/w_wad.o

tar :
	mv obj _obj
	mkdir obj
	cd ../..; tar czfv hexen/www/linux-hexen-0.6.0.tar.gz hexen -X hexen/tar_exclude
	rmdir obj
	mv _obj obj

tarbin :
	strip xhexen shexen glhexen
	tar czfv ../www/xhexen-0.6.0.tar.gz xhexen
	tar czfv ../www/shexen-0.6.0.tar.gz shexen
	tar czfv ../www/glhexen-0.6.0.tar.gz glhexen

$(OBJDIR)/%.o: %.c
	$(CC) $< -o $@ -c $(CFLAGS) 

$(OBJDIR)/%.o: %.cpp
	$(CXX) $< -o $@ -c $(CFLAGS) 

.asm.obj :
	tasm /mx $[*
