# ------------------------------------------------------------------------------------------------
# Util library

set(util_library_sources
    "algorithms.f90"
    "coulcc.f"
    "dgamln.f"
    "gaussq.f"
    "lmdif1.f"
    "minpack.f"
    "splev.f"
    "bspline90_22.f90"
    "interpolate.f90"
    "linalg_cl.c"
    "linalg_cl.f90"
)

add_library(libutil ${util_library_sources})

target_compile_options(libutil PRIVATE
    $<$<COMPILE_LANGUAGE:C>:${OpenMP_C_FLAGS}>
    $<$<COMPILE_LANGUAGE:Fortran>:${OpenMP_Fortran_FLAGS}>
)

set_target_properties(libutil PROPERTIES
    OUTPUT_NAME outerutil
    LINK_FLAGS "${OpenMP_Fortran_FLAGS}"
)

if(WITH_CLBLAST)
    message(STATUS "UKRmol-out will be built with CLBlast")
    set_property(SOURCE "linalg_cl.c" APPEND PROPERTY COMPILE_DEFINITIONS useclblast=1)
    set_property(SOURCE "linalg_cl.c" APPEND PROPERTY INCLUDE_DIRECTORIES "${CLBLAST_INCLUDE_DIRS}")
    target_link_libraries(libutil "${CLBLAST_LIBRARIES}")
endif()

# ------------------------------------------------------------------------------------------------
# Installation target

install(TARGETS libutil
        RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
        ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
        LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_Fortran_MODULE_DIRECTORY}/"
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/outerutil")
