# ------------------------------------------------------------------------------------------------
# Couplings library

add_library(libcouplings "couplings.f90")

target_compile_options(libcouplings PUBLIC ${OpenMP_Fortran_FLAGS})

target_include_directories(libcouplings PUBLIC "${GBTOLIB_INCLUDE_DIRS}")

set_target_properties(libcouplings PROPERTIES
    OUTPUT_NAME couplings
    LINK_FLAGS "${OpenMP_Fortran_FLAGS}"
)

target_link_libraries(libcouplings "${GBTOLIB_LIBRARIES}")

# ------------------------------------------------------------------------------------------------
# Outer library

set(outer_library_sources
    "bound.f"
    "cfasym.f"
    "eigenp.f"
    "interf.f"
    #"interv.f"
    "ixsecs.f"
    "k_adapt.f"
    #"km_tdel.f"
    "kmatadgeneral.f"
    #"kmatsub.c2v.c3v.f"
    #"kmatsub.c2v.cinfv.f"
    #"mcqd.f"
    "outerio.f"
    "outermisc.f"
    "pfarm_interface.f"
    "QB_interface.f"
    "reson.f"
    "rknint.f"
    "rksuite.f"
    #"rot_lin_s.f"
    #"rotions_lin.f"
    "rpropg.f"
    "rsolve.f"
    #"stgqb2.f"
    "swinterf.f"
    "tdip.f"
    "timedel.f"
    "tmatrx.f"
    "version_control.F90"
    "vibrmt.f"
)

add_library(libouter ${outer_library_sources})

target_compile_options(libouter PUBLIC ${OpenMP_Fortran_FLAGS})

target_include_directories(libouter PUBLIC
    "${CMAKE_CURRENT_BINARY_DIR}/../libutil/mod"
    ${GBTOLIB_INCLUDE_DIRS}
)

set_target_properties(libouter PROPERTIES
    OUTPUT_NAME outer
    LINK_FLAGS "${OpenMP_Fortran_FLAGS}"
)

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

if(UKRMOL_OUT_GIT_AUTH)
    set_property(SOURCE "version_control.F90" APPEND PROPERTY COMPILE_DEFINITIONS "GIT_AUTH=${UKRMOL_OUT_GIT_AUTH}")
endif()

if(UKRMOL_OUT_GIT_HASH)
    set_property(SOURCE "version_control.F90" APPEND PROPERTY COMPILE_DEFINITIONS "GIT_HASH=${UKRMOL_OUT_GIT_HASH}")
endif()

if(UKRMOL_OUT_GIT_DATE)
    set_property(SOURCE "version_control.F90" APPEND PROPERTY COMPILE_DEFINITIONS "GIT_DATE=${UKRMOL_OUT_GIT_DATE}")
endif()

# ------------------------------------------------------------------------------------------------
# RMT interface (library)

add_library(librmt_interface "rmt_molecular_interface.f90")

target_compile_options(librmt_interface PUBLIC ${OpenMP_Fortran_FLAGS})

target_include_directories(librmt_interface PUBLIC "${GBTOLIB_INCLUDE_DIRS}")

set_target_properties(librmt_interface PROPERTIES
    OUTPUT_NAME rmt_interface
    LINK_FLAGS "${OpenMP_Fortran_FLAGS}"
)

target_link_libraries(librmt_interface ${GBTOLIB_LIBRARIES})

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

install(TARGETS libouter libcouplings librmt_interface
        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}/outer")
