SOCCER_LIB_TOP = ../..
LIBDIR = $(SOCCER_LIB_TOP)/generic_library

CC  = $(LIBDIR)/bin/gccw
CXX = $(LIBDIR)/bin/g++w
MAKE_AR = $(LIBDIR)/bin/make_ar
RM = rm
PRCS = prcs
CHDIR = cd

INCLUDES = -I$(LIBDIR)/include -I../soccer_basic_lib

CFLAGS   = -g $(CCXXOPTFLAGS) $(COPTFLAGS) $(INCLUDES) \
	      $(CCXXADDITIONALFLAGS) $(CADDITIONALFLAGS)
CXXFLAGS = -g $(CCXXOPTFLAGS) $(CXXOPTFLAGS) $(INCLUDES) \
	      $(CCXXADDITIONALFLAGS) $(CXXADDITIONALFLAGS)

ARCHIVES = ../soccer_basic_lib/libsoccer_basic.a \
	   $(LIBDIR)/src/udp_connection/libudp_connection.a \
	   $(LIBDIR)/src/lisp_lex/liblisp_lex.a \
	   $(LIBDIR)/src/d2_vector/libd2_vector.a \
	   $(LIBDIR)/src/time_stamp/libtime_stamp.a \
	   $(LIBDIR)/src/prof_stopwatch/libprof_stopwatch.a \
	   $(LIBDIR)/src/debugstream/libdebugstream.a

OBJS = sserver_message_translator.o \
       sserver_player_connection.o sserver_monitor_connection.o \
       debug_client_connection.o debug_server_connection.o

all: libsserver_connection.a

library: libsserver_connection.a
library-only: library
	$(RM) -f *.o sserver_player_connection-test \
		     sserver_monitor_connection-test \
		     sserver_message_translator-test

libsserver_connection.a: $(OBJS)
	$(MAKE_AR) libsserver_connection.a $(OBJS)

##
../soccer_basic_lib/libsoccer_basic.a:
	$(CHDIR) ../soccer_basic_lib && $(MAKE) libsoccer_basic.a

$(LIBDIR)/src/udp_connection/libudp_connection.a:
	$(CHDIR) $(LIBDIR)/src/udp_connection && $(MAKE) libudp_connection.a

$(LIBDIR)/src/lisp_lex/liblisp_lex.a:
	$(CHDIR) $(LIBDIR)/src/lisp_lex && $(MAKE) liblisp_lex.a

$(LIBDIR)/src/d2_vector/libd2_vector.a:
	$(CHDIR) $(LIBDIR)/src/d2_vector && $(MAKE) libd2_vector.a

$(LIBDIR)/src/time_stamp/libtime_stamp.a:
	$(CHDIR) $(LIBDIR)/src/time_stamp && $(MAKE) libtime_stamp.a

$(LIBDIR)/src/prof_stopwatch/libprof_stopwatch.a:
	$(CHDIR) $(LIBDIR)/src/prof_stopwatch && $(MAKE) libprof_stopwatch.a

$(LIBDIR)/src/debugstream/debugstream.a:
	$(CHDIR) $(LIBDIR)/src/debugstream && $(MAKE) libdebugstream.a

##
sserver_player_connection-test: sserver_player_connection.cc \
		sserver_player_connection.h \
		sserver_message_translator.o $(ARCHIVES)
	$(CXX) -o sserver_player_connection-test sserver_player_connection.cc \
		sserver_message_translator.o \
		$(ARCHIVES) $(CXXFLAGS) -DSSERVER_PLAYER_CONNECTION_TEST

sserver_monitor_connection-test: sserver_monitor_connection.cc \
		sserver_monitor_connection.h \
		sserver_message_translator.o $(ARCHIVES)
	$(CXX) -o sserver_monitor_connection-test \
		  sserver_monitor_connection.cc \
		  sserver_message_translator.o \
		  $(ARCHIVES) $(CXXFLAGS) -DSSERVER_MONITOR_CONNECTION_TEST

sserver_message_translator-test: sserver_message_translator.cc \
		sserver_message_translator.h $(ARCHIVES)
	$(CXX) -o sserver_message_translator-test \
		sserver_message_translator.cc $(ARCHIVES) $(CXXFLAGS) \
		-DSSERVER_MESSAGE_TRANSLATOR_TEST -DLIB_MEMORY

clean:
	$(RM) -f *.o libsserver_connection.a \
		     sserver_player_connection-test \
		     sserver_monitor_connection-test \
		     sserver_message_translator-test


#
# for Revision Control
#
diff:
	@$(CHDIR) $(SOCCER_LIB_TOP) && $(PRCS) diff || true

populate:
	@$(CHDIR) $(SOCCER_LIB_TOP) && $(PRCS) populate

checkin:
	@$(CHDIR) $(SOCCER_LIB_TOP) && $(PRCS) checkin && $(RM) -f .*.prcs_aux


##
sserver_message_translator.o: sserver_message_translator.h \
			      sserver_message_translator.cc \
			      ../soccer_basic_lib/fixed_sobject_location.h \
			      ../soccer_basic_lib/s_basic.h
	$(CXX) -c sserver_message_translator.cc $(CXXFLAGS) -DLIB_MEMORY

sserver_player_connection.o: sserver_player_connection.h \
			     sserver_player_connection.cc \
			     communication_cannel.h

sserver_monitor_connection.o: sserver_monitor_connection.h \
			      sserver_monitor_connection.cc \
			      communication_cannel.h

debug_client_connection.o: debug_client_connection.h \
			   debug_client_connection.cc \
			   communication_cannel.h

debug_server_connection.o: debug_server_connection.h \
			   debug_server_connection.cc \
			   communication_cannel.h
