引入第三方库
This commit is contained in:
@@ -0,0 +1,285 @@
|
||||
include_guard(GLOBAL)
|
||||
|
||||
function(Renderive_render_3D_datoviz_stage_test_resources runtime_dir)
|
||||
file(MAKE_DIRECTORY
|
||||
"${runtime_dir}/build"
|
||||
"${Renderive_render_3D_datoviz_test_spirv_dir}")
|
||||
|
||||
# The source tree owns every runtime resource. A clean build directory is repopulated here.
|
||||
file(COPY "${Renderive_render_3D_datoviz_root}/spec"
|
||||
DESTINATION "${runtime_dir}")
|
||||
file(COPY "${Renderive_render_3D_datoviz_root}/data/assets/fonts"
|
||||
DESTINATION "${runtime_dir}/data/assets")
|
||||
file(COPY "${Renderive_render_3D_datoviz_external_dir}/cimgui/imgui/misc/fonts"
|
||||
DESTINATION "${runtime_dir}/external/cimgui/imgui/misc")
|
||||
|
||||
# DRP2 emits LF. Normalize only the generated runtime copies so exact snapshots do not depend
|
||||
# on the checkout's Windows EOL mode; the source fixtures remain untouched.
|
||||
file(GLOB_RECURSE Renderive_render_3D_datoviz_test_json_fixtures
|
||||
LIST_DIRECTORIES false
|
||||
"${runtime_dir}/spec/*.json")
|
||||
foreach(Renderive_render_3D_datoviz_test_json_fixture
|
||||
IN LISTS Renderive_render_3D_datoviz_test_json_fixtures)
|
||||
file(READ "${Renderive_render_3D_datoviz_test_json_fixture}"
|
||||
Renderive_render_3D_datoviz_test_json_content)
|
||||
file(CONFIGURE
|
||||
OUTPUT "${Renderive_render_3D_datoviz_test_json_fixture}"
|
||||
CONTENT "${Renderive_render_3D_datoviz_test_json_content}"
|
||||
@ONLY
|
||||
NEWLINE_STYLE UNIX)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(Renderive_render_3D_datoviz_add_test_runner target source_var component timeout)
|
||||
set(Renderive_render_3D_datoviz_test_runner_sources ${${source_var}})
|
||||
if(NOT component STREQUAL "NONE")
|
||||
list(APPEND Renderive_render_3D_datoviz_test_runner_sources
|
||||
"${Renderive_render_3D_datoviz_testing_dir}/components/${component}.c")
|
||||
endif()
|
||||
|
||||
add_executable(${target} ${Renderive_render_3D_datoviz_test_runner_sources})
|
||||
target_include_directories(${target} PRIVATE
|
||||
"${Renderive_render_3D_datoviz_include_dir}"
|
||||
"${Renderive_render_3D_datoviz_testing_dir}"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/common"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/scene/tests"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vk/tests"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vklite"
|
||||
"${Vulkan_INCLUDE_DIR}/vulkan"
|
||||
"${Renderive_render_3D_datoviz_external_dir}")
|
||||
target_compile_definitions(${target} PRIVATE
|
||||
DVZ_HAS_GLFW=0
|
||||
"DVZ_TEST_SPIRV_DIR=\"${Renderive_render_3D_datoviz_test_spirv_dir}\"")
|
||||
target_link_libraries(${target} PRIVATE
|
||||
${ARGN}
|
||||
Renderive_render_3D_datoviz_testing
|
||||
${Renderive_render_3D_datoviz_thread_target})
|
||||
if(Renderive_render_3D_datoviz_msvc_system_library_dirs)
|
||||
target_link_directories(${target} PRIVATE
|
||||
${Renderive_render_3D_datoviz_msvc_system_library_dirs})
|
||||
endif()
|
||||
if(MSVC)
|
||||
target_link_options(${target} PRIVATE /STACK:8388608)
|
||||
endif()
|
||||
Renderive_render_3D_datoviz_configure_target(${target})
|
||||
set_target_properties(${target} PROPERTIES
|
||||
LINKER_LANGUAGE CXX
|
||||
FOLDER Renderive_render_3D/datoviz/tests)
|
||||
|
||||
add_test(NAME ${target} COMMAND ${target})
|
||||
set_tests_properties(${target} PROPERTIES
|
||||
LABELS datoviz
|
||||
TIMEOUT ${timeout}
|
||||
WORKING_DIRECTORY "${Renderive_render_3D_datoviz_test_runtime_dir}")
|
||||
endfunction()
|
||||
|
||||
function(Renderive_render_3D_datoviz_add_tests)
|
||||
set(Renderive_render_3D_datoviz_testing_dir
|
||||
"${Renderive_render_3D_datoviz_root}/testing")
|
||||
set(Renderive_render_3D_datoviz_test_runtime_dir
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/testing/runtime")
|
||||
set(Renderive_render_3D_datoviz_test_spirv_dir
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/testing/spirv")
|
||||
Renderive_render_3D_datoviz_stage_test_resources(
|
||||
"${Renderive_render_3D_datoviz_test_runtime_dir}")
|
||||
|
||||
file(GLOB Renderive_render_3D_datoviz_test_shaders CONFIGURE_DEPENDS
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vklite/tests/shaders/*.vert"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vklite/tests/shaders/*.frag"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vklite/tests/shaders/*.comp")
|
||||
if(Vulkan_GLSLC_EXECUTABLE)
|
||||
set(Renderive_render_3D_datoviz_glslc "${Vulkan_GLSLC_EXECUTABLE}")
|
||||
else()
|
||||
find_program(Renderive_render_3D_datoviz_glslc
|
||||
NAMES glslc
|
||||
HINTS "$ENV{VULKAN_SDK}/Bin" "$ENV{VULKAN_SDK}/bin")
|
||||
endif()
|
||||
if(NOT Renderive_render_3D_datoviz_glslc)
|
||||
message(FATAL_ERROR "glslc is required to build the Datoviz vklite tests")
|
||||
endif()
|
||||
|
||||
set(Renderive_render_3D_datoviz_test_spirv_outputs)
|
||||
foreach(Renderive_render_3D_datoviz_test_shader
|
||||
IN LISTS Renderive_render_3D_datoviz_test_shaders)
|
||||
get_filename_component(Renderive_render_3D_datoviz_test_shader_name
|
||||
"${Renderive_render_3D_datoviz_test_shader}" NAME)
|
||||
get_filename_component(Renderive_render_3D_datoviz_test_shader_extension
|
||||
"${Renderive_render_3D_datoviz_test_shader}" EXT)
|
||||
set(Renderive_render_3D_datoviz_test_spirv
|
||||
"${Renderive_render_3D_datoviz_test_spirv_dir}/${Renderive_render_3D_datoviz_test_shader_name}.spv")
|
||||
set(Renderive_render_3D_datoviz_test_shader_args)
|
||||
if(Renderive_render_3D_datoviz_test_shader_extension STREQUAL ".comp")
|
||||
list(APPEND Renderive_render_3D_datoviz_test_shader_args
|
||||
--target-env=vulkan1.3 --target-spv=spv1.6)
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT "${Renderive_render_3D_datoviz_test_spirv}"
|
||||
COMMAND "${Renderive_render_3D_datoviz_glslc}"
|
||||
${Renderive_render_3D_datoviz_test_shader_args}
|
||||
-o "${Renderive_render_3D_datoviz_test_spirv}"
|
||||
"${Renderive_render_3D_datoviz_test_shader}"
|
||||
DEPENDS "${Renderive_render_3D_datoviz_test_shader}"
|
||||
COMMENT "Compiling Datoviz test shader ${Renderive_render_3D_datoviz_test_shader_name}"
|
||||
VERBATIM)
|
||||
list(APPEND Renderive_render_3D_datoviz_test_spirv_outputs
|
||||
"${Renderive_render_3D_datoviz_test_spirv}")
|
||||
endforeach()
|
||||
add_custom_target(Renderive_render_3D_datoviz_test_shaders
|
||||
DEPENDS ${Renderive_render_3D_datoviz_test_spirv_outputs})
|
||||
set_target_properties(Renderive_render_3D_datoviz_test_shaders PROPERTIES
|
||||
FOLDER Renderive_render_3D/datoviz/tests)
|
||||
|
||||
add_library(Renderive_render_3D_datoviz_testing STATIC
|
||||
"${Renderive_render_3D_datoviz_testing_dir}/testing.cpp"
|
||||
"${Renderive_render_3D_datoviz_testing_dir}/datoviz_testing.c")
|
||||
target_include_directories(Renderive_render_3D_datoviz_testing PUBLIC
|
||||
"${Renderive_render_3D_datoviz_testing_dir}"
|
||||
PRIVATE "${Renderive_render_3D_datoviz_src_dir}/common")
|
||||
target_link_libraries(Renderive_render_3D_datoviz_testing PRIVATE
|
||||
Renderive_render_3D_datoviz_common)
|
||||
Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_testing)
|
||||
set_target_properties(Renderive_render_3D_datoviz_testing PROPERTIES
|
||||
FOLDER Renderive_render_3D/datoviz/tests)
|
||||
|
||||
set(Renderive_render_3D_datoviz_msvc_system_library_dirs)
|
||||
if(MSVC)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(Renderive_render_3D_datoviz_msvc_library_arch x64)
|
||||
else()
|
||||
set(Renderive_render_3D_datoviz_msvc_library_arch x86)
|
||||
endif()
|
||||
get_filename_component(Renderive_render_3D_datoviz_windows_sdk_include_dir
|
||||
"${Renderive_render_3D_datoviz_windows_sdk_include_root}" DIRECTORY)
|
||||
get_filename_component(Renderive_render_3D_datoviz_windows_kits_dir
|
||||
"${Renderive_render_3D_datoviz_windows_sdk_include_dir}" DIRECTORY)
|
||||
get_filename_component(Renderive_render_3D_datoviz_windows_sdk_version
|
||||
"${Renderive_render_3D_datoviz_windows_sdk_include_root}" NAME)
|
||||
list(APPEND Renderive_render_3D_datoviz_msvc_system_library_dirs
|
||||
"${Renderive_render_3D_datoviz_msvc_tools_dir}/lib/${Renderive_render_3D_datoviz_msvc_library_arch}"
|
||||
"${Renderive_render_3D_datoviz_windows_kits_dir}/Lib/${Renderive_render_3D_datoviz_windows_sdk_version}/ucrt/${Renderive_render_3D_datoviz_msvc_library_arch}"
|
||||
"${Renderive_render_3D_datoviz_windows_kits_dir}/Lib/${Renderive_render_3D_datoviz_windows_sdk_version}/um/${Renderive_render_3D_datoviz_msvc_library_arch}")
|
||||
endif()
|
||||
|
||||
foreach(Renderive_render_3D_datoviz_test_module
|
||||
IN ITEMS common fileio geom math thread input controller drp2 scene)
|
||||
file(GLOB_RECURSE Renderive_render_3D_datoviz_${Renderive_render_3D_datoviz_test_module}_test_sources
|
||||
CONFIGURE_DEPENDS
|
||||
"${Renderive_render_3D_datoviz_src_dir}/${Renderive_render_3D_datoviz_test_module}/tests/*.c"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/${Renderive_render_3D_datoviz_test_module}/tests/*.cc"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/${Renderive_render_3D_datoviz_test_module}/tests/*.cpp"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/${Renderive_render_3D_datoviz_test_module}/tests/*.cxx")
|
||||
endforeach()
|
||||
file(GLOB_RECURSE Renderive_render_3D_datoviz_vk_test_sources CONFIGURE_DEPENDS
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vk/tests/*.c*"
|
||||
"${Renderive_render_3D_datoviz_src_dir}/vklite/tests/*.c*")
|
||||
list(FILTER Renderive_render_3D_datoviz_vk_test_sources EXCLUDE REGEX
|
||||
"/src/vk/tests/test_cuda\\.cu$")
|
||||
list(FILTER Renderive_render_3D_datoviz_vk_test_sources EXCLUDE REGEX
|
||||
"/src/vklite/tests/test_(present|vklite)\\.c.*$")
|
||||
list(FILTER Renderive_render_3D_datoviz_scene_test_sources EXCLUDE REGEX
|
||||
"/src/scene/tests/(app|frame_plan_emit|test_scene)\\.c$")
|
||||
set(Renderive_render_3D_datoviz_core_test_sources
|
||||
${Renderive_render_3D_datoviz_common_test_sources}
|
||||
${Renderive_render_3D_datoviz_fileio_test_sources}
|
||||
${Renderive_render_3D_datoviz_geom_test_sources}
|
||||
${Renderive_render_3D_datoviz_math_test_sources}
|
||||
${Renderive_render_3D_datoviz_thread_test_sources})
|
||||
set(Renderive_render_3D_datoviz_scheduler_test_sources
|
||||
"${Renderive_render_3D_datoviz_testing_dir}/dvztest_scheduler.c")
|
||||
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_scheduler
|
||||
Renderive_render_3D_datoviz_scheduler_test_sources NONE 120
|
||||
Renderive_render_3D_datoviz_common)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_common
|
||||
Renderive_render_3D_datoviz_common_test_sources dvztest_common 120
|
||||
Renderive_render_3D_datoviz_common)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_fileio
|
||||
Renderive_render_3D_datoviz_fileio_test_sources dvztest_fileio 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_fileio)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_geom
|
||||
Renderive_render_3D_datoviz_geom_test_sources dvztest_geom 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_geom
|
||||
Renderive_render_3D_datoviz_math)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_math
|
||||
Renderive_render_3D_datoviz_math_test_sources dvztest_math 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_math)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_thread
|
||||
Renderive_render_3D_datoviz_thread_test_sources dvztest_thread 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_thread)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_input
|
||||
Renderive_render_3D_datoviz_input_test_sources dvztest_input 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_input)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_core
|
||||
Renderive_render_3D_datoviz_core_test_sources dvztest_core 180
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_fileio
|
||||
Renderive_render_3D_datoviz_geom Renderive_render_3D_datoviz_math
|
||||
Renderive_render_3D_datoviz_thread)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_controller
|
||||
Renderive_render_3D_datoviz_controller_test_sources dvztest_controller 120
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_math
|
||||
Renderive_render_3D_datoviz_input Renderive_render_3D_datoviz_controller)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_drp2
|
||||
Renderive_render_3D_datoviz_drp2_test_sources dvztest_drp2 300
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_vk
|
||||
Renderive_render_3D_datoviz_vklite Renderive_render_3D_datoviz_drp2)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_scene
|
||||
Renderive_render_3D_datoviz_scene_test_sources dvztest_scene_core 600
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_fileio
|
||||
Renderive_render_3D_datoviz_geom Renderive_render_3D_datoviz_math
|
||||
Renderive_render_3D_datoviz_thread Renderive_render_3D_datoviz_input
|
||||
Renderive_render_3D_datoviz_controller Renderive_render_3D_datoviz_vk
|
||||
Renderive_render_3D_datoviz_vklite Renderive_render_3D_datoviz_drp2
|
||||
Renderive_render_3D_datoviz_scene)
|
||||
Renderive_render_3D_datoviz_add_test_runner(
|
||||
Renderive_render_3D_datoviz_test_vk
|
||||
Renderive_render_3D_datoviz_vk_test_sources dvztest_vk 600
|
||||
Renderive_render_3D_datoviz_common Renderive_render_3D_datoviz_fileio
|
||||
Renderive_render_3D_datoviz_geom Renderive_render_3D_datoviz_math
|
||||
Renderive_render_3D_datoviz_thread Renderive_render_3D_datoviz_vk
|
||||
Renderive_render_3D_datoviz_vklite)
|
||||
add_dependencies(Renderive_render_3D_datoviz_test_vk
|
||||
Renderive_render_3D_datoviz_test_shaders)
|
||||
|
||||
set(Renderive_render_3D_datoviz_test_targets
|
||||
Renderive_render_3D_datoviz_test_scheduler
|
||||
Renderive_render_3D_datoviz_test_common
|
||||
Renderive_render_3D_datoviz_test_fileio
|
||||
Renderive_render_3D_datoviz_test_geom
|
||||
Renderive_render_3D_datoviz_test_math
|
||||
Renderive_render_3D_datoviz_test_thread
|
||||
Renderive_render_3D_datoviz_test_input
|
||||
Renderive_render_3D_datoviz_test_core
|
||||
Renderive_render_3D_datoviz_test_controller
|
||||
Renderive_render_3D_datoviz_test_drp2
|
||||
Renderive_render_3D_datoviz_test_scene
|
||||
Renderive_render_3D_datoviz_test_vk)
|
||||
add_custom_target(Renderive_render_3D_datoviz_tests
|
||||
DEPENDS ${Renderive_render_3D_datoviz_test_targets})
|
||||
set_target_properties(Renderive_render_3D_datoviz_tests PROPERTIES
|
||||
FOLDER Renderive_render_3D/datoviz/tests)
|
||||
|
||||
find_program(Renderive_render_3D_datoviz_powershell
|
||||
NAMES pwsh powershell REQUIRED)
|
||||
add_custom_target(Renderive_render_3D_datoviz_run_tests
|
||||
COMMAND "${Renderive_render_3D_datoviz_powershell}"
|
||||
-NoProfile -ExecutionPolicy Bypass
|
||||
-File "${Renderive_render_3D_datoviz_root}/../env.ps1"
|
||||
-DatovizBuildDirectory "${CMAKE_BINARY_DIR}"
|
||||
-CTestExecutable "${CMAKE_CTEST_COMMAND}"
|
||||
DEPENDS Renderive_render_3D_datoviz_tests
|
||||
USES_TERMINAL
|
||||
VERBATIM)
|
||||
set_target_properties(Renderive_render_3D_datoviz_run_tests PROPERTIES
|
||||
FOLDER Renderive_render_3D/datoviz/tests)
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user