# kissreads requirements
find_package(ZLIB REQUIRED) # imports the ZLIB::ZLIB target
find_package(OpenMP) # for CMake 3.9+, import targets OpenMP::OpenMP_<lang>
if(DEFINED OpenMP_CXX_FLAGS AND NOT TARGET OpenMP::OpenMP_CXX)
  # For older CMake emulate target (https://cliutils.gitlab.io/modern-cmake/chapters/packages/OpenMP.html)
  find_package(Threads REQUIRED)
  add_library(OpenMP::OpenMP_CXX IMPORTED INTERFACE)
  set_property(TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_COMPILE_OPTIONS ${OpenMP_CXX_FLAGS})
  set_property(TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_LINK_LIBRARIES ${OpenMP_CXX_FLAGS} Threads::Threads)
endif()

# Get parent directory for a nicer alternative to "../include"
get_property(PARENT_DIRECTORY DIRECTORY PROPERTY PARENT_DIRECTORY)

# Kissreads binaries
add_executable(ks_kissreadsSNPS commons.cpp extension_algorithm.cpp interface_libchash.cpp libchash.cpp outputs.cpp coherent_algorithm.cpp couple.cpp fragment_index.cpp kissReads.cpp list.cpp tree.cpp fragment_info.cpp Utils.cpp)
target_compile_definitions(ks_kissreadsSNPS PRIVATE CLASSICAL_SPANNING)
target_include_directories(ks_kissreadsSNPS PRIVATE "${PARENT_DIRECTORY}/include")
target_link_libraries(ks_kissreadsSNPS ZLIB::ZLIB m)
set_property(TARGET ks_kissreadsSNPS PROPERTY RUNTIME_OUTPUT_DIRECTORY "${BUILD_INTERNAL_BINDIR}")
install(TARGETS ks_kissreadsSNPS RUNTIME DESTINATION "${RELATIVE_INTERNAL_BINDIR}")

add_executable(ks_kissreadsSplice commons.cpp extension_algorithm.cpp interface_libchash.cpp libchash.cpp outputs.cpp coherent_algorithm.cpp couple.cpp fragment_index.cpp kissReads.cpp list.cpp tree.cpp fragment_info.cpp Utils.cpp)
target_compile_definitions(ks_kissreadsSplice PRIVATE CLASSICAL_SPANNING INPUT_FROM_KISSPLICE)
target_include_directories(ks_kissreadsSplice PRIVATE "${PARENT_DIRECTORY}/include")
target_link_libraries(ks_kissreadsSplice ZLIB::ZLIB m)
set_property(TARGET ks_kissreadsSplice PROPERTY RUNTIME_OUTPUT_DIRECTORY "${BUILD_INTERNAL_BINDIR}")
install(TARGETS ks_kissreadsSplice RUNTIME DESTINATION "${RELATIVE_INTERNAL_BINDIR}")

if(TARGET OpenMP::OpenMP_CXX)
    target_link_libraries(ks_kissreadsSNPS OpenMP::OpenMP_CXX)
    target_link_libraries(ks_kissreadsSplice OpenMP::OpenMP_CXX)
endif()
