# This project is designed to be built outside the Insight source tree.
PROJECT(RicianNoiseDTI)

	cmake_minimum_required(VERSION 2.8)

	OPTION(SLICER3_MODULE "Do you want to add your modules to Slicer3?" ON)
	
	IF(SLICER3_MODULE)

		# We need Slicer3

		find_package(Slicer3 REQUIRED)
		include(${Slicer3_USE_FILE})

		# Set reasonable default install prefix and output paths
		# (after setting Slicer3_DIR, delete CMAKE_INSTALL_PREFIX and re-configure)

		slicer3_set_default_install_prefix_for_external_projects()

		#Include Directories
		#These 3 directories contain files needed for the execution
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval/itkModules)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval/namicModules/DiffusionTensorStatistics)


		# This block builds a module as both a shared object and an executable
				
		#### TensorSmoothingFilter ####
		set(TensorSmoothingFilter_SOURCE TensorSmoothingFilter.cxx )

		GENERATECLP(TensorSmoothingFilter_SOURCE TensorSmoothingFilter.xml)
		add_library(TensorSmoothingFilterLib SHARED ${TensorSmoothingFilter_SOURCE})
		set_target_properties(TensorSmoothingFilterLib PROPERTIES COMPILE_FLAGS "-Dmain=ModuleEntryPoint")
		target_link_libraries(TensorSmoothingFilterLib ${ITK_LIBRARIES})
		slicer3_set_plugins_output_path(TensorSmoothingFilterLib)
		slicer3_install_plugins(TensorSmoothingFilterLib)

		add_executable(TensorSmoothingFilter ${TensorSmoothingFilter_SOURCE})
		target_link_libraries( TensorSmoothingFilter ${ITK_LIBRARIES})
		slicer3_set_plugins_output_path(TensorSmoothingFilter)
		slicer3_install_plugins(TensorSmoothingFilter)
		################################

		#### DWIRicianNoiseRemovalFilter ####
		set(DWIRicianNoiseRemovalFilter_SOURCE DWIRicianNoiseRemovalFilter.cxx )

		GENERATECLP(DWIRicianNoiseRemovalFilter_SOURCE DWIRicianNoiseRemovalFilter.xml)
		add_library(DWIRicianNoiseRemovalFilterLib SHARED ${DWIRicianNoiseRemovalFilter_SOURCE})
		set_target_properties(DWIRicianNoiseRemovalFilterLib PROPERTIES COMPILE_FLAGS "-Dmain=ModuleEntryPoint")
		target_link_libraries(DWIRicianNoiseRemovalFilterLib ${ITK_LIBRARIES})
		slicer3_set_plugins_output_path(DWIRicianNoiseRemovalFilterLib)
		slicer3_install_plugins(DWIRicianNoiseRemovalFilterLib)

		add_executable(DWIRicianNoiseRemovalFilter ${DWIRicianNoiseRemovalFilter_SOURCE})
		target_link_libraries( DWIRicianNoiseRemovalFilter ${ITK_LIBRARIES})
		slicer3_set_plugins_output_path(DWIRicianNoiseRemovalFilter)
		slicer3_install_plugins(DWIRicianNoiseRemovalFilter)
		######################################

	#If there are not Slicer3 built version available
	ELSE(SLICER3_MODULE)

		# Find ITK.
		FIND_PACKAGE(ITK)
		IF(ITK_FOUND)
			INCLUDE(${ITK_USE_FILE})
		ELSE(ITK_FOUND)
			MESSAGE(FATAL_ERROR "Cannot build without ITK.  Please set ITK_DIR.")
		ENDIF(ITK_FOUND)

		SET(GenerateCLP_DIR CACHE FILEPATH "Directory where UseGenerateCLP.cmake can be found")
		#Include Directories
		#These 3 directories contain files needed for the execution
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval/itkModules)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/RicianNoiseRemoval/namicModules/DiffusionTensorStatistics)
		
		#These 3 directories are for the compatibility with Slicer3
		MESSAGE(STATUS "GenerateCLP isn't available, using pre-generated CLPfiles")
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/tclap/include)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/ModuleDescriptionParser)
		INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/CLP)
		
		ADD_EXECUTABLE(TensorSmoothingFilter TensorSmoothingFilter.cxx)
		ADD_EXECUTABLE(DWIRicianNoiseFilter DWIRicianNoiseRemovalFilter.cxx)
		#Libraries
		TARGET_LINK_LIBRARIES(TensorSmoothingFilter ITKCommon ITKIO) 
		if(COMMAND cmake_policy)
		   cmake_policy(SET CMP0003 NEW)
		endif(COMMAND cmake_policy)
		TARGET_LINK_LIBRARIES(DWIRicianNoiseFilter ITKCommon ITKIO)

	ENDIF(SLICER3_MODULE)

