# $Id: Makefile,v 1.80 2005/12/20 16:47:40 uwe Exp $

TARGET = ../bin/wop
DBG_LEVEL = 4
LOG_LEVEL = 4

COLORED_TEXT = yes

################################################################################

HEADER_FILES = $(wildcard *.hpp)
SOURCE_FILES = $(wildcard *.cpp)
OBJECT_FILES = $(patsubst %.cpp,%.o, $(SOURCE_FILES))

CXXFLAGS ?= -Wall -Wshadow -Wsign-compare -Wparentheses -Wconversion -O3 -ansi
CXXFLAGS += -fno-exceptions -fno-strict-aliasing -ffloat-store \
            -DDBG_LEVEL=$(DBG_LEVEL) -DLOG_LEVEL=$(LOG_LEVEL) \
            -DUSE_SDL -DNEW=new\(std::nothrow\) \
            -I../sdlwidgets \
            $(shell sdl-config --cflags) # -g
LDFLAGS  = -L../sdlwidgets -lsdlwidgets -lz \
           -lm -lSDL_net -lSDL_mixer -lSDL_ttf -lSDL_image \
           $(shell sdl-config --libs) # -g

WOPFLAGS = data=../data
DOXYGENFLAGS = ../doc/doxygen.rc

CXX = g++
DOXYGEN = doxygen
UNISON_SOURCE = ssh://131.188.67.22//homes/staff/pohlt/wop/.unison_data

sinclude Makefile.local

################################################################################

ifneq "$(COLORED_TEXT)" "yes"
	CXXFLAGS += -DSUPPRESS_COLORED_OUTPUT
endif

################################################################################

.PHONY: all runc runs clean info unison gunison doc checkreal
.SECONDARY:
.SUFFIXES:

all: $(TARGET)

runc: all
	../bin/$(TARGET) mode=client $(WOPFLAGS)

runs: all
	../bin/$(TARGET) mode=server $(WOPFLAGS)

../sdlwidgets/libsdlwidgets.a: $(wildcard ../sdlwidgets/*.cpp) $(wildcard ../sdlwidgets/*.h)
	+cd ../sdlwidgets; make

$(TARGET): $(OBJECT_FILES) Makefile ../sdlwidgets/libsdlwidgets.a
	-mkdir ../bin
	$(CXX) $(OBJECT_FILES) -o $(TARGET) $(LDFLAGS)

%.o: %.cpp Makefile
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	-rm -f $(TARGET) *.o Makefile.depend*

info:
	@echo -e  "\033[1mTARGET:\033[0m $(TARGET)"
	@echo -e  "\033[1mSOURCE_FILES:\033[0m\n`ls -C $(SOURCE_FILES)`"
	@echo -e  "\033[1mHEADER_FILES:\033[0m\n`ls -C $(HEADER_FILES)`"
	@echo -en "\033[1mChecking compiler:\033[0m "
	@echo -e  "`$(CXX) --version | head -n 1 2>&1`"
	@#echo -en "\033[1mChecking valgrind:\033[0m "
	@#echo -e  "`$(VALGRIND) --version | head -n 1 2>&1`"

Makefile.depend: $(SOURCE_FILES) $(HEADER_FILES)
	@touch Makefile.depend
	makedepend -f Makefile.depend -Y -- $(CXXFLAGS) -- $(SOURCE_FILES) >/dev/null 2>&1

unison:
	@echo "#################### Setting g+w #####################"
	-chmod -R g+rw ../data/*
	@echo "#################### Syncing images #####################"
	-unison ../data/images  $(UNISON_SOURCE)/images
	@echo "#################### Syncing sound ######################"
	-unison ../data/sound   $(UNISON_SOURCE)/sound
	@echo "#################### Syncing develop ####################"
	-unison ../data/develop $(UNISON_SOURCE)/develop	
	@echo "#################### Syncing miscconfig ####################"
	-unison ../data/miscconf $(UNISON_SOURCE)/miscconf

gunison:
	-unison-gtk ../data/images   $(UNISON_SOURCE)/images
	-unison-gtk ../data/sound    $(UNISON_SOURCE)/sound
	-unison-gtk ../data/develop  $(UNISON_SOURCE)/develop
	-unison-gtk ../data/miscconf $(UNISON_SOURCE)/miscconf

doc:
	$(DOXYGEN) $(DOXYGENFLAGS)

checkreal:
	-@egrep '(cos|sin|acos|asin|fabs|tan|atan|atan2|sqrt)f? *\(' *.?pp && echo 'ERROR: found forbidden function calls'

include Makefile.depend
