From 61aa670237e2d51f7144322bf56b8ce3633c2db9 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Thu, 24 Oct 2024 11:37:50 +0800 Subject: declutter top level CMakeLists.txt (#5391) * Split examples cmake desc * declutter top level CMakeLists.txt * fail if building tests without gfx * Move llvm fetching to another cmake file * Further split CMakeLists.txt * Neaten llvm fetching * Remove last premake remnant * correct cross builds * Neaten * Neaten project organization in vs --- examples/CMakeLists.txt | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 examples/CMakeLists.txt (limited to 'examples') diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 000000000..ad2d6f319 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,91 @@ +function(example dir) + set(debug_dir ${CMAKE_CURRENT_BINARY_DIR}/${dir}) + + file( + GLOB asset_files + CONFIGURE_DEPENDS + "${dir}/*.slang" + "${dir}/*.jpg" + "${dir}/*.obj" + "${dir}/*.mtl" + "${dir}/*.h" + ) + + list(LENGTH asset_files asset_files_length) + if(asset_files_length GREATER 0) + set(copy_assets_target "${dir}-copy-assets") + + add_custom_target( + ${copy_assets_target} + COMMAND ${CMAKE_COMMAND} -E make_directory ${debug_dir} + COMMAND + ${CMAKE_COMMAND} -E copy_if_different ${asset_files} + ${debug_dir} + COMMENT "Copy example assets to ${debug_dir}" + ) + + set_target_properties( + ${copy_assets_target} + PROPERTIES FOLDER "examples/copy_assets" + ) + endif() + + slang_add_target( + ${dir} + EXECUTABLE + USE_FEWER_WARNINGS + LINK_WITH_PRIVATE + core + example-base + slang + gfx + gfx-util + platform + $<$:CUDA::cuda_driver> + EXTRA_COMPILE_DEFINITIONS_PRIVATE + $<$:SLANG_ENABLE_XLIB> + REQUIRED_BY all-examples + OPTIONAL_REQUIRES ${copy_assets_target} copy-prebuilt-binaries + FOLDER examples + DEBUG_DIR ${debug_dir} + ${ARGN} + ) +endfunction() + +if(SLANG_ENABLE_EXAMPLES) + # + # Examples + # + slang_add_target( + example-base + STATIC + LINK_WITH_PRIVATE + core + slang + gfx + platform + $<$:CUDA::cuda_driver> + FOLDER examples + ) + + add_custom_target( + all-examples + COMMENT "meta target which depends on all examples" + ) + set_target_properties(all-examples PROPERTIES FOLDER examples) + example(autodiff-texture WIN32_EXECUTABLE) + example(cpu-com-example) + example(cpu-hello-world) + example(gpu-printing) + example(hello-world LINK_WITH_PRIVATE Vulkan-Headers) + example(model-viewer WIN32_EXECUTABLE) + example(platform-test WIN32_EXECUTABLE) + example(ray-tracing WIN32_EXECUTABLE) + example(ray-tracing-pipeline WIN32_EXECUTABLE) + example(shader-object) + example(shader-toy WIN32_EXECUTABLE) + example(triangle WIN32_EXECUTABLE) + if(SLANG_ENABLE_AFTERMATH) + example(nv-aftermath-example WIN32_EXECUTABLE) + endif() +endif() -- cgit v1.2.3