summaryrefslogtreecommitdiff
path: root/tools/CMakeLists.txt
diff options
context:
space:
mode:
authorGangzheng Tong <tonggangzheng@gmail.com>2025-07-08 23:44:56 -0700
committerGitHub <noreply@github.com>2025-07-09 06:44:56 +0000
commit43d0c2100ef1a5df4b54525e50eb29fe7c39ec16 (patch)
tree25ec4fb9c726115f90bdaa9878f2f4ca372ad0a6 /tools/CMakeLists.txt
parent00746bf09047cdf01c19dac513a532bcf3ed3ea3 (diff)
Convert gfx unit tests and examples to use slang-rhi (#7577)
* Port first gfx unit test to slang-rhi * port triangle example to use slang-rhi * port platform-test to slang-rhi * Update platform-test to throttle mouse move events * port gpu-printing example to use slang-rhi * port model-viewer example to use slang-rhi * port ray-tracing example to use slang-rhi * port ray-tracing pipeline example to use slang-rhi * port reflection parameter blocks example to use slang-rhi * port shader-object example to use slang-rhi * port shader-toy example to use slang-rhi * Port most of tests to slang-rhi * port link-time-constant-array-size to use slang-rhi * Fix tests and find matching tests in slang-rhi * port autodiff-texture * remove gfx target; port nv-aftermath-example * update include path for shader-cursor.h * Disabled 2 more ported tests * fix build error * remove gfx test * put slang-rhi (static-lib) before slang (shared) * format code (#7621) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * add debug callback * format code (#7649) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * Address review comments; revert back to use SLANG_CHECK_MSG --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'tools/CMakeLists.txt')
-rw-r--r--tools/CMakeLists.txt144
1 files changed, 44 insertions, 100 deletions
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 8b954154b..a004a87ca 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -139,119 +139,47 @@ if(SLANG_ENABLE_GFX)
imgui
stb
$<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
+ $<$<BOOL:${SLANG_ENABLE_SLANG_RHI}>:slang-rhi>
"$<$<PLATFORM_ID:Darwin>:-framework Cocoa>"
"$<$<PLATFORM_ID:Darwin>:-framework QuartzCore>"
${CMAKE_DL_LIBS}
LINK_WITH_FRAMEWORK Foundation Cocoa QuartzCore
EXTRA_COMPILE_DEFINITIONS_PRIVATE
$<$<BOOL:${SLANG_ENABLE_XLIB}>:SLANG_ENABLE_XLIB=1>
- INCLUDE_FROM_PRIVATE gfx
- INCLUDE_DIRECTORIES_PUBLIC . platform
- EXPORT_MACRO_PREFIX SLANG_PLATFORM
- )
-
- #
- # GFX
- #
- slang_add_target(
- gfx
- ${SLANG_LIB_TYPE}
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- slang
- Vulkan-Headers
- metal-cpp
- stb
- $<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
- $<$<BOOL:${SLANG_ENABLE_NVAPI}>:${NVAPI_LIBRARIES}>
- LINK_WITH_FRAMEWORK Foundation Cocoa QuartzCore Metal
- EXTRA_COMPILE_DEFINITIONS_PRIVATE
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:GFX_ENABLE_CUDA>
- $<$<BOOL:${SLANG_ENABLE_OPTIX}>:GFX_OPTIX>
- $<$<BOOL:${SLANG_ENABLE_NVAPI}>:GFX_NVAPI>
- $<$<BOOL:${SLANG_ENABLE_XLIB}>:SLANG_ENABLE_XLIB>
- # This is a shared library, so we need to set a preprocessor macro to mark
- # exported symbols
- EXPORT_MACRO_PREFIX SLANG_GFX
- # slang-gfx is in this directory, anything which depends on gfx should include
- # this
- INCLUDE_DIRECTORIES_PUBLIC
- ${slang_SOURCE_DIR}
- ${slang_SOURCE_DIR}/include
- if
- (not ${SLANG_OVERRIDE_SPIRV_TOOLS_PATH})
- INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/external else ()
+ INCLUDE_FROM_PRIVATE
+ imgui
+ $<$<BOOL:${SLANG_ENABLE_SLANG_RHI}>:slang-rhi>
INCLUDE_DIRECTORIES_PUBLIC
- ${SLANG_OVERRIDE_SPIRV_TOOLS_PATH}
- endif
- ()
+ .
+ platform
if
(not ${SLANG_OVERRIDE_GLM_PATH})
INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/external else ()
- INCLUDE_DIRECTORIES_PUBLIC
- ${SLANG_OVERRIDE_GLM_PATH}
- endif
- ()
- if
- (not ${SLANG_OVERRIDE_IMGUI_PATH})
- INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/external else ()
- INCLUDE_DIRECTORIES_PUBLIC
- ${SLANG_OVERRIDE_IMGUI_PATH}
- endif
- ()
- if
- (not ${SLANG_OVERRIDE_TINYOBJLOADER_PATH})
- INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/external else ()
- INCLUDE_DIRECTORIES_PUBLIC ${SLANG_OVERRIDE_TINYOBJLOADER_PATH} endif ()
- INCLUDE_DIRECTORIES_PRIVATE ${NVAPI_INCLUDE_DIRS}
- INSTALL
- EXPORT_SET_NAME SlangTargets
- FOLDER gfx
+ INCLUDE_DIRECTORIES_PUBLIC ${SLANG_OVERRIDE_GLM_PATH} endif ()
+ EXPORT_MACRO_PREFIX SLANG_PLATFORM
)
- if(SLANG_ENABLE_TESTS)
- set(modules_dest_dir $<TARGET_FILE_DIR:slang-test>)
- add_custom_target(
- copy-gfx-slang-modules
- COMMAND ${CMAKE_COMMAND} -E make_directory ${modules_dest_dir}
- COMMAND
- ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/gfx/gfx.slang
- ${modules_dest_dir}/gfx.slang
- COMMAND
- ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_LIST_DIR}/gfx/slang.slang
- ${modules_dest_dir}/slang.slang
- WORKING_DIRECTORY ${slang_SOURCE_DIR}
- VERBATIM
- )
- set_target_properties(
- copy-gfx-slang-modules
- PROPERTIES FOLDER generators
- )
- install(
- FILES ${modules_dest_dir}/gfx.slang ${modules_dest_dir}/slang.slang
- DESTINATION ${runtime_subdir}
- )
- add_dependencies(gfx copy-gfx-slang-modules)
- endif()
- slang_add_target(
- gfx-util
- STATIC
- LINK_WITH_PRIVATE core
- INCLUDE_FROM_PRIVATE gfx
- # The headers are included with 'include "gfx-util/blah.h"' which is found
- # in the tools directory
- INCLUDE_DIRECTORIES_PUBLIC .
- FOLDER gfx
+ set(modules_dest_dir $<TARGET_FILE_DIR:slang-test>)
+ add_custom_target(
+ copy-gfx-slang-modules
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${modules_dest_dir}
+ COMMAND
+ ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/gfx/gfx.slang
+ ${modules_dest_dir}/gfx.slang
+ COMMAND
+ ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/gfx/slang.slang
+ ${modules_dest_dir}/slang.slang
+ WORKING_DIRECTORY ${slang_SOURCE_DIR}
+ VERBATIM
+ )
+ set_target_properties(copy-gfx-slang-modules PROPERTIES FOLDER generators)
+ install(
+ FILES ${modules_dest_dir}/gfx.slang ${modules_dest_dir}/slang.slang
+ DESTINATION ${runtime_subdir}
)
endif()
-
-#
-# The test executables and runtime-loaded modules
-#
if(SLANG_ENABLE_TESTS)
+ # The test executables and runtime-loaded modules
slang_add_target(
test-server
EXECUTABLE
@@ -292,7 +220,6 @@ if(SLANG_ENABLE_TESTS)
test-server
test-process
OPTIONAL_REQUIRES
- gfx
slang-rt
slang-glslang
slang-llvm
@@ -307,6 +234,9 @@ if(SLANG_ENABLE_TESTS)
DIRECTORY ${slang_SOURCE_DIR}
PROPERTY VS_STARTUP_PROJECT slang-test
)
+
+ add_dependencies(slang-test copy-gfx-slang-modules)
+
include(CTest)
add_test(
NAME slang-test
@@ -338,7 +268,21 @@ if(SLANG_ENABLE_TESTS)
EXCLUDE_FROM_ALL
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE core slang unit-test gfx gfx-util platform stb
+ LINK_WITH_PRIVATE
+ core
+ slang
+ unit-test
+ stb
+ platform
+ $<$<BOOL:${SLANG_ENABLE_SLANG_RHI}>:slang-rhi>
+ INCLUDE_FROM_PRIVATE $<$<BOOL:${SLANG_ENABLE_SLANG_RHI}>:slang-rhi>
+ INCLUDE_DIRECTORIES_PUBLIC
+ .
+ platform
+ if
+ (not ${SLANG_OVERRIDE_GLM_PATH})
+ INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/external else ()
+ INCLUDE_DIRECTORIES_PUBLIC ${SLANG_OVERRIDE_GLM_PATH} endif ()
OUTPUT_NAME gfx-unit-test-tool
REQUIRED_BY slang-test
FOLDER test/tools