###
#
# @file          : CMakeLists.txt
#
# @description   : Project MORSE
#
# @version       :
# @created by    : Cedric Castagnede
# @creation date : 24-01-2012
# @last modified : mar. 29 mai 2012 10:25:55 CEST
#
###

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#############################################
#                                           #
#        Compilation of the MORSE           #
#                                           #
#############################################

# Create ${CMAKE_BINARY_DIR}/include
# ----------------------------------
IF(NOT EXISTS ${CMAKE_BINARY_DIR}/include)
    FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include)
ENDIF()

# Set the version of this project
# -------------------------------
INCLUDE(BuildSystemTools)
GET_VERSION("MAGMA_MORSE" "${CMAKE_CURRENT_SOURCE_DIR}/include/morse.h")

# Add definitions according to dependencies
# -----------------------------------------
IF(HAVE_MPI)
    ADD_DEFINITIONS(-DMORSE_USE_MPI)
ENDIF(HAVE_MPI)
IF(HAVE_CUDA)
    ADD_DEFINITIONS(-DMORSE_USE_CUDA)
ENDIF(HAVE_CUDA)
IF(MORSE_SCHED_QUARK)
    ADD_DEFINITIONS(-DMORSE_SCHED_QUARK)
ENDIF(MORSE_SCHED_QUARK)
IF(MORSE_SCHED_STARPU)
    ADD_DEFINITIONS(-DMORSE_SCHED_STARPU)
ENDIF(MORSE_SCHED_STARPU)

# Define precision supported by MAGMA_MORSE
# -----------------------------------------
SET(MAGMA_MORSE_PRECISION ${MORSE_PRECISION})

# Include headers
# ---------------
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)

# Check for the subdirectories 
# ----------------------------
ADD_SUBDIRECTORY(coreblas)

# Include headers
# ---------------
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/control)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/control)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/coreblas/include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/coreblas/include)

# Check for the subdirectories 
# ----------------------------
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(control)
ADD_SUBDIRECTORY(compute)
ADD_SUBDIRECTORY(runtime)
IF(MORSE_ENABLE_TESTING)
    ADD_SUBDIRECTORY(testing)
ENDIF()
IF(MORSE_ENABLE_TIMING)
    ADD_SUBDIRECTORY(timing)
ENDIF()

# Create file morse_starpu.pc
# ---------------------------
IF(MORSE_SCHED_STARPU)
    GENERATE_PKGCONFIG_FILE("MORSE" "${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/morse-starpu.pc.in")
ENDIF()

# Create file morse_quark.pc
# --------------------------
IF(MORSE_SCHED_QUARK)
    GENERATE_PKGCONFIG_FILE("MORSE" "${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/morse-quark.pc.in")
ENDIF(MORSE_SCHED_QUARK)

# Generate documentation
# ----------------------
ADD_SUBDIRECTORY(docs)

# Installation
# ------------
INSTALL(DIRECTORY ${CMAKE_BINARY_DIR}/include
        DESTINATION ${CMAKE_INSTALL_PREFIX})

###
### END CMakeLists.txt
###
