summaryrefslogtreecommitdiffstats
path: root/cmake
Commit message (Collapse)AuthorAge
* Fix CMake error with generator on list in 3.22.1 (#8364)Dario Mylonopoulos2025-09-25
| | | | | | | | | Fixes #8335 --------- Co-authored-by: Mukund Keshava <mkeshava@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
* Fix SLANGC_EXECUTABLE search path in slangConfig.cmake (#8200)Sergei Kachkov2025-08-21
| | | | | | | | | | | | | | This patch changes the order of searching slangc executable. This bug affects the following scenario: let's assume that user has a binary release of slang package and wants to use it via `find_package(slang CONFIG HINTS <path to binary release>)`, but there is also an environment variable that points to some other slang release (e.g. user has Vulkan SDK in the `$PATH`). In that case, find_package will successfully find a desired slang package, but find_program in slangConfig.cmake will check environment variable first, and in the result SLANGC_EXECUTABLE will point to slangc from Vulkan SDK and not from the downloaded package. Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
* Update LLVM from 13.0.1 to 14.0.6 (#8031)Sam Estep2025-08-07
| | | | | | | | | | | | | | | | | Full set of mutually exclusive choices for upgrading LLVM: - #8031 (you are here) - #8035 - #8036 - #8034 - #8038 - #8039 - #8033 Alternative to #8028. Required some minor changes due to these upstream commits: - llvm/llvm-project@e463b69736da8b0a950ecd937cf990401bdfcdeb - llvm/llvm-project@89b57061f7b769e9ea9bf6ed686e284f3e55affe
* export fewer things from module targets (#8089)Ellie Hermaszewska2025-08-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes https://github.com/shader-slang/slang/issues/7722 without adding SONAME ``` e@light-hope in ~/work/slang on HEAD (68b0125) [nix-shell] [direnv] $ nm -DC --defined-only build/Debug/lib/libslang-llvm.so 0000000001a4b637 T createLLVMDownstreamCompiler_V4 0000000001a427ed T createLLVMFileCheck_V1 0000000001a4b91e W std::type_info::operator==(std::type_info const&) const 0000000001a4bb07 W std::_Sp_make_shared_tag::_S_ti() 0000000001059165 u std::ranges::_Cpo::iter_move 0000000005f92ac0 V typeinfo for std::_Sp_make_shared_tag 0000000005f92938 V vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2> e@light-hope in ~/work/slang on HEAD (68b0125) [nix-shell] [direnv] $ nm -DC --defined-only build/Debug/lib/libslang-glslang.so 00000000004701a2 T glslang_compile 000000000047012b T glslang_compile_1_1 000000000046ffd9 T glslang_compile_1_2 000000000046db75 T glslang_disassembleSPIRV 000000000046da42 T glslang_disassembleSPIRVWithResult 000000000047028b T glslang_linkSPIRV 000000000046d8fa T glslang_validateSPIRV e@light-hope in ~/work/slang on HEAD (68b0125) [nix-shell] [direnv] $ nm -DC --defined-only build/Debug/lib/libslang-glsl-module.so 0000000000135bf9 T slang_getEmbeddedModule ``` I think that the exports from libslang-llvm are unavoidable I believe, however these are weak exports so should exhibit the same problem. @NBickford-NV does this look good for you?
* Fix formatting (#7799)Ellie Hermaszewska2025-07-17
|
* Allow a compiler warning on MacOS (#7561)Jay Kwak2025-06-30
| | | | | | | | | | | | This PR is to allow a compiler warning even when all warnings are requested to be treated as errors. The following pattern is very common in Slang code base: if (auto var = as<...>(...)) And when `var` is not used, the compiler prints a warning. Alternatively we can remove `auto var =` part but there are too many. Co-authored-by: Jay Kwak <jkwak@jkwak-mlt.client.nvidia.com>
* Reset minimum cmake version to 3.22 (#7548)Gangzheng Tong2025-06-30
| | | | | * Reset minimum cmake version to 3.22 * update slang-rhi
* Enabling optix ci pipeline (#7311)Harsh Aggarwal (NVIDIA)2025-06-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Revert "Disable OptiX tests by default. (#1331)" This reverts commit e45f8c1f49855cebe90b6722324ec24146ff5a3d. * Enable optix submodule to build Add support for default entry points in compilation Implemented logic to check for defined entry points in the module when no explicit entry points are provided. If found, these entry points are added to the `specializedEntryPoints` list, with the assumption that no specialization is needed for them at this time. * Disable optix if cuda is not enabled * Add submodule OptixSDK path in search * Distinguish user-explicit vs auto-detected SLANG_ENABLE_OPTIX When SLANG_ENABLE_OPTIX is explicitly set by user and CUDA is not available, show SEND_ERROR to maintain strict validation. When OptiX is auto-detected (e.g., local submodule present) but CUDA unavailable, gracefully disable with STATUS message to allow builds to continue. This addresses review feedback to keep error for explicit requests while handling auto-detection gracefully. * Apply CMake formatting to SLANG_ENABLE_OPTIX validation logic * revert: slang-rhi changes as those are merged independently as in PR # slang-rhi#400
* Improve exported build targets (#7382)manuelkNVDA2025-06-12
| | | | | | | | | | | * Add the missing generator expression for install build targts Fixes #7351. * Formatted --------- Co-authored-by: Harsh Aggarwal (NVIDIA) <haaggarwal@nvidia.com>
* Update slang-rhi (#7303)Simon Kallweit2025-06-06
| | | | | | | | | | | | | | | | | | | | | * update slang-rhi * adapt to new slang-rhi API * enable slang-rhi agility sdk * fix handling empty list * disable failing slang-rhi tests * format code * fix slang-rhi-tests ci step * skip running slang-rhi-tests --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Update C++ standard to C++20 (#6980)Ellie Hermaszewska2025-05-06
| | | | | | | | | * Correct incorrect enum usage on metal * Update C++ standard to C++20 Closes https://github.com/shader-slang/slang/issues/6945 * use bit_cast
* Stop using `chmod` on Windows host to fix build targeting Android (#6865)James01242025-04-24
| | | Co-authored-by: Yong He <yonghe@outlook.com>
* Fix compiler warning on Windows about -build-id (#6857)Jay Kwak2025-04-19
| | | | | | | | | | | | | | | | | | This PR fixes the compiler warning like following, lld-link: warning: ignoring unknown argument '--no-undefined' lld-link: warning: ignoring unknown argument '--build-id', did you mean '-build-id' chatGPT said that those options are for ELF and not for Windows: These warnings happen because the Clang toolchain on Windows is invoking lld-link, which is the LLVM linker frontend for link.exe compatibility (i.e., it acts like the MSVC linker). The arguments --no-undefined and --build-id are ELF-specific flags, which are valid when targeting Linux, but not valid in the PE/COFF (Windows) environment. Here's a breakdown: ⚠️ Warning messages explained: lld-link: warning: ignoring unknown argument '--no-undefined' → This is a Linux/ELF flag. On Windows, this has no effect and is unknown. lld-link: warning: ignoring unknown argument '--build-id', did you mean '-build-id' → Again, --build-id is for ELF binaries to include a unique build ID. Not valid for Windows targets.
* Fix compiler warning with clang 18.1.8 on windows (#6843)Jay Kwak2025-04-17
| | | * Fix compiler warning with clang 18.1.8 on windows
* Use GITHUB_TOKEN for fetching prebuilt (#6712)Gangzheng Tong2025-04-07
| | | | | | | | | | | | | | | | | | | | | | | | | | * Use GITHUB_TOKEN for fetching prebuilt This PR extends Commit c6b702c to use GITHUB_TOKEN if set for fetching prebuilt binaries. This allows webgpu-dawn and slang-tint to be downloaded for certain IPs where the github API rate is limited. Fixes #6689 * Don't ignore download failure if github token is provided * Update readme for getting github access token * format code * combine cmake_parse_arguments calls * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
* Fix: Respect user-defined output directory settings for libraries (#6604)Harsh Aggarwal (NVIDIA)2025-03-14
| | | | | | | | | | | | | | | * Fix: Respect user-defined output directory settings for libraries Modified SlangTarget.cmake to properly respect CMAKE_LIBRARY_OUTPUT_DIRECTORY, CMAKE_RUNTIME_OUTPUT_DIRECTORY and CMAKE_ARCHIVE_OUTPUT_DIRECTORY variables when they are explicitly set by the user. This ensures libraries and executables are placed in the directories specified by the user, including handling Multi-Config generators like Visual Studio, Xcode, and Ninja Multi-Config. Fixes #5896: Shared library build output location ignores CMAKE setting * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Fix and document static build (#6374)Ellie Hermaszewska2025-02-18
| | | | | | | | | | | * Set static stbi flag for static builds * Add missing SYSTEM directive for external includes * Add instructions for linking statically against slang --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Fix static build and install (#6158)Dario Mylonopoulos2025-01-24
| | | | | | | * Add SLANG_ENABLE_RELEASE_LTO cmake option * Fix cmake static build * Disable install SlangTargets to avoid static build failing
* Fix documentation on DescriptorHandle. (#6062)Yong He2025-01-14
| | | | | | | | | | | * Fix documentation on DescriptorHandle. * Fix. * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Add SLANG_ENABLE_DXIL (#5853)Ellie Hermaszewska2024-12-13
|
* Set default hidden visibility for all source on gcc (#5850)Ellie Hermaszewska2024-12-13
|
* Fix prebuilt dependencies filenames on non-windows platforms (#5848)Ellie Hermaszewska2024-12-12
|
* Emit debug info for Release builds (#5783)Ellie Hermaszewska2024-12-06
| | | | | | | | | | | * Remove unnecessary warnings on windows * Correctly set debug flags on gcc * Emit debug info for Release builds * Perform LTO for relwithdebinfo builds * Release from release builds not relwithdebinfo
* Split debug info for all targets (#5732)Ellie Hermaszewska2024-12-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Split debug info for all targets Work towards https://github.com/shader-slang/slang/issues/5724 * release separate debug info Closes https://github.com/shader-slang/slang/issues/5724 * Add split debug info support for MacOS * Add SLANG_ENABLE_SPLIT_DEBUG_INFO option * Sign and package debug info on MacOS * Set --build-id where available * Correct debug info installing * Keep cpack macos signing workaround * Neaten cmake * Disable sccache if building split debug info on Windows * Only repack necessary files on MacOS releases
* Remove duplicate call to install() for libslang (#5767)Ellie Hermaszewska2024-12-05
| | | | | Closes https://github.com/shader-slang/slang/issues/5764 Also mention other installed targets in cmake config
* Add SlangConfig.cmake with slang build targets (#5674)ov-l2024-12-03
| | | | | | | | | | | | | * Modify package config * Apply formatting. * Make sure build works for Emscripten * Add documentation on install target. --------- Co-authored-by: obhi-d <obi.de.online@gmail.com>
* Install PDB files when available (#5665)Ellie Hermaszewska2024-12-03
| | | | | | | | | | | | | | * Install PDB files when available Closes https://github.com/shader-slang/slang/issues/5562 * format code * format code --------- Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* fetch and extract prebuilt deps lazily (#5707)Ellie Hermaszewska2024-11-30
| | | Closes https://github.com/shader-slang/slang/issues/5706 and https://github.com/shader-slang/slang/issues/5657
* Enable Link-Time-Code-Generation for Release builds (#5678)Jay Kwak2024-11-26
| | | | | | | | | | | | This commit enables Link Time Code Generation, or LTCG for short, for the release builds. Because "incremental" build is enabled, this ends up using "/LTCG:incremental" rather than the full "/LTCG". It is still expected to more performant than without any "/LTCG" at all. In order to use the full LTCG, we will need to give up the incremental build option for the Release build. We will need to decide if we wants to do it later.
* Correct include dir for libslang (#5539)Ellie Hermaszewska2024-11-13
| | | | | | | | This stops adding the repo root to the include path for anything linking with slang. This enabled a bunch of convenient includes, but might lead to confusing behavior for anyone including slang. Not to mention differences including it from an install vs source. Co-authored-by: Yong He <yonghe@outlook.com>
* Fix EHa flag compiler filtering (#5524)cheneym22024-11-08
| | | | | | | | | | | | | | | | | | The previous attempt to enable Structured Exception Handling in (only) MSVC using the /EHa compiler flag caused trouble with flags defined with Cmake Generator Expressions. These expressions are not fully resolved, and they fail validation checks in check_cxx_compiler_flag(). The previous attempt at applying /EHa to only MVSC involved refactoring a direct call to target_compile_options() with a call to the Slang helper function add_supported_cxx_flags() where an additional MSVC filter was introduced, but the helper also calls check_cxx_compiler_flag() to see if flags are supported. It was okay for /EHa, but not some other flags that ended up getting newly validated. The above issue is fixed by re-implementing the change that added /EHa to only MSVC. This change goes back to adding compiler flags without the helper function with its extra validation, instead using an additional cmake generator expression to apply /EHa only to MSVC.
* Catch all exceptions in render-test (#5495)cheneym22024-11-05
| | | | | | | | | | | | | | | | | Catch all exceptions in render-test In MSVC, the /EHsc flag is used by default, it causes only C++ (synchronous) exceptions to be caught by try/catch blocks. The /EHa flag can instead be used to catch both synchronous C++ exceptions as well as structured asynchronous exceptions such as those seen in segfaults or other typical bugs. Using /EHa allows render-test to not crash completely if there is a buggy graphics driver in the system. Issue 5275
* Put debug symbols in releases (#5370)Ellie Hermaszewska2024-10-29
|
* format cmake files (#5406)Ellie Hermaszewska2024-10-29
| | | | | | | | | * format cmake files * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* declutter top level CMakeLists.txt (#5391)Ellie Hermaszewska2024-10-24
| | | | | | | | | | | | | | | | | | | | | * 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
* Make slang-llvm fetching and failure more robust (#5346)Ellie Hermaszewska2024-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Make slang-llvm fetching and failure more robust Improve error reporting when things go wrong. Fall back by default to a non-llvm build Closes https://github.com/shader-slang/slang/issues/5247 Tested sensible behavior with: - `FETCH_BINARY_IF_POSSIBLE`, valid tag - No errors or warnings, successful build with llvm - `FETCH_BINARY_IF_POSSIBLE`, no valid tag - Warning message, successful llvm build with slang-llvm from latest release - `FETCH_BINARY_IF_POSSIBLE`, no valid tag, bad `SLANG_SLANG_LLVM_BINARY_URL` specified - Warning message, successful no-llvm build - `FETCH_BINARY_IF_POSSIBLE`, no valid tag, unable to fetch release information - Warning message, successful no-llvm build - `FETCH_BINARY`, valid tag - No errors or warnings, successful build with llvm - `FETCH_BINARY`, no valid tag - Warning message, successful llvm build with slang-llvm from latest release - `FETCH_BINARY`, no valid tag, bad `SLANG_SLANG_LLVM_BINARY_URL` specified - Error, explaining that we couldn't fetch it - `FETCH_BINARY`, no valid tag, unable to fetch release info - Error, explaining that we couldn't fetch it * Allow downloading from a local file --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Enable WebGPU tests in CI (#5239)Anders Leino2024-10-15
|
* Fix release build failure (#5285)Ellie Hermaszewska2024-10-14
| | | | | | | | | | | | | * Fix race condition for building stdlib headers Fixes https://github.com/shader-slang/slang/issues/5270 * Generalize slangtarget install options * Install slang-without-embedded-stdlib with generators --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Restrict stdlib embed macros to single source file (#5251)Ellie Hermaszewska2024-10-11
| | | | | | | * Restrict stdlib embed macros to single source file * Build slang-without-embedded-stdlib with the same target type as libslang To avoid building everything twice
* Allow building using external dependencies (#5076)Tobias Frisch2024-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add options to prevent usage of own submodules Signed-off-by: Jacki <jacki@thejackimonster.de> * Allow using external unordered dense headers Signed-off-by: Jacki <jacki@thejackimonster.de> * Link system wide installed unordered dense Signed-off-by: Jacki <jacki@thejackimonster.de> * Allow external header usage for lz4 and spirv Signed-off-by: Jacki <jacki@thejackimonster.de> * Add more options to disable targets Signed-off-by: Jacki <jacki@thejackimonster.de> * Add option to provide explizit path for spirv headers and remove earlier options that break the build process Signed-off-by: Jacki <jacki@thejackimonster.de> * Rename options to use common prefix Signed-off-by: Jacki <jacki@thejackimonster.de> * Fix indentation for the cmake changes Signed-off-by: Jacki <jacki@thejackimonster.de> * Add advanced_option function for cmake * Normalize includes between system and submodule dependencies Fix any before-accidentally-working problems * Add option for enabling/disabling slang-rhi Signed-off-by: Jacki <jacki@thejackimonster.de> * Pass correct include path for cpu tests * Correct include path --------- Signed-off-by: Jacki <jacki@thejackimonster.de> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
* Use GITHUB_TOKEN if set (#5070)Jay Kwak2024-09-19
| | | | | | | | | | | | | | | | | | | | | | | | | * Use GITHUB_TOKEN if set We have been having an error from Github saying that API rate limit exceeded for IP. It hits the limit more often if your public IP is shared by many other collegues. {"message":"API rate limit exceeded for 216.228.112.22. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"} The suggested solution from GitHub is to use gh.exe tool with "auth login" arguments. It will store a token and allow us to use API more than the limit set for IP without token. However, our cmake build doesn't use gh.exe and API is called via REST. This commit adds an extra header to the HTTP request with the infomration of the github token if the value is. Usage: cmake.exe --preset vs2019 -DSLANG_GITHUB_TOKEN=your_token_here * Adding a warning message to use LANG_GITHUB_TOKEN --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Dont require llvm for building generators (#4895)Ellie Hermaszewska2024-08-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Dont require llvm for building generators * Fetch slang-llvm.so from correct release (#4847) * Fetch slang-llvm.so from correct release Closes https://github.com/shader-slang/slang/issues/4648 Should close https://github.com/shader-slang/slang/issues/4812 * Update docs * Correct documentation on cmake option * Neaten cmake script * Fix fetching on windows --------- Co-authored-by: Yong He <yonghe@outlook.com> * Be a bit more careful dealing with release list fetching failure * clarify error messages --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Revert "Fetch slang-llvm.so from correct release (#4847)" (#4893)Yong He2024-08-20
| | | This reverts commit 579d59c761cb0460701e0e820eb066275fe357b3.
* Fetch slang-llvm.so from correct release (#4847)Ellie Hermaszewska2024-08-20
| | | | | | | | | | | | | | | | | | * Fetch slang-llvm.so from correct release Closes https://github.com/shader-slang/slang/issues/4648 Should close https://github.com/shader-slang/slang/issues/4812 * Update docs * Correct documentation on cmake option * Neaten cmake script * Fix fetching on windows --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Reduce duplication in slang lib builds (#4651)Ellie Hermaszewska2024-07-18
| | | | | | | | | | | * spelling * Reduce duplication in slang lib builds Closes (as much as possible) https://github.com/shader-slang/slang/issues/4615 The only case where we could actually make a difference would be an embedded stdlib and static slang, which isn't a configuration anyone actually uses. Nonetheless, clean up this bit
* Remove generated file from source and build at build time (#4649)Ellie Hermaszewska2024-07-18
| | | | | * Remove generated file from source and build at build time * comments
* More precise handing of option dependencies (#4612)Ellie Hermaszewska2024-07-11
|
* Cope with failed version parsing (#4609)Ellie Hermaszewska2024-07-11
| | | | | | | | | * Cope with failed version parsing * Better version parsing * populate slang-tag-version with cmake * Neaten cmake
* Make ci scripts more robust (#4608)Ellie Hermaszewska2024-07-10
| | | | | | | | | * Remove syntax error in release script * Make ci scripts more robust * Remove lib copying * Add bin directory to RPATH
* Specialize address space during spirv legalization. (#4600)Yong He2024-07-10
| | | | | | | | | | | * Specialize address space during spirv legalization. * Fix. * Fix building doc. * Fix cmake. * Update assert.