set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(INSTALL_GTEST OFF)
set(gtest_force_shared_crt)
include(FetchContent)
FetchContent_Declare(
        googletest
        URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
FetchContent_MakeAvailable(googletest)

file(GLOB TESTS_SOURCES *.cpp)
file(GLOB CPU_TESTS_SOURCES cpu/cpu_test_*.cpp)
file(GLOB GPU_TESTS_SOURCES gpu/gpu_test_*.cpp gpu/gpu_test_*.cu)

enable_testing()
include(CTest)
include(GoogleTest)

add_executable(opnic_tests ${TESTS_SOURCES} ${CPU_TESTS_SOURCES})
target_link_libraries(opnic_tests
        opnic
        gtest
        gtest_main
        gmock
)
gtest_discover_tests(opnic_tests)

if (NOT QM_NO_CUDA)
    add_executable(opnic_gpu_tests ${TESTS_SOURCES} ${GPU_TESTS_SOURCES})
    target_link_libraries(opnic_gpu_tests
        opnic-cuda
        gtest
        gtest_main
        gmock
    )
    gtest_discover_tests(opnic_gpu_tests)
endif ()
