cmake_minimum_required(VERSION 3.10)
project(graph-am_mst VERSION 1.1.1 LANGUAGES CXX)

enable_language(CXX)
set(CMAKE_CXX_STANDARD 11)

if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
    set(CMAKE_CXX_FLAGS "/W4")
    set(CMAKE_CXX_FLAGS_DEBUG "/Od /Zi /EHsc /DEBUG")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    set(CMAKE_CXX_FLAGS "-Wall")
    set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb3")
endif()

enable_testing()
find_package(Python 3 COMPONENTS Interpreter)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")

add_subdirectory(graph)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/graph" "${CMAKE_CURRENT_SOURCE_DIR}/graph/matrix")

add_subdirectory(priority_queue)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/priority_queue")

add_executable(test_mst test_mst.cpp
    prim_algorithm.hpp prim_algorithm_imp.hpp
    kruskal_algorithm.hpp kruskal_algorithm_imp.hpp disjointsets.hpp)

add_test(NAME TestWGraphAMPrim COMMAND ${Python_EXECUTABLE} run_tests.py ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${WIN32}>:$<CONFIG>>/test_mst 01_tests_prim WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME TestWGraphAMKruskal COMMAND ${Python_EXECUTABLE} run_tests.py ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${WIN32}>:$<CONFIG>>/test_mst 02_tests_kruskal WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})