cmake_minimum_required(VERSION 3.10)
project(wgraph-am_paths 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()

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

add_subdirectory(priority_queue)
include_directories("./priority_queue")

add_subdirectory(graph)
include_directories("./graph" "./graph/matrix")

add_executable(test_dijkstra test_dijkstra.cpp dijkstra_algorithm.hpp dijkstra_algorithm_imp.hpp city.cpp city.hpp)
target_compile_definitions(test_dijkstra PRIVATE -D__VERBOSE__=1)

add_executable(test_floyd test_floyd.cpp floyd_algorithm.hpp floyd_algorithm_imp.hpp city.cpp city.hpp print_floyd_matrices.hpp print_floyd_matrices.cpp)
target_compile_definitions(test_floyd PRIVATE -D__VERBOSE__=1)

add_executable(test_astar test_astar.cpp a_star_algorithm.hpp a_star_algorithm_imp.hpp city.cpp city.hpp)
target_compile_definitions(test_astar PRIVATE -D__VERBOSE__=1)

add_test(NAME TestWGraphAMDijkstra COMMAND ${Python_EXECUTABLE} run_tests.py ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${WIN32}>:$<CONFIG>>/test_dijkstra 01_tests_dijkstra WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME TestWGraphAMFloyd COMMAND ${Python_EXECUTABLE} run_tests.py ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${WIN32}>:$<CONFIG>>/test_floyd 02_tests_floyd WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME TestWGraphAMAStar COMMAND ${Python_EXECUTABLE} run_tests.py ${CMAKE_CURRENT_BINARY_DIR}/$<$<BOOL:${WIN32}>:$<CONFIG>>/test_astar 03_tests_astar WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})