CXX = g++31 -pipe
CXXFLAGS = -g -O -Wall -W -Wwrite-strings -ansi -pedantic -static
CPPFLAGS = # -DNDEBUG

LD = g++31 -pipe -static
LDFLAGS = 

DOXYGEN = doxygen

TARGETS = client

COMMON_SOURCES =				\
	board.cc				\
	evaluate.cc				\
	package.cc				\
	robot.cc				\
	timer.cc				\
	util.cc

COMMON_OBJECTS = $(COMMON_SOURCES:.cc=.o)
COMMON_LIBS = 

CLIENT_SOURCES = 				\
	client.cc
CLIENT_OBJECTS = $(CLIENT_SOURCES:.cc=.o)
CLIENT_LIBS = 

SERVER_SOURCES =				\
	server.cc

SERVER_OBJECTS = $(SERVER_SOURCES:.cc=.o)
SERVER_LIBS =

ALL_SOURCES =					\
	$(COMMON_SOURCES)			\
	$(CLIENT_SOURCES)			\
	$(SERVER_SOURCES)

DEPENDS = $(ALL_SOURCES:.cc=.d)

.PHONY: all doxygen clean realclean force

all: $(TARGETS)

doxygen: $(ALL_SOURCES)
	if [ -d doxygen ]; then rm -r doxygen; fi
	$(DOXYGEN)

client: $(CLIENT_OBJECTS) $(COMMON_OBJECTS)
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $+ $(CLIENT_LIBS) $(COMMON_LIBS) -o $@

server: $(SERVER_OBJECTS) $(COMMON_OBJECTS)
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $+ $(SERVER_LIBS) $(COMMON_LIBS) -o $@

clean:
	rm -f $(ALL_SOURCES:.cc=.o)
	find . -name "*.core" | xargs rm -f __rmfood

realclean: clean
	if [ -d doxygen ]; then rm -r doxygen; fi
	rm -f $(TARGETS) $(DEPENDS)

# Automatic dependencies.
%.d: %.cc
	$(SHELL) -ec '$(CXX) -MM $(CPPFLAGS) $< \
	              | sed '\''s!\(.*\)\.o[ :]*!$(dir $@)\1.o $@ : !g'\'' > $@; \
	              [ -s $@ ] || rm -f $@'

include $(DEPENDS)
