# ------------------------------------------------------------------------------------------------
# COMPAK library

add_library(libcompak
    "compak.f90"
    "blas95_compak.F90"
    "lapack95_compak.F90"
    "mpi_rsolve.f90"
    "photo_outerio.f90"
    "read_inner_dipoles.f90"
    "rsolve_compak.f"
    "write_pw_dipoles.f90"
    "writsc.f"
    "writsh.f"
)

if(BLA_F95)
    # when using external blas95/lapack95 wrapper, communicate it to the source code
    message(STATUS "COMPAK will be built with external blas95/lapack95 wrappers")
    set_source_files_properties(blas95_compak.F90 lapack95_compak.F90 PROPERTIES COMPILE_DEFINITIONS BLA_F95=1)
endif()

set_target_properties(libcompak PROPERTIES
    OUTPUT_NAME compak
    LINK_FLAGS "${OpenMP_Fortran_FLAGS}"
)

target_include_directories(libcompak PUBLIC
    ${GBTOLIB_INCLUDE_DIRS}
)

target_link_libraries(libcompak
    libouter
    libutil
    ${GBTOLIB_LIBRARIES}
    ${LAPACK_LIBRARIES}
    ${BLAS_LIBRARIES}
)

# ------------------------------------------------------------------------------------------------
# installation targets

install(TARGETS libcompak
        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}/compak")
