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

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

all: libsoccer_basic.a

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

libsoccer_basic.a: server_raw_info.o sserver_param.o \
	fixed_sobject_location.o quantize.o
	$(MAKE_AR) libsoccer_basic.a server_raw_info.o \
		   fixed_sobject_location.o sserver_param.o quantize.o

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 \
		-I$(LIBDIR)/src/lisp_lex -L$(LIBDIR)/src/lisp_lex -llisp_lex \
		-I$(LIBDIR)/src/d2_vector -L$(LIBDIR)/src/d2_vector \
		-ld2_vector $(CXXFLAGS)

$(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 \
			-L$(LIBDIR)/src/d2_vector -ld2_vector $(CXXFLAGS)

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


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