
######################################################################################
### 1) Definitions (required for tsp target)
######################################################################################

SET(TSP_SRC_DIR ${MO_SRC_DIR}/tutorial/examples/tsp CACHE PATH "TSP src directory")
SET(TSP_BIN_DIR ${MO_BIN_DIR}/tutorial/examples/tsp CACHE PATH "TSP binary directory")

SET(FUNCTION_SRC_DIR ${MO_SRC_DIR}/tutorial/examples/function CACHE PATH "FUNCTION src directory")
SET(FUNCTION_BIN_DIR ${MO_BIN_DIR}/tutorial/examples/function CACHE PATH "FUNCTION binary directory")

######################################################################################

######################################################################################
### 2) How to manage copy of benchs ?
######################################################################################


IF(ENABLE_CMAKE_COPY)
	SET(BENCH_LIST
		berlin52.tsp
		eil101.tsp
		pr2392.tsp
		rl5915.tsp
		usa13509.tsp
	)
	
	FOREACH (bench ${BENCH_LIST})
			EXECUTE_PROCESS(
				COMMAND ${CMAKE_COMMAND} -E copy_if_different
	      			${MO_SRC_DIR}/tutorial/examples/tsp/benchs/${bench}
	    			${MO_BIN_DIR}/tutorial/examples/tsp/benchs/${bench}
	    	)
	ENDFOREACH (bench)
	EXECUTE_PROCESS(
	   	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson1/param
			${MO_BIN_DIR}/tutorial/Lesson1/param
    	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson2/param
			${MO_BIN_DIR}/tutorial/Lesson2/param
    	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson3/param
			${MO_BIN_DIR}/tutorial/Lesson3/param
    	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson4/param
			${MO_BIN_DIR}/tutorial/Lesson4/param
    	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson5/param
			${MO_BIN_DIR}/tutorial/Lesson5/param
    	COMMAND ${CMAKE_COMMAND} -E copy_if_different
			${MO_SRC_DIR}/tutorial/Lesson6/param
			${MO_BIN_DIR}/tutorial/Lesson6/param
	)
ENDIF(ENABLE_CMAKE_COPY)

######################################################################################
### 3) Where must cmake go now ?
######################################################################################

#SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4 Lesson5 Lesson6)
ADD_SUBDIRECTORY(examples)
ADD_SUBDIRECTORY(Lesson1)
ADD_SUBDIRECTORY(Lesson2)
ADD_SUBDIRECTORY(Lesson3)
ADD_SUBDIRECTORY(Lesson4)
ADD_SUBDIRECTORY(Lesson5)
ADD_SUBDIRECTORY(Lesson6)


######################################################################################
### 4) Target to copy benchs and parameters file
######################################################################################

ADD_CUSTOM_COMMAND(
    OUTPUT 
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/berlin52.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/eil101.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/pr2392.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/rl5915.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/usa13509.tsp
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/examples/tsp/benchs/berlin52.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/berlin52.tsp
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/examples/tsp/benchs/eil101.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/eil101.tsp
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/examples/tsp/benchs/pr2392.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/pr2392.tsp
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/examples/tsp/benchs/rl5915.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/rl5915.tsp
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/examples/tsp/benchs/usa13509.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/usa13509.tsp
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson1/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson1/param
    	${MO_BIN_DIR}/tutorial/Lesson1
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson2/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson2/param
    	${MO_BIN_DIR}/tutorial/Lesson2
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson3/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson3/param
    	${MO_BIN_DIR}/tutorial/Lesson3
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson4/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson4/param
    	${MO_BIN_DIR}/tutorial/Lesson4
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson5/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson5/param
    	${MO_BIN_DIR}/tutorial/Lesson5
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${MO_BIN_DIR}/tutorial/Lesson6/param
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    	${MO_SRC_DIR}/tutorial/Lesson6/param
    	${MO_BIN_DIR}/tutorial/Lesson6
)

ADD_CUSTOM_TARGET(install DEPENDS 
	${MO_BIN_DIR}/tutorial/Lesson1/param
	${MO_BIN_DIR}/tutorial/Lesson2/param
	${MO_BIN_DIR}/tutorial/Lesson3/param
	${MO_BIN_DIR}/tutorial/Lesson4/param
	${MO_BIN_DIR}/tutorial/Lesson5/param
	${MO_BIN_DIR}/tutorial/Lesson6/param
	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/berlin52.tsp
	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/eil101.tsp
	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/pr2392.tsp
	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/rl5915.tsp
	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/usa13509.tsp
)
			  
ADD_CUSTOM_TARGET(benchs DEPENDS
		${MO_BIN_DIR}/tutorial/examples/tsp/benchs/berlin52.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/eil101.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/pr2392.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/rl5915.tsp
    	${MO_BIN_DIR}/tutorial/examples/tsp/benchs/usa13509.tsp
)			  

ADD_CUSTOM_TARGET(lesson1 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson1/param)

ADD_CUSTOM_TARGET(lesson2 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson2/param)

ADD_CUSTOM_TARGET(lesson3 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson3/param)

ADD_CUSTOM_TARGET(lesson4 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson4/param)

ADD_CUSTOM_TARGET(lesson5 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson5/param)

ADD_CUSTOM_TARGET(lesson6 DEPENDS ${MO_BIN_DIR}/tutorial/Lesson6/param)
