#
# Traxi Client und Server Makefile
# Version 0.1
# Autor: Michael Witt
#

SERVERSOURCES := src/net/*.cpp src/server/*.cpp src/tools/*.cpp
GAMESOURCES := src/game/*.cpp src/net/*.cpp src/tools/*.cpp src/gfx/*.cpp src/client/Framework.cpp src/client/LANServerThread.cpp src/client/main.cpp src/client/Client.cpp src/server/GameManager.cpp src/server/ServerClient.cpp src/server/ServerGame.cpp src/server/Server.cpp 
TESTCLIENTSOURCES := src/client/TestClient.cpp src/client/TestThread.cpp src/net/*.cpp src/tools/*.cpp

INCLUDES := -I/Library/Frameworks/SDL.framework/Headers

#
# Compiler-Konfiguration
#
CC := g++
CCFLAGS	:= -Wall -O0 -g3

#
# Linker-flags
#
LD := $(CC)
LDFLAGS := 

#
# Definierte Konstanten (-D) und undefinierte Konstanten (-U)
#
DEFINES := -D_DEBUG -DMACOS

#
# Zusaetzliche Bibliotheken (-l)
#
LIBS := -lm -lSDLmain -lobjc -lstdc++

#
# Zusaetzliche Verzeichnisse fuer Bibliotheken (-L)
#
LIBDIRS	:= -framework GLUT -framework OpenGL -framework SDL -framework SDL_image -framework SDL_net -framework SDL_ttf -framework Cocoa -L"/System/Library/Frameworks/OpenGL.framework/Libraries" -L"/opt/local/lib/"

#
# Keine Konfiguration ab hier
#

SERVERCPPFILES := $(foreach item, $(SERVERSOURCES), $(wildcard $(item)))
GAMECPPFILES := $(foreach item, $(GAMESOURCES), $(wildcard $(item)))
TESTCLIENTCPPFILES := $(foreach item, $(TESTCLIENTSOURCES), $(wildcard $(item)))

SERVEROFILES := $(SERVERCPPFILES:.cpp=.o)
GAMEOFILES := $(GAMECPPFILES:.cpp=.o)
TESTCLIENTOFILES := $(TESTCLIENTCPPFILES:.cpp=.o)

all: server client testclient
	
server: $(SERVEROFILES)
	$(LD) -o TraxiServer $(SERVEROFILES) $(CCFLAGS) $(CCFLAGS) $(LDFLAGS) $(LIBS) $(LIBDIRS) 
	
client: $(GAMEOFILES)
	$(LD) -o Traxi $(GAMEOFILES) $(CCFLAGS) $(CCFLAGS) $(LDFLAGS) $(LIBS) $(LIBDIRS) 
	
testclient: $(TESTCLIENTOFILES)
	$(LD) -o TraxiTestClient $(TESTCLIENTOFILES) $(CCFLAGS) $(CCFLAGS) $(LDFLAGS) $(LIBS) $(LIBDIRS) 
	
.cpp.o:
	$(CC) -c $(CCFLAGS) $(INCLUDES) $(DEFINES) $< -o $@

clean:
	rm -f $(SERVEROFILES) $(GAMEOFILES) $(TESTCLIENTOFILES)