cmake_minimum_required(VERSION 3.20)
project(Wr64RTShadowTests LANGUAGES CXX)
enable_testing()
get_filename_component(WR64_ROOT "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
add_executable(wr64_rt_shadow_test shadow_test.cpp)
add_executable(wr64_rt_shadow_archive_test archive_light_test.cpp)
foreach(target wr64_rt_shadow_test wr64_rt_shadow_archive_test)
    target_compile_features(${target} PRIVATE cxx_std_20)
    target_include_directories(${target} PRIVATE "${WR64_ROOT}/lib/rt64/src")
    if(MSVC)
        target_compile_options(${target} PRIVATE /W4 /fp:strict)
    else()
        target_compile_options(${target} PRIVATE -Wall -Wextra -Wpedantic)
    endif()
endforeach()
add_test(NAME rt_shadow_scope_and_light_guards COMMAND wr64_rt_shadow_test)
add_executable(wr64_rt_shadow_fog_test fog_test.cpp)
target_compile_features(wr64_rt_shadow_fog_test PRIVATE cxx_std_20)
target_include_directories(wr64_rt_shadow_fog_test PRIVATE "${WR64_ROOT}/lib/rt64/src"
    "${WR64_ROOT}/lib/rt64/src/contrib/hlslpp/include")
add_test(NAME rt_shadow_native_shore_fog COMMAND wr64_rt_shadow_fog_test)
add_executable(wr64_rt_actor_shadow_test actor_test.cpp)
target_compile_features(wr64_rt_actor_shadow_test PRIVATE cxx_std_20)
target_include_directories(wr64_rt_actor_shadow_test PRIVATE "${WR64_ROOT}/lib/rt64/src")
if(MSVC)
    target_compile_options(wr64_rt_actor_shadow_test PRIVATE /W4 /fp:strict)
else()
    target_compile_options(wr64_rt_actor_shadow_test PRIVATE -Wall -Wextra -Wpedantic)
endif()
add_test(NAME rt_shadow_actor_identity_and_bounds COMMAND wr64_rt_actor_shadow_test)
set(WR64_SHADOW_ARCHIVES "" CACHE STRING "Optional semicolon-separated local archived rdram.bin files; never copied into tests")
if(WR64_SHADOW_ARCHIVES)
    add_test(NAME rt_shadow_archived_native_lights COMMAND wr64_rt_shadow_archive_test ${WR64_SHADOW_ARCHIVES})
endif()
