cmake_minimum_required(VERSION 3.24)
project(forza_xr_lifecycle_tests LANGUAGES CXX)
include(CTest)
find_package(Threads REQUIRED)
find_path(FORZA_VULKAN_INCLUDE_DIR vulkan/vulkan.h REQUIRED)
add_executable(xr_lifecycle_test xr_actual_test.cpp)
target_compile_features(xr_lifecycle_test PRIVATE cxx_std_20)
target_compile_definitions(xr_lifecycle_test PRIVATE NOMINMAX _CRT_SECURE_NO_WARNINGS)
target_include_directories(xr_lifecycle_test PRIVATE mocks "${FORZA_VULKAN_INCLUDE_DIR}"
    ../../thirdparty/openxr/include)
target_link_libraries(xr_lifecycle_test PRIVATE Threads::Threads ${CMAKE_DL_LIBS})
foreach(case timeout fence loss device-loss release-failure submit-failure stop shutdown)
    add_test(NAME xr_${case} COMMAND xr_lifecycle_test ${case})
    set_tests_properties(xr_${case} PROPERTIES TIMEOUT 15)
endforeach()
foreach(tu4 0 1)
    add_executable(vr_camera_test_${tu4} vr_camera_test.cpp)
    target_compile_features(vr_camera_test_${tu4} PRIVATE cxx_std_20)
    target_include_directories(vr_camera_test_${tu4} PRIVATE mocks ../../src)
    target_compile_definitions(vr_camera_test_${tu4} PRIVATE _CRT_SECURE_NO_WARNINGS)
    if(tu4)
        target_compile_definitions(vr_camera_test_${tu4} PRIVATE FORZA_TITLE_UPDATE=4)
    endif()
    target_link_libraries(vr_camera_test_${tu4} PRIVATE Threads::Threads)
    add_test(NAME vr_camera_${tu4} COMMAND vr_camera_test_${tu4})
endforeach()
