

#if you want to change the target model, it is recommended
#to set the TEKKOTSU_TARGET_MODEL environment variable

.PHONY: all tk_bd

# We use this TK_RT instead of TEKKOTSU_ROOT so things will
# still work if TEKKOTSU_ROOT is a relative path
TK_RT:=../..

TEMPLATE_PROJECT:=$(TK_RT)/project
TEKKOTSU_ENVIRONMENT_CONFIGURATION?=$(TEMPLATE_PROJECT)/Environment.conf
TEKKOTSU_TARGET_PLATFORM = PLATFORM_LOCAL
include $(TEKKOTSU_ENVIRONMENT_CONFIGURATION)
FILTERSYSWARN:=$(patsubst $(TEKKOTSU_ROOT)/%,$(TK_RT)/%,$(FILTERSYSWARN))
COLORFILT:=$(patsubst $(TEKKOTSU_ROOT)/%,$(TK_RT)/%,$(COLORFILT))

BIN:=convertmot_$(shell echo $(patsubst TGT_%,%,$(TEKKOTSU_TARGET_MODEL)) | tr [:upper:] [:lower:])

SRCSUFFIX=.cc

PROJ_OBJ:= \
	$(PROJ_BD)/convertmot.o \

TK_TGTS:= \
	$(TK_BD)/Events/EventBase.o \
	$(TK_BD)/Events/EventRouter.o \
	$(TK_BD)/Motion/MotionManager.o \
	$(TK_BD)/Motion/MotionSequenceMC.o \
	$(TK_BD)/Motion/PostureEngine.o \
	$(TK_BD)/Motion/Kinematics.o \
	$(TK_BD)/Motion/OldKinematics.o \
	$(TK_BD)/Shared/get_time.o \
	$(TK_BD)/Shared/LoadSave.o \
	$(TK_BD)/Shared/Config.o \
	$(TK_BD)/Shared/Profiler.o \
	$(TK_BD)/Shared/TimeET.o \
	$(TK_BD)/Shared/WorldState.o \
	$(TK_BD)/Wireless/Socket.o \
	$(TK_BD)/Shared/newmat/libnewmat.a \
	$(TK_BD)/Motion/roboop/libroboop.a

LIBS:= $(TK_BD)/Motion/roboop/libroboop.a $(TK_BD)/Shared/newmat/libnewmat.a

DEPENDS:=$(PROJ_OBJ:.o=.d)

CXXFLAGS=-g -Wall -O2 \
         -I$(TK_RT)  \
         -D$(TEKKOTSU_TARGET_PLATFORM) -D$(TEKKOTSU_TARGET_MODEL) 


all: $(BIN)

$(BIN): tk_bd $(PROJ_OBJ)
	@echo "Linking $@..."
	@g++ $(PROJ_OBJ) $(patsubst $(TEKKOTSU_ROOT)/%,$(TK_RT)/%,$(TK_TGTS) $(LIBS)) -o $@

ifeq ($(findstring clean,$(MAKECMDGOALS)),)
-include $(DEPENDS)
endif

%.d :
	@mkdir -p $(dir $@)
	@src=$(patsubst %.d,%.cc,$(patsubst $(PROJ_BD)/%,%,$@)); \
	echo "$@..." | sed 's@.*$(TGT_BD)/@Generating @'; \
	$(CXX) $(CXXFLAGS) -MP -MG -MT "$@" -MT "$(@:.d=.o)" -MM "$$src" > $@

tk_bd:
	@echo "Making Tekkotsu files..."
	@export TEKKOTSU_TARGET_PLATFORM=PLATFORM_LOCAL && $(MAKE) -C $(TEMPLATE_PROJECT) $(TK_TGTS)


%.o:
	@mkdir -p $(dir $@)
	@src=$(patsubst %.o,%$(SRCSUFFIX),$(patsubst $(PROJ_BD)/%,%,$@)); \
	echo "Compiling $$src..."; \
	$(CXX) $(CXXFLAGS) -o $@ -c $$src > $*.log 2>&1; \
	retval=$$?; \
	cat $*.log | $(FILTERSYSWARN) | $(COLORFILT) | $(TEKKOTSU_LOGVIEW); \
	test $$retval -eq 0; \

clean:
	rm -f $(BIN) $(PROJ_OBJ) $(DEPENDS) *~

