#
# Quake2 gamei386.so Makefile for Linux 2.0
#
# Jan '98 by Zoid <zoid@idsoftware.com>
#
# Modified for bjp tools by goldenboy <j.nicolaisen@gmx.net>
#
#
# ELF only
#
# Probably requires GNU make (gmake)
#

CC=gcc
CXX=g++

CFLAGS=-mtune=pentium -O3 -pipe -fomit-frame-pointer
CXXFLAGS=-mtune=pentium -O3 -pipe -fpermissive -fomit-frame-pointer

#this enables multithreading in vis, light
#
# CFLAGS+=-D__alpha

LDFLAGS= -lm

STRIP?=strip

LIGHT_OBJS = 	common/bspfile.o common/cmdlib.o light/entities.o light/light.o \
		light/ltface.o common/mathlib.o light/threads.o light/trace.o 

VIS_OBJS = 	common/bspfile.o common/cmdlib.o vis/flow.o common/mathlib.o \
		vis/soundpvs.o vis/vis.o

BSPINFO_OBJS = 	bspinfo/brush.o common/bspfile.o bspinfo/bspinfo.o common/cmdlib.o \
		bspinfo/csg4.o common/mathlib.o bspinfo/portals.o bspinfo/qbsp.o

TREEQBSP_OBJS = treeqbsp/brush.o treeqbsp/bspfile.o treeqbsp/cmdlib.o treeqbsp/csg4.o \
		treeqbsp/file.o treeqbsp/globals.o treeqbsp/map.o treeqbsp/mathlib.o \
		treeqbsp/merge.o treeqbsp/outside.o treeqbsp/parser.o treeqbsp/portals.o \
		treeqbsp/qbsp.o treeqbsp/solidbsp.o treeqbsp/surfaces.o treeqbsp/tjunc.o \
		treeqbsp/util.o treeqbsp/wad.o treeqbsp/winding.o treeqbsp/writebsp.o

TXQBSP_OBJS = 	txqbsp/brush.o txqbsp/bspfile.o txqbsp/cmdlib.o txqbsp/csg4.o \
		txqbsp/map.o common/mathlib.o txqbsp/merge.o \
		txqbsp/nodraw.o txqbsp/outside.o txqbsp/portals.o txqbsp/qbsp.o \
		txqbsp/region.o txqbsp/solidbsp.o txqbsp/surfaces.o txqbsp/tjunc.o \
		txqbsp/writebsp.o

#	txqbsp/dyna1.o

#
# compile
#

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

# dirty hack, because treeqbsp mixes C and C++

treeqbsp/%.o: CC=g++
treeqbsp/%.o: CFLAGS+=-fpermissive

# 
# extra targets because light, vis etc are also directories
#

.PHONY: all light vis bspinfo treeqbsp txqbsp clean

all : Treeqbsp Vis Light
light : Light
vis : Vis
bspinfo : Bspinfo
treeqbsp : Treeqbsp
txqbsp : Txqbsp


Light : $(LIGHT_OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
	$(STRIP) $@
	-mv Light bin/light

Vis : $(VIS_OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
	$(STRIP) $@
	-mv Vis bin/vis

Bspinfo : $(BSPINFO_OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
	$(STRIP) $@
	-mv Bspinfo bin/bspinfo

Treeqbsp : $(TREEQBSP_OBJS)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^
	$(STRIP) $@
	-mv Treeqbsp bin/treeqbsp

Txqbsp : $(TXQBSP_OBJS)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^
	$(STRIP) $@
	-mv Txqbsp bin/txqbsp
clean:
	-rm -f $(VIS_OBJS)
	-rm -f $(LIGHT_OBJS)
	-rm -f $(BSPINFO_OBJS)
	-rm -f $(TREEQBSP_OBJS)
	-rm -f $(TXQBSP_OBJS)

