

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

.PHONY: all tk

# We use this TK_RT instead of TEKKOTSU_ROOT so things will
# still work if TEKKOTSU_ROOT is a relative path from some
# unknown project directory (and thus would be invalid from
# this subdirectory of 'tools')
TK_RT:=../../..

TEMPLATE_PROJECT:=$(TK_RT)/project
TEKKOTSU_ENVIRONMENT_CONFIGURATION?=$(TEMPLATE_PROJECT)/Environment.conf
$(if $(shell if [ \! -r $(TEKKOTSU_ENVIRONMENT_CONFIGURATION) ] \; then echo failure \; fi),$(error An error has occured, `$(TEKKOTSU_ENVIRONMENT_CONFIGURATION)' could not be found.  You may need to edit TK_RT in the Makefile))

TEKKOTSU_TARGET_PLATFORM:=PLATFORM_LOCAL
PROJECT_BUILDDIR:=build
include $(TEKKOTSU_ENVIRONMENT_CONFIGURATION)
FILTERSYSWARN:=$(patsubst $(TEKKOTSU_ROOT)/%,$(TK_RT)/%,$(FILTERSYSWARN))
COLORFILT:=$(patsubst $(TEKKOTSU_ROOT)/%,$(TK_RT)/%,$(COLORFILT))
$(shell mkdir -p $(PROJ_BD))

BIN:=$(shell pwd | sed 's@.*/@@')-$(shell echo $(patsubst TGT_%,%,$(TEKKOTSU_TARGET_MODEL)))

SRCSUFFIX:=.cc

PROJ_SRC:=$(shell find . -name "*$(SRCSUFFIX)")

PROJ_OBJ:=$(patsubst ./%$(SRCSUFFIX),$(PROJ_BD)/%.o,$(PROJ_SRC))

LIBS:= $(TK_BD)/libtekkotsu.a $(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) \
         `xml2-config --cflags`


all: tk $(BIN)

$(BIN): $(PROJ_OBJ) $(LIBS)
	@echo "Linking $@..."
	@g++ $(PROJ_OBJ) $(LIBS) `xml2-config --libs` -lpthread -o $@

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

tk :
	export TEKKOTSU_TARGET_PLATFORM=PLATFORM_LOCAL; $(MAKE) -C $(TK_RT) compile

%.a :
	@echo "ERROR: $@ was not found.  You may need to compile the Tekkotsu framework."
	@echo "Press return to attempt to build it, ctl-C to cancel."
	@read;
	export TEKKOTSU_TARGET_PLATFORM=PLATFORM_LOCAL; $(MAKE) -C $(TK_RT) compile

%.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" > $@

%.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 -rf $(BIN) $(PROJECT_BUILDDIR) *~

