cmake_minimum_required(VERSION 2.8)

project(feast Fortran)

set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../../Libs)

file(GLOB FEAST_SRC *.f90)

set(SPIKE_SRC
    spike-src/cpivul.f
    spike-src/cspike_smp.f90
    spike-src/dpivul.f
    spike-src/dspike_smp.f90
    spike-src/dzlbprim.f90
    spike-src/f90_functions_wrapper.f90
    spike-src/sclbprim.f90
    spike-src/spike_smp_utilities.f90
    spike-src/spivul.f
    spike-src/sspike_smp.f90
    spike-src/zpivul.f
    spike-src/zspike_smp.f90
)

if(USE_MKL)
    add_definitions(-DMKL)
endif()

if(CMAKE_C_COMPILER_ID MATCHES "GNU") # GNU GCC COMPILER
    link_libraries(pthread gfortran quadmath openblas)
    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -ffixed-line-length-none")
elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC") # MSVC COMPILER
    link_libraries(libopenblas)
endif()

if(BUILD_SHARED)
    add_library(${PROJECT_NAME} SHARED ${FEAST_SRC} ${SPIKE_SRC})
else()
    add_library(${PROJECT_NAME} STATIC ${FEAST_SRC} ${SPIKE_SRC})
endif()