summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-10-24 11:37:50 +0800
committerGitHub <noreply@github.com>2024-10-24 11:37:50 +0800
commit61aa670237e2d51f7144322bf56b8ce3633c2db9 (patch)
tree6f8fb7f7c2bd34f936f886fdf7d4fdb9e69d32e5 /CMakeLists.txt
parentfb50c032959d0f21579e8a6e1a0ab7141c7fbb97 (diff)
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
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt624
1 files changed, 17 insertions, 607 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35279de08..94d0147e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -219,21 +219,9 @@ if(SLANG_ENABLE_NVAPI AND NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
message(SEND_ERROR "SLANG_ENABLE_NVAPI is only supported on Windows")
endif()
-#
-# Clean files from premake
-#
-# The premake builds places generated files in the source tree, make sure these
-# aren't present
-glob_append(
- premake_generated_files
- "source/slang/*.meta.slang.h"
- "source/slang/*-generated-*.h"
- "source/slang/slang-lookup-*.cpp"
-)
-if(premake_generated_files)
- file(REMOVE ${premake_generated_files})
+if(SLANG_ENABLE_TESTS AND NOT SLANG_ENABLE_GFX)
+ message(SEND_ERROR "SLANG_ENABLE_TESTS requires SLANG_ENABLE_GFX")
endif()
-file(REMOVE external/miniz/miniz_export.h)
#
# Dependencies, most of these are however handled inside the "auto_option"
@@ -242,620 +230,42 @@ file(REMOVE external/miniz/miniz_export.h)
find_package(Threads REQUIRED)
-if(SLANG_SLANG_LLVM_FLAVOR STREQUAL "USE_SYSTEM_LLVM")
- find_package(LLVM 13.0 REQUIRED CONFIG)
- find_package(Clang REQUIRED CONFIG)
-endif()
-
if (${SLANG_USE_SYSTEM_UNORDERED_DENSE})
find_package(unordered_dense CONFIG QUIET)
endif()
add_subdirectory(external)
-set(SLANG_CORE_LIBRARIES "")
-list(APPEND SLANG_CORE_LIBRARIES miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS})
-
-#
-# Our targets
-#
-
-slang_add_target(
- source/core
- STATIC
- EXCLUDE_FROM_ALL
- USE_EXTRA_WARNINGS
- LINK_WITH_PRIVATE ${SLANG_CORE_LIBRARIES}
- LINK_WITH_PUBLIC unordered_dense::unordered_dense
- INCLUDE_DIRECTORIES_PUBLIC source include
-)
-
-if(SLANG_ENABLE_SLANGRT)
- slang_add_target(
- source/slang-rt
- SHARED
- # This compiles 'core' again with the SLANG_RT_DYNAMIC_EXPORT macro defined
- EXTRA_SOURCE_DIRS source/core
- USE_EXTRA_WARNINGS
- LINK_WITH_PRIVATE ${SLANG_CORE_LIBRARIES}
- LINK_WITH_PUBLIC unordered_dense::unordered_dense
- EXPORT_MACRO_PREFIX SLANG_RT
- INCLUDE_DIRECTORIES_PUBLIC include
- INSTALL
- )
-endif()
-
-slang_add_target(
- source/compiler-core
- STATIC
- EXCLUDE_FROM_ALL
- USE_EXTRA_WARNINGS
- LINK_WITH_PRIVATE core
- INCLUDE_FROM_PUBLIC SPIRV-Headers
-)
-if(NOT MSVC)
- # This is necessary to compile the DXC headers
- set_source_files_properties(
- source/compiler-core/slang-dxc-compiler.cpp
- PROPERTIES COMPILE_OPTIONS "-fms-extensions"
- DIRECTORY ${slang_SOURCE_DIR}
- )
-endif()
-
-#
-# Tools used to generate source during the build:
-#
-
-add_custom_target(
- all-generators
- COMMENT "meta target which depends on all generators"
-)
-
-if(CMAKE_HOST_WIN32)
- set(CMAKE_HOST_EXECUTABLE_SUFFIX ".exe")
-else()
- set(CMAKE_HOST_EXECUTABLE_SUFFIX "")
-endif()
-
-set_target_properties(all-generators PROPERTIES FOLDER generators)
-function(generator dir)
- if(SLANG_GENERATORS_PATH)
- cmake_parse_arguments(ARG "" "TARGET_NAME" "" ${ARGN})
- if(ARG_TARGET_NAME)
- set(target ${ARG_TARGET_NAME})
- else()
- get_filename_component(target ${dir} NAME)
- endif()
- add_executable(${target} IMPORTED)
- set_property(
- TARGET ${target}
- PROPERTY
- IMPORTED_LOCATION
- "${SLANG_GENERATORS_PATH}/${target}${CMAKE_HOST_EXECUTABLE_SUFFIX}"
- )
- else()
- slang_add_target(
- ${dir}
- EXECUTABLE
- EXCLUDE_FROM_ALL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE core
- OUTPUT_DIR generators
- REQUIRED_BY all-generators
- FOLDER generators
- INSTALL_COMPONENT generators
- ${ARGN}
- )
- endif()
-endfunction()
-
-generator(tools/slang-cpp-extractor USE_FEWER_WARNINGS LINK_WITH_PRIVATE compiler-core)
-generator(tools/slang-embed)
-generator(tools/slang-generate USE_FEWER_WARNINGS)
-generator(tools/slang-lookup-generator LINK_WITH_PRIVATE compiler-core)
-generator(tools/slang-capability-generator LINK_WITH_PRIVATE compiler-core)
-generator(tools/slang-spirv-embed-generator LINK_WITH_PRIVATE compiler-core)
-
-generator(
- source/slangc
- TARGET_NAME slang-bootstrap
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- prelude
- slang-without-embedded-stdlib
- slang-capability-lookup
- slang-lookup-tables
- Threads::Threads
-)
-
-#
-# The compiler itself
-#
-
-# keep these non-trivial targets in their own directories so as not to clutter
-# this file
-add_subdirectory(prelude)
-add_subdirectory(source/slang-stdlib)
-add_subdirectory(source/slang)
-
-if(SLANG_ENABLE_SLANGD)
- slang_add_target(
- tools/slangd
- EXECUTABLE
- LINK_WITH_PRIVATE
- core
- compiler-core
- slang
- slang-reflect-headers
- slang-capability-defs
- Threads::Threads
- INSTALL
- )
-endif()
-if(SLANG_ENABLE_SLANGC)
- slang_add_target(
- source/slangc
- EXECUTABLE
- USE_FEWER_WARNINGS
- DEBUG_DIR ${slang_SOURCE_DIR}
- LINK_WITH_PRIVATE core slang Threads::Threads
- INSTALL
- )
-endif()
-
-#
-# WebAssembly bindings for Slang
-#
-# This is an executable target because emcmake produces .a files without bindings if you just create a static library
-# https://stackoverflow.com/questions/63622009/static-library-built-with-cmake-as-a-with-emscripten-instead-of-wasm-js
-if (EMSCRIPTEN)
- slang_add_target(
- source/slang-wasm
- EXECUTABLE
- EXCLUDE_FROM_ALL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE miniz lz4_static slang core compiler-core
- INCLUDE_DIRECTORIES_PUBLIC include source/slang-wasm
- )
- # To generate binding code
- target_link_options(slang-wasm PUBLIC "--bind")
-endif()
-#
-# Our wrappers for glslang and llvm
-#
-if(SLANG_ENABLE_SLANG_GLSLANG)
- slang_add_target(
- source/slang-glslang
- MODULE
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE glslang SPIRV SPIRV-Tools-opt
- INCLUDE_DIRECTORIES_PRIVATE include
- INSTALL
- )
- # Our only interface is through what we define in source/slang-glslang, in the
- # interests of hygiene, hide anything else we link in.
- add_supported_cxx_linker_flags(slang-glslang PRIVATE "-Wl,--exclude-libs,ALL")
-endif()
-
# webgpu_dawn is only available as a fetched shared library, since Dawn's nested source
# trees are too large and onerous for us to depend on.
if(SLANG_WEBGPU_DAWN_BINARY_URL)
- copy_fetched_shared_library("webgpu_dawn" "${SLANG_WEBGPU_DAWN_BINARY_URL}")
+ copy_fetched_shared_library("webgpu_dawn" "${SLANG_WEBGPU_DAWN_BINARY_URL}")
endif()
# slang-tint is only available as a fetched shared library, since it's hosted in the Dawn
# repository, and Dawn's nested source trees are too large and onerous for us to depend
# on.
if(SLANG_SLANG_TINT_BINARY_URL)
- copy_fetched_shared_library("slang-tint" "${SLANG_SLANG_TINT_BINARY_URL}")
-endif()
-
-if(SLANG_SLANG_LLVM_FLAVOR STREQUAL "FETCH_BINARY")
- install_fetched_shared_library("slang-llvm" "${SLANG_SLANG_LLVM_BINARY_URL}")
-elseif(SLANG_SLANG_LLVM_FLAVOR STREQUAL "FETCH_BINARY_IF_POSSIBLE")
- if(SLANG_SLANG_LLVM_BINARY_URL)
- install_fetched_shared_library("slang-llvm" "${SLANG_SLANG_LLVM_BINARY_URL}" IGNORE_FAILURE)
- if(NOT TARGET slang-llvm)
- message(WARNING "Unable to fetch slang-llvm prebuilt binary, configuring without LLVM support")
- endif()
- endif()
-elseif(SLANG_SLANG_LLVM_FLAVOR STREQUAL "USE_SYSTEM_LLVM")
- llvm_target_from_components(llvm-dep filecheck native orcjit)
- clang_target_from_libs(
- clang-dep
- clangBasic
- clangCodeGen
- clangDriver
- clangLex
- clangFrontend
- clangFrontendTool
- )
- slang_add_target(
- source/slang-llvm
- MODULE
- LINK_WITH_PRIVATE core compiler-core llvm-dep clang-dep
- # We include slang.h, but don't need to link with it
- INCLUDE_FROM_PRIVATE slang
- # This uses the SLANG_DLL_EXPORT macro from slang.h, so make sure to set
- # SLANG_DYNAMIC and SLANG_DYNAMIC_EXPORT
- EXPORT_MACRO_PREFIX SLANG
- INSTALL
- INSTALL_COMPONENT slang-llvm
- )
- # If we don't include this, then the symbols in the LLVM linked here may
- # conflict with those of other LLVMs linked at runtime, for instance in mesa.
- add_supported_cxx_linker_flags(slang-llvm PRIVATE "-Wl,--exclude-libs,ALL")
-
- # The LLVM headers need a warning disabling, which somehow slips through \external
- if(MSVC)
- target_compile_options(slang-llvm PRIVATE -wd4244)
- endif()
-
- # TODO: Put a check here that libslang-llvm.so doesn't have a 'NEEDED'
- # directive for libLLVM-13.so, it's almost certainly going to break at
- # runtime in surprising ways when linked alongside Mesa (or anything else
- # pulling in libLLVM.so)
-endif()
-
-if(SLANG_ENABLE_PREBUILT_BINARIES)
- if(CMAKE_SYSTEM_NAME MATCHES "Windows")
- # DX Agility SDK requires the D3D12*.DLL files to be placed under a sub-directory, "D3D12".
- # https://devblogs.microsoft.com/directx/gettingstarted-dx12agility/#d3d12sdkpath-should-not-be-the-same-directory-as-the-application-exe
- file(GLOB prebuilt_binaries "${CMAKE_SOURCE_DIR}/external/slang-binaries/bin/windows-x64/*")
- file(GLOB prebuilt_d3d12_binaries "${CMAKE_SOURCE_DIR}/external/slang-binaries/bin/windows-x64/[dD]3[dD]12*")
- list(REMOVE_ITEM prebuilt_binaries ${prebuilt_d3d12_binaries})
- add_custom_target(
- copy-prebuilt-binaries ALL
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/$<CONFIG>/${runtime_subdir}
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- ${prebuilt_binaries}
- ${CMAKE_BINARY_DIR}/$<CONFIG>/${runtime_subdir}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/$<CONFIG>/${runtime_subdir}/D3D12
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- ${prebuilt_d3d12_binaries}
- ${CMAKE_BINARY_DIR}/$<CONFIG>/${runtime_subdir}/D3D12
- VERBATIM
- )
- endif()
+ copy_fetched_shared_library("slang-tint" "${SLANG_SLANG_TINT_BINARY_URL}")
endif()
-if(SLANG_ENABLE_GFX)
- #
- # `platform` contains all the platform abstractions for a GUI application.
- #
- slang_add_target(
- tools/platform
- SHARED
- EXCLUDE_FROM_ALL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- imgui
- $<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
- "$<$<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 tools/platform
- EXPORT_MACRO_PREFIX SLANG_PLATFORM
- )
-
- #
- # GFX
- #
- slang_add_target(
- tools/gfx
- SHARED
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- slang
- Vulkan-Headers
- metal-cpp
- $<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
- 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 . include
- REQUIRES copy-gfx-slang-modules
- INSTALL
- 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 tools/gfx/gfx.slang
- ${modules_dest_dir}/gfx.slang
- COMMAND
- ${CMAKE_COMMAND} -E copy tools/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}
- )
-
- slang_add_target(
- tools/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 tools
- FOLDER gfx
- )
-endif()
+fetch_or_build_slang_llvm()
#
-# The test executables and runtime-loaded modules
-#
-if(SLANG_ENABLE_TESTS)
- slang_add_target(
- tools/test-server
- EXECUTABLE
- EXCLUDE_FROM_ALL
- LINK_WITH_PRIVATE core compiler-core slang
- FOLDER test
- )
- slang_add_target(
- tools/test-process
- EXECUTABLE
- EXCLUDE_FROM_ALL
- LINK_WITH_PRIVATE core compiler-core
- FOLDER test
- )
-
- slang_add_target(
- tools/slang-test
- EXECUTABLE
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE core compiler-core slang ${CMAKE_DL_LIBS} Threads::Threads
- REQUIRES
- # Shared libraries dlopened by slang-test
- slang-reflection-test
- slang-unit-test
- # Used by some tests when they run
- slangd
- test-server
- test-process
- OPTIONAL_REQUIRES
- gfx
- slang-rt
- slang-glslang
- slang-llvm
- copy-webgpu_dawn
- copy-slang-tint
- FOLDER test
- DEBUG_DIR ${slang_SOURCE_DIR}
- )
- set_property(
- DIRECTORY ${slang_SOURCE_DIR}
- PROPERTY VS_STARTUP_PROJECT slang-test
- )
-
- slang_add_target(
- tools/unit-test
- OBJECT
- EXCLUDE_FROM_ALL
- INCLUDE_FROM_PRIVATE slang core
- INCLUDE_DIRECTORIES_PRIVATE include
- FOLDER test
- )
-
- # These are libraries loaded at runtime from the test executable:
- if(SLANG_ENABLE_GFX)
- slang_add_target(
- tools/gfx-unit-test
- MODULE
- 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
- OUTPUT_NAME gfx-unit-test-tool
- REQUIRED_BY slang-test
- FOLDER test/tools
- )
- if(SLANG_ENABLE_SLANG_RHI)
- slang_add_target(
- tools/render-test
- MODULE
- EXCLUDE_FROM_ALL
- EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- compiler-core
- slang
- slang-rhi
- platform
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
- EXTRA_COMPILE_DEFINITIONS_PRIVATE
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:RENDER_TEST_CUDA>
- $<$<BOOL:${SLANG_ENABLE_OPTIX}>:RENDER_TEST_OPTIX>
- OUTPUT_NAME render-test-tool
- REQUIRED_BY slang-test
- FOLDER test/tools
- )
- endif()
- endif()
- slang_add_target(
- tools/slang-unit-test
- MODULE
- EXCLUDE_FROM_ALL
- EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE core compiler-core unit-test slang Threads::Threads
- OUTPUT_NAME slang-unit-test-tool
- FOLDER test/tools
- )
- slang_add_target(
- tools/slang-reflection-test
- MODULE
- EXCLUDE_FROM_ALL
- EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE core slang Threads::Threads
- OUTPUT_NAME slang-reflection-test-tool
- FOLDER test/tools
- )
-
- slang_add_target(
- tools/slang-profile
- EXECUTABLE
- EXCLUDE_FROM_ALL
- LINK_WITH_PRIVATE core slang
- FOLDER test
- )
-endif()
-
-if (SLANG_ENABLE_EXAMPLES AND SLANG_ENABLE_GFX)
- #
- # Examples
- #
- slang_add_target(
- examples/example-base
- STATIC
- LINK_WITH_PRIVATE
- core
- slang
- gfx
- platform
- $<$<BOOL:${SLANG_ENABLE_CUDA}>: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)
- function(example dir)
- set(debug_dir ${CMAKE_BINARY_DIR}/${dir})
-
- slang_add_target(
- ${dir}
- EXECUTABLE
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- example-base
- slang
- gfx
- gfx-util
- platform
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
- EXTRA_COMPILE_DEFINITIONS_PRIVATE
- $<$<BOOL:${SLANG_ENABLE_XLIB}>:SLANG_ENABLE_XLIB>
- REQUIRED_BY all-examples
- FOLDER examples
- DEBUG_DIR ${debug_dir}
- ${ARGN}
- )
-
- get_filename_component(example_target ${dir} NAME)
- file(GLOB asset_files
- "${CMAKE_SOURCE_DIR}/${dir}/*.slang"
- "${CMAKE_SOURCE_DIR}/${dir}/*.jpg"
- "${CMAKE_SOURCE_DIR}/${dir}/*.obj"
- "${CMAKE_SOURCE_DIR}/${dir}/*.mtl"
- "${CMAKE_SOURCE_DIR}/${dir}/*.h"
- )
-
- list(LENGTH asset_files asset_files_length)
- if (asset_files_length GREATER 0)
- set(copy_assets_target "${example_target}-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")
-
- add_dependencies(${example_target} ${copy_assets_target})
-
- # Copy DirectX shader binaries so signing doesn't fail when running from Visual Studio
- if (MSVC)
- if (SLANG_ENABLE_PREBUILT_BINARIES)
- add_dependencies(${example_target} copy-prebuilt-binaries)
- endif()
- endif()
- endif()
- endfunction()
-
- example(examples/autodiff-texture WIN32_EXECUTABLE)
- example(examples/cpu-com-example )
- example(examples/cpu-hello-world )
- example(examples/gpu-printing )
- example(examples/hello-world LINK_WITH_PRIVATE Vulkan-Headers)
- example(examples/model-viewer WIN32_EXECUTABLE)
- example(examples/platform-test WIN32_EXECUTABLE)
- example(examples/ray-tracing WIN32_EXECUTABLE)
- example(examples/ray-tracing-pipeline WIN32_EXECUTABLE)
- example(examples/shader-object )
- example(examples/shader-toy WIN32_EXECUTABLE)
- example(examples/triangle WIN32_EXECUTABLE)
- if(SLANG_ENABLE_AFTERMATH)
- example(examples/nv-aftermath-example WIN32_EXECUTABLE)
- endif()
-endif()
-
-#
-# slang-replay tool for replaying the record files
+# Our targets
#
-if (SLANG_ENABLE_REPLAYER)
- slang_add_target(
- tools/slang-replay
- EXECUTABLE
- EXTRA_SOURCE_DIRS source/slang-record-replay/replay source/slang-record-replay/util
- LINK_WITH_PRIVATE core compiler-core slang
- INCLUDE_DIRECTORIES_PUBLIC source/slang-record-replay
- FOLDER test
- )
-endif()
-#
-# Testing
-#
-if(SLANG_ENABLE_TESTS)
- include(CTest)
- add_test(
- NAME slang-test
- COMMAND
- slang-test -bindir ${slang_SOURCE_DIR}/build/$<CONFIG>/${runtime_subdir}
- -expected-failure-list ${slang_SOURCE_DIR}/tests/expected-failure.txt
- -expected-failure-list
- ${slang_SOURCE_DIR}/tests/expected-failure-github.txt
- WORKING_DIRECTORY ${slang_SOURCE_DIR}
- )
-endif()
+add_subdirectory(source/core)
+add_subdirectory(source/slang-rt)
+add_subdirectory(source/compiler-core)
+add_subdirectory(source/slang-wasm)
+add_subdirectory(source/slang-glslang)
+add_subdirectory(tools)
+add_subdirectory(prelude)
+add_subdirectory(source/slang-stdlib)
+add_subdirectory(source/slang)
+add_subdirectory(source/slangc)
+add_subdirectory(examples)
#
# Packaging