##############################################################################
#
# \file   CMakeLists.txt
# \brief  CMake file to configure build system of executables.
# \author Andreas Schuh
# \date   02/08/11
#
# $Revision: 150 $
# $Id: CMakeLists.txt 150 2011-02-09 16:05:01Z schuha@UPHS.PENNHEALTH.PRV $
#
# <b>Last changed</b>
# $Author: schuha@UPHS.PENNHEALTH.PRV $
# $Date: 2011-02-09 11:05:01 -0500 (Wed, 09 Feb 2011) $
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# For copyright information see Copyright section of project
# ReadMe.html in the project's root directory.
#
# Contact: sbia-software@uphs.upenn.edu
#
##############################################################################

# ============================================================================
# source files
# ============================================================================

set (SBIA_ODVBA_HDRS
  SbiaOdvbaUtilities.h
  SbiaOdvbaAlgorithm.h
)

set (SBIA_ODVBA_SRCS
  SbiaOdvbaUtilities.cpp
  SbiaOdvbaAlgorithm.cpp
)

set (SBIA_ODVBA_SOURCES
  ${SBIA_ODVBA_HDRS}
  ${SBIA_ODVBA_SRCS}
)

# ============================================================================
# source groups
# ============================================================================

source_group ("Templates" FILES ${SBIA_TEMPLATE_SOURCES})
source_group ("Default"   FILES ${SBIA_DEFAULT_SOURCES})
source_group ("ODVBA"     FILES ${SBIA_ODVBA_SOURCES})
source_group ("Main"      FILES SbiaOdvbaCreateIndex.cpp)
source_group ("Main"      FILES SbiaOdvbaCreateNI.cpp)
source_group ("Main"      FILES SbiaOdvbaMain.cpp)

# ============================================================================
# executable target(s)
# ============================================================================

# Add executable target for each executable program using the macro
# sbia_add_executable () which is used just the same way as the CMake command
# add_executable ().

# index creation
sbia_add_executable (
  OdvbaCreateIndex
    ${SBIA_TEMPLATE_SOURCES}
    ${SBIA_DEFAULT_SOURCES}
    ${SBIA_ODVBA_SOURCES}
    SbiaOdvbaCreateIndex.cpp
)

target_link_libraries (
  OdvbaCreateIndex
    ${NiftiCLib_LIB}
    ${OpenCV_HIGHGUI_LIBRARY}
    ${OpenCV_CV_LIBRARY}
    ${OpenCV_CXCORE_LIBRARY}
    ${CBLAS_LIB}
    ${ATLAS_LIB}
)

# neighborhood creation
sbia_add_executable (
  OdvbaCreateNI
    ${SBIA_TEMPLATE_SOURCES}
    ${SBIA_DEFAULT_SOURCES}
    ${SBIA_ODVBA_SOURCES}
    SbiaOdvbaCreateNI.cpp
)

target_link_libraries (
  OdvbaCreateNI
    ${NiftiCLib_LIB}
    ${OpenCV_HIGHGUI_LIBRARY}
    ${OpenCV_CV_LIBRARY}
    ${OpenCV_CXCORE_LIBRARY}
    ${CBLAS_LIB}
    ${ATLAS_LIB}
)

# group analysis
sbia_add_executable (
  Odvba
    ${SBIA_TEMPLATE_SOURCES}
    ${SBIA_DEFAULT_SOURCES}
    ${SBIA_ODVBA_SOURCES}
    SbiaOdvbaMain.cpp
)

set_target_properties (
  Odvba
  PROPERTIES
    COMPILE_FLAGS -DSBIA_ODVBA_USE_MPI=0
)

target_link_libraries (
  Odvba
    ${NiftiCLib_LIB}
    ${OpenCV_HIGHGUI_LIBRARY}
    ${OpenCV_CV_LIBRARY}
    ${OpenCV_CXCORE_LIBRARY}
    ${CBLAS_LIB}
    ${ATLAS_LIB}
)

if (ODVBA_ENABLE_MPI)
	sbia_add_executable (
	  OdvbaMPI
	    ${SBIA_TEMPLATE_SOURCES}
	    ${SBIA_DEFAULT_SOURCES}
	    ${SBIA_ODVBA_SOURCES}
	    SbiaOdvbaMain.cpp
	)

	set_target_properties (
	  OdvbaMPI
	  PROPERTIES
	    COMPILE_FLAGS -DSBIA_ODVBA_USE_MPI=1
	)

	target_link_libraries (
	  OdvbaMPI
	    ${NiftiCLib_LIB}
	    ${OpenCV_HIGHGUI_LIBRARY}
	    ${OpenCV_CV_LIBRARY}
	    ${OpenCV_CXCORE_LIBRARY}
	    ${CBLAS_LIB}
	    ${ATLAS_LIB}
	    ${MPI_LIBRARIES}
	)
endif ()
