# Manage the KMERS_OVER_32 option for graph construction
if (KMERS_OVER_32)
    add_definitions(-Dkmer_type=__uint128_t)
endif (KMERS_OVER_32)
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} )

include_directories(${ZLIB_INCLUDE_DIRS})

add_executable(ks_debruijn4 main.cpp minia/Pool.cpp minia/Bank.cpp minia/Bloom.cpp minia/Hash16.cpp minia/Kmer.cpp minia/Set.cpp minia/Utils.cpp minia/SortingCount.cpp minia/LinearCounter.cpp minia/Debloom.cpp minia/Traversal.cpp minia/Terminator.cpp minia/OAHash.cpp minia/GraphOutput.cpp minia/Bank.h minia/Debloom.h minia/Hash16.h minia/LinearCounter.h minia/Pool.h minia/SortingCount.h minia/Traversal.h minia/lut.h minia/Bloom.h minia/GraphOutput.h minia/Kmer.h minia/OAHash.h minia/Set.h minia/Terminator.h minia/Utils.h)

# Declare use of c++11 features
# TODO: This conditional should be removed as soon as cmake 2.8.12 or greater
# becomes acceptable as a requirement since the solution using target_compile_options
# (introduced in 2.8.12) is a lot cleaner.
IF ((${CMAKE_VERSION} VERSION_LESS 2.8.12) )
  SET(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} -std=c++11")
  SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11")
  SET(CMAKE_C_FLAGS_RELEASE   "${CMAKE_C_FLAGS_RELEASE} -std=c++11")
  SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11")
  SET(CMAKE_C_FLAGS_DISTRIBUTION    "${CMAKE_C_FLAGS_DISTRIBUTION} -std=c++11")
  SET(CMAKE_CXX_FLAGS_DISTRIBUTION  "${CMAKE_CXX_FLAGS_DISTRIBUTION} -std=c++11")
  SET(CMAKE_C_FLAGS_PROFILING   "${CMAKE_C_FLAGS_PROFILING} -std=c++11")
  SET(CMAKE_CXX_FLAGS_PROFILING "${CMAKE_CXX_FLAGS_PROFILING} -std=c++11")
ELSE ()
  target_compile_options(ks_debruijn4 PRIVATE "-std=c++11")
ENDIF ()


include_directories( ${ZLIB_INCLUDE_DIR} )
target_link_libraries(ks_debruijn4 ${ZLIB_LIBRARY})

install(TARGETS ks_debruijn4 DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kissplice)
