find_package(Python3 REQUIRED COMPONENTS Development)
if (NOT Python3_FOUND)
    message(FATAL_ERROR "Python3 not found.")
else()
    message(STATUS "Found Python3: ${Python3_INCLUDE_DIRS}")
endif()

add_executable(memscope_test)
add_subdirectory(framework)
add_subdirectory(utility)
add_subdirectory(analysis)
add_subdirectory(event_trace)

set(memscope_header ../csrc
                 ../csrc/analysis
                 ../csrc/framework
                 ../csrc/event_trace
                 ../csrc/utility
                 ../platform/securec/include)
set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage -lgcov")
set(gtest_header ../opensource/googletest/googletest/include/)
set(json_header ../opensource/json/single_include)

file(GLOB_RECURSE TEST_ORIGINAL_SOURCE ../csrc/framework/*.cpp
                                       ../csrc/analysis/*.cpp
                                       ../csrc/event_trace/*.cpp
                                       ../csrc/utility/*.cpp
                                       ../platform/securec/src/*.c)
list(FILTER TEST_ORIGINAL_SOURCE EXCLUDE REGEX ".*\/atb_hooks\/.*")

list(SORT TEST_ORIGINAL_SOURCE)
file(GLOB_RECURSE TEST_SOURCE ./test.cpp)
list(SORT TEST_SOURCE)
target_sources(memscope_test PRIVATE ${TEST_SOURCE})
target_sources(memscope_test PRIVATE ${TEST_ORIGINAL_SOURCE})

include_directories(memscope_test ${memscope_header} ${gtest_header} ${Python3_INCLUDE_DIRS} ${json_header})

target_link_libraries(memscope_test gtest_main dl pthread stdc++fs ${Python3_LIBRARIES} rt sqlite3)
 
add_test(NAME memscope_test COMMAND memscope_test)