SOCCER_LIB_TOP = ../..
LIBDIR = $(SOCCER_LIB_TOP)/generic_library
LIB_CONFIG = $(LIBDIR)/bin/library-config --prefix=$(LIBDIR)

SOCCER_BASIC_LIB_DIR = ../soccer_basic_lib
SSERVER_CONNECTION_LIB_DIR = ../sserver_connection
EVOLUTIONAL_VARIABLE_LIB_DIR = ../../evolutional_variable

CC  = `$(LIB_CONFIG) --cc`
CXX = `$(LIB_CONFIG) --c++`

RM = rm
PRCS = prcs
CHDIR = cd

MAKE_ARCHIVE = `$(LIB_CONFIG) --make-archive`

INCLUDES = -I$(EVOLUTIONAL_VARIABLE_LIB_DIR) \
	   -I$(SOCCER_BASIC_LIB_DIR) \
	   -I$(SSERVER_CONNECTION_LIB_DIR)

#PRECISIONFLAGS = -DPRECISION_LEVEL=2
PRECISIONFLAGS = -DPRECISION_LEVEL=1
#PRECISIONFLAGS = -DPRECISION_LEVEL=0

DEBUGMESSAGEFLAGS =
#DEBUGMESSAGEFLAGS = -DSHORT_DEBUG_MESSAGE

CFLAGS   = -g $(DEBUGMESSAGEFLAGS) \
	      `$(LIB_CONFIG) --cflags` \
	      $(CCXXOPTFLAGS) $(COPTFLAGS) $(INCLUDES) \
	      $(CCXXADDITIONALFLAGS) $(CADDITIONALFLAGS)

CXXFLAGS = -g $(DEBUGMESSAGEFLAGS) \
	      `$(LIB_CONFIG) --cflags` \
	      $(CCXXOPTFLAGS) $(CXXOPTFLAGS) $(INCLUDES) \
	      $(CCXXADDITIONALFLAGS) $(CXXADDITIONALFLAGS)

LDFLAGS = `$(LIB_CONFIG) --libs` `$(SSERVER_CONNECTION_LIB_DIR)/link-config` \
	  $(LDADDITIONALFLAGS) -lm

OBJS = field_recog_abstract.o field_recog.o field_recog_interface.o \
       soccer_object_reference.o player_set.o soccer_manager.o \
       sight_info_analyzer.o player_type_manager.o soccer_composite_command.o \
       client_debug_view.o soccer_action.o

all: libsoccer_interface.a

library: libsoccer_interface.a
library-only: library
	$(RM) -f *.o

libsoccer_interface.a: $(OBJS)
	$(MAKE_ARCHIVE) libsoccer_interface.a $(OBJS)

clean:
	$(RM) -f *.o libsoccer_interface.a


#
# 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)

.PHONY: all library library-only clean diff populate checkin


##
field_recog_abstract.o: field_recog_abstract.h field_recog_abstract.cc \
			field_momentary_info.h player_type_manager.h \
			soccer_composite_command.h

field_recog.o: field_recog.h field_recog_abstract.h field_recog.cc \
	       field_momentary_info.h player_type_manager.h \
	       soccer_composite_command.h sight_info_analyzer.h

field_recog_interface.o: field_recog_interface.h field_recog_interface.cc \
			 soccer_object_reference.h player_set.h soccer_action.h

player_set.o: player_set.h player_set.cc \
	      soccer_object_reference.h field_recog_interface.h soccer_action.h


soccer_object_reference.o: soccer_object_reference.h \
			   soccer_object_reference.cc \
			   field_recog_interface.h soccer_action.h

sight_info_analyzer.o: sight_info_analyzer.h sight_info_analyzer.cc \
		       field_momentary_info.h soccer_composite_command.h \
		       field_recog.h field_recog_abstract.h
	$(CXX) -c sight_info_analyzer.cc $(PRECISIONFLAGS) $(CXXFLAGS)

player_type_manager.o: player_type_manager.h player_type_manager.cc

soccer_manager.o: soccer_manager.h soccer_manager.cc \
		  field_recog_abstract.h \
		  field_recog_interface.h \
		  soccer_object_reference.h player_set.h soccer_action.h \
		  client_debug_view.h \
		  field_momentary_info.h soccer_composite_command.h

soccer_composite_command.o: soccer_composite_command.h \
			    soccer_composite_command.cc

client_debug_view.o: client_debug_view.h client_debug_view.cc \
		     field_recog_abstract.h field_momentary_info.h \
		     soccer_composite_command.h

soccer_action.o: soccer_action.h soccer_action.cc
