SHELL=/bin/sh

PROJECT_NAME	= sot
OS		= Linux
SUFFIX		= 
HOSTNAME	= jorasse
PROJECT_HOME	= /home/nmansard/src/StackOfTasks
PROJECT_DIR_SRC	= $(PROJECT_HOME)/src
PROJECT_DIR_INCLUDE= $(PROJECT_HOME)/src
PROJECT_DIR_LIB	= $(PROJECT_HOME)/lib
PROJECT_DIR_OBJ	= $(PROJECT_HOME)/.obj
PROJECT_DIR_DEP	= $(PROJECT_HOME)/.dep
PROJECT_DIR_BIN	= $(PROJECT_HOME)/bin
PROJECT_DIR_TESTS= $(PROJECT_HOME)/tests
PROJECT_DIR_EXPORT_INCLUDE	= $(PROJECT_HOME)/include
PROJECT_LIB_PATH = $(PROJECT_DIR_LIB)
PROJECT_PLUGIN_PATH = $(PROJECT_DIR_LIB)/plugin
PROJECT_OBJ_PATH = $(PROJECT_DIR_OBJ)/$(HOSTNAME)$(SUFFIX)
PROJECT_PLUGIN_OBJ_PATH = $(PROJECT_OBJ_PATH)/plugin
PROJECT_DEP_PATH = $(PROJECT_DIR_DEP)/$(HOSTNAME)$(SUFFIX)
PROJECT_BIN_PATH = $(PROJECT_DIR_BIN)/$(HOSTNAME)$(SUFFIX)
PROJECT_TESTS_PATH = $(PROJECT_DIR_TESTS)
PROJECT_INC_PATH = $(PROJECT_DIR_EXPORT_INCLUDE)/$(PROJECT_NAME)
PROJECT_LIBNAME	= sot-0
OPENHRP_ROOTDIR = /home/nmansard/src/OpenHRP

CXX		= g++-3.3
CXX_VERSION	= 3.3.6
CXX_FLAGS	+= -DWITH_OPENHRP -I/usr/local/3.3/include -I. -I/usr/include/boost-sandbox -pthread -I/usr/local/3.3/include -I/usr/local/3.3/include/boost_thread-sandbox -I/usr/include  -O2 -I/home/nmansard/src/StackOfTasks/include -I. -Wall -Wunused -Werror  -D__Linux_
CXXALL		= $(CXX) $(CXX_FLAGS)
AR		= ar crs
RANLIB		= ranlib
MOC		= @QT_MOC@

LDFLAGS		= -Wl,-rpath,$(PROJECT_DIR_LIB) -L/usr/local/3.3/lib -L/usr/lib/lib -L/usr/local/3.3/lib  -L/home/nmansard/src/StackOfTasks/lib
LIBS		= -lsot-0 -llapack -lblas -lboost_thread-gcc-mt -lpthread -lpthread -ldl -lm -lpthread 

# --->
# ---> CFLAGS
# --->

# ENABLE TRACES
ifeq ($(VP_DEBUG),yes)
	CXX_FLAGS += -DVP_DEBUG=yes -g
	CXX_FLAGS_TMP:=$(filter-out -O%,$(CXX_FLAGS))
	CXX_FLAGS:=$(filter-out -Werror,$(CXX_FLAGS_TMP))
endif

# LEVEL OF TRACE
VP_DMODE ?= 0
CXX_FLAGS += -DVP_DEBUG_MODE=$(VP_DMODE)

# FLAG DEFENSIF
ifeq ($(VP_DEFENSIF), yes)
  CXX_FLAGS += -DVP_DEFENSIF
endif

# --->
# ---> MAKE FLAGS
# --->

MAKE_FLAGS     =
ifeq ($(VP_DEBUG),yes)
  MAKE_FLAGS     += VP_DEBUG=yes
endif

ifeq ($(VP_DEFENSIF), yes)
  MAKE_FLAGS     += VP_DEFENSIF=yes
endif

ifdef VP_DMODE
  MAKE_FLAGS     += VP_DMODE=$(VP_DMODE)
endif



.DELETE_ON_ERROR:

all install: src lib plugin FORCE

include: directory FORCE
	cd include; $(MAKE) install
	cd src; $(MAKE) export-header

src: include directory FORCE
	cd src; $(MAKE) install

tests: src directory FORCE
	cd tests; $(MAKE) install

.PHONY : lib
lib: 
	make shared-lib

LIB_NAME = $(PROJECT_LIBNAME)
SHARED_LIB_NAME = lib$(LIB_NAME).so
SHARED_LIB_PATH = $(PROJECT_LIB_PATH)/$(SHARED_LIB_NAME)

shared-lib: $(SHARED_LIB_PATH)

$(SHARED_LIB_PATH): $(PROJECT_OBJ_PATH)/*.o
	$(CXXALL) -shared -Wl,-soname,$(SHARED_LIB_NAME) $^ -o $@ $(LDFLAGS) $(filter-out $(LIBS),-l$(PROJECT_LIBNAME))


plugin:
	cd plugin; make

plugin-clean:
	cd plugin; make clean


directory:
	@if [ ! -d lib ] ;\
	then \
		echo "*" ; \
		echo "* Creation of the lib directory..." ; \
		echo "*" ; \
		mkdir lib ; \
	fi ;
	@if [ ! -d bin ] ;\
	then \
		echo "*" ; \
		echo "* Creation of the bin directory..." ; \
		echo "*" ; \
		mkdir bin ; \
	fi ;


clean:
	rm -f *% */*%
	rm -f *~ */*~
	cd include; $(MAKE) $@
	cd src; $(MAKE) $@
	cd tests; $(MAKE) $@
	@for i in `find -type f -name *~ -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@for i in `find -type f -name tca.* -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@for i in `find -type d -name pchdir -print ` ; do\
		rm -fr $$i;\
		echo "rm -fr " $$i;\
	done
	@for i in `find -type f -name *.d -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@for i in `find -type f -name .inslog2 -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@for i in `find -type f -name tca.* -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@for i in `find -type d -name pchdir -print ` ; do\
		rm -fr $$i;\
		echo "rm -fr " $$i;\
	done
	@for i in `find -type f -name *.d -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done

uninstall: clean
	cd include; $(MAKE) $@
	cd src; $(MAKE) $@
	cd tests; $(MAKE) $@
	@for i in `find -type f -name build.mk.in -print ` ; do\
		filetoremove=`echo "$$i" | sed -e "s;build.mk.in;build.mk;g"`;\
		rm -f $${filetoremove};\
		echo "rm -f " $${filetoremove};\
	done
	@for i in `find -type f -name vpConfig.h.in -print ` ; do\
		filetoremove=`echo "$$i" | sed -e "s;vpConfig.h.in;vpConfig.h;g"`;\
		rm -f $${filetoremove};\
		echo "rm -f " $${filetoremove};\
	done
	@for i in `find -type f -name config-doxygen.in -print ` ; do\
		filetoremove=`echo "$$i" | sed -e "s;config-doxygen.in;config-doxygen;g"`;\
		rm -f $${filetoremove};\
		echo "rm -f " $${filetoremove};\
	done
	@for i in `find -type f -name .depend -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@rm doc/html -rf $(PROJECT_DIR_DEP) $(PROJECT_DIR_OBJ)
	rm -rf config.log config.status aclocal.m4 autom4te.cache/ missing

uninstallall: uninstall
	$(MAKE) clean;
	$(MAKE) uninstall;
	rm -rf lib/*
	rm -rf doc/html
	@for i in `find -type f -name *.exe -print ` ; do\
		rm -f $$i;\
		echo "rm -f " $$i;\
	done
	@rm lib bin -rf
	@for i in `find -type f -name Makefile.in -print ` ; do\
		filetoremove=`echo "$$i" | sed -e "s;Makefile.in;Makefile;g"`;\
		rm -f $${filetoremove};\
		echo "rm -f " $${filetoremove};\
	done
	@for filetoremove in `find include -type f -name "*.h" -print ` ; do\
		rm -f $${filetoremove};\
		echo "rm -f " $${filetoremove};\
	done


html-doc:
	@echo "html documentation creation..."
	cd doc; doxygen Doxyfile

FORCE:
