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

CC  = `$(LIB_CONFIG) --cc`
CXX = `$(LIB_CONFIG) --c++`
MAKE_ARCHIVE = `$(LIB_CONFIG) --make-archive`
RM = rm
PRCS = prcs
CHDIR = cd

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

OBJS = server_raw_info.o sserver_param.o fixed_sobject_location.o quantize.o \
       say_message_translator.o

all: libsoccer_basic.a

library: libsoccer_basic.a
library-only: library
	$(RM) -f *.o fixed_sobject_location-test quantize-test

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

fixed_sobject_location-test: fixed_sobject_location.cc libsoccer_basic.a \
			     $(LIBDIR)/src/lisp_lex/liblisp_lex.a
	$(CXX) -o fixed_sobject_location-test fixed_sobject_location.cc \
		-DFIXED_SOBJECT_LOCATION_TEST -L. -lsoccer_basic \
		$(CXXFLAGS) `$(LIB_CONFIG) --libs`

$(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)/d2_vector && $(MAKE) libd2_vector.a)

quantize-test: quantize.cc quantize.h libsoccer_basic.a
	$(CXX) -o quantize-test quantize.cc -DQUANTIZE_TEST $(CXXFLAGS) \
			libsoccer_basic.a \
			$(CXXFLAGS) `$(LIB_CONFIG) --libs`

say_message_translator-test: say_message_translator.h say_message_translator.cc
	$(CXX) -o say_message_translator-test say_message_translator.cc \
		-DSAY_MESSAGE_TRANSLATOR_TEST $(CXXFLAGS) \
		`$(LIB_CONFIG) --libs`

clean:
	$(RM) -f *.o libsoccer_basic.a \
		     fixed_sobject_location-test quantize-test \
		     say_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)

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


##
server_raw_info.o: server_raw_info.h s_basic.h
sserver_param.o: sserver_param.h sserver_param.cc server_raw_info.h
quantize.o: quantize.h quantize.cc sserver_param.h
fixed_sobject_location.o: fixed_sobject_location.h s_basic.h
say_message_translator.o: say_message_translator.h say_message_translator.cc
