cmake_minimum_required(VERSION 3.20)
project(LoVrrTests LANGUAGES CXX)
enable_testing()
get_filename_component(REPO_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
add_executable(LoVrrPolicyTest policy_test.cpp)
target_include_directories(LoVrrPolicyTest PRIVATE "${REPO_ROOT}/LostOdysseyRecomp")
target_compile_features(LoVrrPolicyTest PRIVATE cxx_std_20)
if(MSVC)
  target_compile_options(LoVrrPolicyTest PRIVATE /W4 /WX)
else()
  target_compile_options(LoVrrPolicyTest PRIVATE -Wall -Wextra -Werror -pedantic)
endif()
add_test(NAME vrr_policy COMMAND LoVrrPolicyTest)
find_package(Python3 COMPONENTS Interpreter REQUIRED)
set(FIXTURE "${CMAKE_CURRENT_BINARY_DIR}/config_fixture.cpp")
add_custom_command(OUTPUT "${FIXTURE}"
  COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/config_fixture.py"
    --root "${REPO_ROOT}" --output "${FIXTURE}"
  DEPENDS config_fixture.py "${REPO_ROOT}/LostOdysseyRecomp/settings/config.cpp"
    "${REPO_ROOT}/LostOdysseyRecomp/gpu/loading_pacing.h"
  VERBATIM)
add_executable(LoVrrConfigTest "${FIXTURE}")
target_include_directories(LoVrrConfigTest PRIVATE "${REPO_ROOT}/LostOdysseyRecomp")
target_compile_features(LoVrrConfigTest PRIVATE cxx_std_20)
target_compile_definitions(LoVrrConfigTest PRIVATE NOMINMAX)
if(MSVC)
  target_compile_options(LoVrrConfigTest PRIVATE /utf-8)
endif()
add_test(NAME vrr_config COMMAND LoVrrConfigTest)

add_executable(LoVrrFgSettingsTest ../frame_generation_settings_test.cpp)
target_include_directories(LoVrrFgSettingsTest PRIVATE "${REPO_ROOT}/LostOdysseyRecomp")
target_compile_features(LoVrrFgSettingsTest PRIVATE cxx_std_20)
target_compile_definitions(LoVrrFgSettingsTest PRIVATE NOMINMAX LO_ENABLE_D3D12_FG=1 FRAMEGEN_WITH_DLSS=1 FRAMEGEN_WITH_FSR=1)
if(MSVC)
  target_compile_options(LoVrrFgSettingsTest PRIVATE /utf-8)
endif()
add_test(NAME vrr_fg_settings COMMAND LoVrrFgSettingsTest)
