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

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
INCLUDE(RulesPrecisions)

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

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

# Generate the morse sources for all possible precisions
# ------------------------------------------------------
SET(COREBLAS_SRCS_GENERATED "")
SET(ZSRC 
    #compute/core_zbrdalg.c
    #compute/core_zgbelr.c
    #compute/core_zgblrx.c
    #compute/core_zgbrce.c
    compute/core_zgeadd.c
    compute/core_zgelqt.c
    compute/core_zgemm.c
    compute/core_zgeqrt.c
    compute/core_zgessm.c
    #compute/core_zgessq.c
    compute/core_zgetrf.c
    compute/core_zgetrf_incpiv.c
    #compute/core_zgetrf_reclap.c
    ##dirty## compute/core_zgetrf_rectil.c
    #compute/core_zgetrip.c
    #compute/core_zhbelr.c
    #compute/core_zhblrx.c
    #compute/core_zhbrce.c
    #compute/core_zhbtype1cb.c
    #compute/core_zhbtype2cb.c
    #compute/core_zhbtype3cb.c
    #compute/core_zhegst.c
    compute/core_zhemm.c
    compute/core_zher2k.c
    #compute/core_zherfb.c
    compute/core_zherk.c
    #compute/core_zhessq.c
    compute/core_zlacpy.c
    compute/core_zlag2c.c
    #compute/core_zlange.c
    #compute/core_zlanhe.c
    #compute/core_zlansy.c
    #compute/core_zlarfb_gemm.c
    #compute/core_zlarfx_tbrd.c
    #compute/core_zlarfy.c
    compute/core_zlaset2.c
    compute/core_zlaset.c
    ##drity## compute/core_zlaswp.c
    #compute/core_zlatro.c
    compute/core_zlauum.c
    compute/core_zpamm.c
    compute/core_zparfb.c
    compute/core_zpemv.c
    compute/core_zplghe.c
    compute/core_zplgsy.c
    compute/core_zplrnt.c
    #compute/core_zplssq.c
    compute/core_zpotrf.c
    #compute/core_zshift.c
    compute/core_zssssm.c
    #compute/core_zswpab.c
    compute/core_zsymm.c
    compute/core_zsyr2k.c
    compute/core_zsyrk.c
    #compute/core_zsyssq.c
    #compute/core_ztrdalg.c
    compute/core_ztrmm.c
    compute/core_ztrsm.c
    compute/core_ztrtri.c
    compute/core_ztslqt.c
    compute/core_ztsmlq.c
    #compute/core_ztsmlq_corner.c
    #compute/core_ztsmlq_hetra1.c
    compute/core_ztsmqr.c
    #compute/core_ztsmqr_corner.c
    #compute/core_ztsmqr_hetra1.c
    compute/core_ztsqrt.c
    #compute/core_ztsrfb.c
    compute/core_ztstrf.c
    compute/core_zttlqt.c
    compute/core_zttmlq.c
    compute/core_zttmqr.c
    compute/core_zttqrt.c
    compute/core_zunmlq.c
    compute/core_zunmqr.c
    )

precisions_rules_py(COREBLAS_SRCS_GENERATED "${ZSRC}"
                    PRECISIONS "${MAGMA_MORSE_PRECISION}"
                    DICTIONARY "MORSE")

SET(COREBLAS_SRCS
    ../control/global.c
    ##dirty## ../control/auxiliary.c
    ##dirty## ../control/descriptor.c
    ##dirty## ../control/tile.c
    ${COREBLAS_SRCS_GENERATED}
   )
ADD_CUSTOM_TARGET(coreblas_source ALL SOURCES ${COREBLAS_SRCS})

# Compile step
# ------------
ADD_LIBRARY(coreblas ${COREBLAS_SRCS})
ADD_DEPENDENCIES(coreblas coreblas_source)
ADD_DEPENDENCIES(coreblas coreblas_include)
SET_PROPERTY(TARGET coreblas PROPERTY LINKER_LANGUAGE Fortran)

# Dependencies step
# -----------------
FOREACH(_external_package "blas" "cblas" "lapack" "lapacke" "quark" "starpu")
    STRING(TOUPPER "${_external_package}" _NAMEVAR)
    IF(${_NAMEVAR}_EP)
        ADD_DEPENDENCIES(coreblas ${_external_package}_build)
    ENDIF()
ENDFOREACH()

# installation
# ------------
INSTALL(TARGETS coreblas
        DESTINATION lib)

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

