summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
Commit message (Collapse)AuthorAge
* Update build to allow setting external mimalloc path (#8676)Lujin Wang2025-10-11
| | | | Update the build to allow setting user-specific path for the external module mimalloc.
* cmake: install config files into the correct directory for find_package() ↵David Aguilar2025-09-29
| | | | | | | | (#8482) cmake's find_package() will only find the configs when they are in a slang/ subdirectory. Co-authored-by: Mukund Keshava <mkeshava@nvidia.com>
* Set default mimalloc for spirv-tools but allow user to override (#8460)Gangzheng Tong2025-09-17
| | | | | | | | | | | | | | | | | | | | | | | | This PR resolves a configuration conflict where the SLANG_ENABLE_SPIRV_TOOLS_MIMALLOC option was defined twice with different defaults, causing user settings to be overridden. Changes: - Removed duplicate definition in external/CMakeLists.txt that only applied to WIN32 - Define default in main CMakeLists.txt - ON by default for Windows - OFF by default for other platforms (still need to resolve crashes so set it to `OFF` for now) Preserved user configuration - explicit -DSLANG_ENABLE_SPIRV_TOOLS_MIMALLOC=value settings are now properly respected Related to https://github.com/shader-slang/slang/issues/8158 --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Enable static mimalloc in Spriv-Tools (#8419)Gangzheng Tong2025-09-16
| | | | | | | | | | | | | | | | | | | | | | * Added optional mimalloc integration for SPIRV-Tools to improve compilation performance * Cloning `mimalloc` repo to external/ on demand during cmake config * Enabled by default on Windows, configurable via `SLANG_ENABLE_SPIRV_TOOLS_MIMALLOC` CMake option, to enable static mimalloc build in spirv-tools. * There are some crashes in Linux and Mac with static mimalloc enabled, likely due to the system malloc and mimalloc mixed usage. This might be expected as mimalloc in spirv-tools is not extensively tested according to https://github.com/KhronosGroup/SPIRV-Tools?tab=readme-ov-file#dependency-on-mimalloc. So by default only Windows has this enabled. Close: https://github.com/shader-slang/slang/issues/8158 --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Update slang-rhi deps for gfx-unit-test (#8237)Gangzheng Tong2025-08-26
| | | | | | | | | | | This PR marks the `slang-rhi` a required dependecy for `platform` and `gfx-unit-test`, and only build them when `SLANG_ENABLE_SLANG_RHI=ON`. This should allow the slang still to be built without those tests components when `SLANG_ENABLE_SLANG_RHI=OFF`. --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Add more system dependency options to CMake (#7987)Niklas Korz2025-08-20
| | | | | | | | | | | | | | | | | | | | | | | | | Allows opt-in for sourcing the following dependencies from the system, instead of using the vendored ones: - miniz - lz4 - vulkan-headers - spirv-tools - glslang (some of these already had options that weren't working, as either it expected them to be static libraries or it was expecting to be embedded in another CMakeList that should provide the package, instead of finding the package itself) This is based on a patch we currently maintain inside nixpkgs, but as it frequently conflicts with new slang releases, it would be nice to see get this upstream. --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Sam Estep <sam@samestep.com>
* Fix SLANG_USE_SYSTEM_SPIRV_HEADERS=TRUE (#7916)Ellie Hermaszewska2025-07-25
| | | | | | find_package is locally scoped, so like other find_packages we should do it at the top level Closes https://github.com/shader-slang/slang/issues/7643
* bump and pin cmake formatter version (#7800)Ellie Hermaszewska2025-07-17
| | | | | | | * print tool versions for formatter * formatting * bump cmake formatter version
* Comment SLANG_OVERRIDE options (#7584)Ellie Hermaszewska2025-07-02
| | | Closes https://github.com/shader-slang/slang/issues/7309
* 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
* Update CMake version to 3.26 (#7459)Gangzheng Tong2025-06-18
| | | Fixes: #7453
* fix `SLANG_ENABLE_IR_BREAK_ALLOC` (#7418)ArielG-NV2025-06-12
| | | | fixes: #7417 Define was called `SLANG_ENABLE_IR_BREAK_ALLOC,`. This is incorrect, supposed to be `SLANG_ENABLE_IR_BREAK_ALLOC`.
* Remove unnecessary compile definitions (#7355)Emil Imbert Villumsen2025-06-06
| | | | | | | * Remove unused compile definitions No need for full external path; slang is already linking with the SPIRV-Headers cmake target which adds the proper include flags
* Disable Link-Time-Optimization by default (#7345)Jay Kwak2025-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Disable Link-Time-Optimization by default LTO was requested for the release package a while ago. When we added it, LTO was enabled by default although it was needed only for the release packages. Later we found that the Release build cannot be incrementally recompiled when LTO is enabled. It sometimes works fine, but it required full recompilation when it doesn't work. We added a new CMake option, `SLANG_ENABLE_RELEASE_LTO`, to disable it for developers. But many Slang developers don't know the option exists. I was going to update the document, CONTRIBUTING.md, but I thought it will be better to change the default behavior. * Fix a compiler warning treated as an error on linux A padding variable was uninitialized, which is fine, but the compiler was complaining about it. * Fix other gcc error for uninitialized variable * Fix more compile warning treated as error * Fix compiler warning from gcc 11 It appears that this is a valid warning that the `delete this` is done on an offset 8 when the class uses multiple inheritance. The compiler warning is following: ``` In file included from /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:5, from /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:3: In destructor ‘virtual Slang::ComBaseObject::~ComBaseObject()’, inlined from ‘uint32_t Slang::ComBaseObject::_releaseImpl()’ at /home/runner/work/slang/slang/source/core/slang-com-object.h:49:16, inlined from ‘virtual uint32_t Slang::MemoryFileSystem::release()’ at /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:34:5: /home/runner/work/slang/slang/source/core/slang-com-object.h:33:31: error: ‘void operator delete(void*, std::size_t)’ called on pointer ‘<unknown>’ with nonzero offset 8 [-Werror=free-nonheap-object] 33 | virtual ~ComBaseObject() {} | ^ In destructor ‘virtual Slang::ComBaseObject::~ComBaseObject()’, inlined from ‘uint32_t Slang::ComBaseObject::_releaseImpl()’ at /home/runner/work/slang/slang/source/core/slang-com-object.h:49:16, inlined from ‘virtual uint32_t Slang::MemoryFileSystem::release()’ at /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:34:5, inlined from ‘Slang::ComPtr<T>::~ComPtr() [with T = ISlangMutableFileSystem]’ at /home/runner/work/slang/slang/include/slang-com-ptr.h:113:34, inlined from ‘void _modulePtr_impl(UnitTestContext*)’ at /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:92:1: /home/runner/work/slang/slang/source/core/slang-com-object.h:33:31: error: ‘void operator delete(void*, std::size_t)’ called on pointer ‘<unknown>’ with nonzero offset 8 [-Werror=free-nonheap-object] 33 | virtual ~ComBaseObject() {} | ^ /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp: In function ‘void _modulePtr_impl(UnitTestContext*)’: /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:36:69: note: returned from ‘void* operator new(std::size_t)’ 36 | ComPtr<ISlangMutableFileSystem>(new Slang::MemoryFileSystem()); | ^ ``` The problem is on the fact that `ComBaseObject` is not the first in the multiple inheritance: ``` class MemoryFileSystem : public ISlangMutableFileSystem, public ComBaseObject { public: // ISlangUnknown SLANG_COM_BASE_IUNKNOWN_ALL ``` It should be: ``` class MemoryFileSystem : public ComBaseObject, public ISlangMutableFileSystem ``` The chain of ComObject release is little complicated and it is easy to make a mistake. Here is summary with details, 1. `release()` is declared as a pure-virtual in ISlangUnknown, which is one of the base classes of `ISlangMutableFileSystem`. ``` struct ISlangUnknown { virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() = 0; ``` 2. `release()` is implemented with the macro `SLANG_COM_BASE_IUNKNOWN_RELEASE`. ``` SLANG_NO_THROW uint32_t SLANG_MCALL release() SLANG_OVERRIDE \ { \ return _releaseImpl(); \ } inline uint32_t ComBaseObject::_releaseImpl() { // Check there is a ref count to avoid underflow SLANG_ASSERT(m_refCount != 0); const uint32_t count = --m_refCount; if (count == 0) { delete this; } return count; } ``` 3. The instance of `MemoryFileSystem` is handled by ComPtr. And `ComPtr::~ComPtr()` calls the `release()`. ``` ComPtr<ISlangMutableFileSystem> memoryFileSystem = ComPtr<ISlangMutableFileSystem>(new Slang::MemoryFileSystem()); SLANG_FORCE_INLINE ~ComPtr() { if (m_ptr) ((Ptr)m_ptr)->release(); } ``` 4. When `delete this` is called, because ComBaseObject is not the first in the multiple inheritance, `this` is 8 byte off from the actual instance address. A fix for this is to change the order of the inheritance and make ComBaseObject to be the first in the order.
* Update build to allow setting external lua path (#7167)lujinwangnv2025-05-20
| | | | | | | | | | * Update build to allow setting external lua path Update the build to allow setting user-specific path for the external module lua. * T * Fix an include path
* Update build to allow setting more external paths (#7044)lujinwangnv2025-05-10
| | | | | | * Update build to allow setting more external paths Update the build to allow setting user-specific paths for the external modules: glm, imgui, slang-rhi, and tinyobjloader.
* Add Slang Byte Code generation and interpreter. (#6896)Yong He2025-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add Slang Byte Code generation and interpreter. * Fix compile issues. * format code * More compile fix. * Fix clang issue. * Fix more clang issues. * Another clang fix. * Fix clang issues. * Fix another clang issue. * Fix wasm build. * Update building.md * Fix test-server. * Fix compile error. * Fix bug. --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* 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: Export slangTargets.cmake (#6679)FrostyLeaves2025-04-02
|
* Ignore failure to fetch webgpu_dawn and slang-tint (#6689)Gangzheng Tong2025-03-26
| | | | | | | | | | | * Ignore failure to fetch webgpu_dawn and slang-tint Fixes #6683 * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Add option to exclude webgpu-dawn and slang-tint (#6537)jarcherNV2025-03-07
| | | | Add option to exclude webgpu-dawn and slang-tint from the build, for environments that need to build Slang without internet access.
* Update build to allow setting external paths (#6528)jarcherNV2025-03-07
| | | | | | | * Update build to allow setting external paths Update the build to allow setting user-specific paths for the external modules. This allows building Slang without also fetching the external modules, assuming they are already present elsewhere locally.
* Feature/initialize list side branch (#6058)kaizhangNV2025-02-05
| | | | | | | | | | | | | | | | | | | | | | * SP004: implement initialize list translation to ctor - We synthesize a member-wise constructor for each struct follow the rules described in SP004. - Add logic to translate the initialize list to constructor invoke - Add cuda-host decoration for the synthesized constructor - Remove the default constructor when we have a valid member init constructor - Disable -zero-initialize option, will re-implement it in followup (#6109). - Fix the overload lookup issue When creating invoke expression for ctor, we need to call ResolveInvoke() to find us the best candidates, however the existing lookup logic could find us the base constructor for child struct, we should eliminate this case by providing the LookupOptions::IgnoreInheritance to lookup, this requires us to create a subcontext on SemanticsVisitor to indicate that we only want to use this option on looking the constructor. - Do not implicit initialize a struct that doesn't have explicit default constructor. Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Distribute slang-glsl-module.bin in release packages. (#6233)Yong He2025-01-31
| | | | | | | | | * Distribute slang-glsl-module.bin in release packages. * Fix. * fix2. * Build glsl modlue into a dll.
* 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
* Add SLANG_ENABLE_DXIL (#5853)Ellie Hermaszewska2024-12-13
|
* 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
* Don't install .clang-format alongside headers (#5762)Ellie Hermaszewska2024-12-05
|
* 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>
* Enable core module embedding by default in CMake. (#5644)Kanashimia2024-11-22
| | | | | | It seems that release workflows were unexpectedly broken when STDLIB was renamed to CORE_MODULE. Changed the option default because I think it just makes more sense. Removed explicit calls to enable it. Fixed docs.
* format cmake files (#5406)Ellie Hermaszewska2024-10-29
| | | | | | | | | * format cmake files * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Rename a directory `source/slang-stdlib` to slang-core-module (#5417)Jay Kwak2024-10-28
| | | | The directory name of `source/slang-stdlib` is changed to `source/slang-core-module`. We will use the term "core module" instead of "standard library" from now on.
* Replace stdlib with core-module on files and projects (#5411)Jay Kwak2024-10-25
| | | | | | | This commit renames the files and projects to prefer "core-module" over "stdlib". The directory name `source/slang-stdlib` needs to be renamed too, and there will be another commit for it soon.
* 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>
* Fix D3D12Core.dll loading problem (#5315)Jay Kwak2024-10-17
| | | | | | | | | | | | | | | | | | D3D12Core.dll had been copied to a wrong directory and slang has been using D3D12Core.dll from the system directory, C:\windows\system32. D3D12Core.dll has to be copied from external/slang-binaries/bin/windows-x64 to build/Release/bin/D3D12 not to build/Release/bin. The same is true for the debug build and it had to be copied to build/Debug/bin/D3D12 not build/Debug/bin. It hasn't been a problem for Release build, because the debug-layer is not enabled for Release build and it didn't cause the version mismatching problem with D3D12SDKLayers.dll. The Release build was loaded from either build/Release/bin or from C:\windows\system32, and it didn't matter which one was used. The Debug build, however, got into a problem where D3D12Core.dll was loaded from the system directory whereas D3D12SDKLayers.dll was loaded from build/Debug/bin and it failed to load D3D12.dll entirely. This caused D3D12 to be "Not supported" for "Windows/Debug" configuration. Note that our CI explicitly excludes DX12 tests for the "Windows/Debug" configuration with a command-line argument "-api all-dx12", and DX12 tests were going to be ignored anyway. The actual problem was observed when WGPU is implemented. WGPU started printing explicit errors for the load failure of D3D12.dll. See more detailed explanation: https://devblogs.microsoft.com/directx/gettingstarted-dx12agility/#d3d12sdkpath-should-not-be-the-same-directory-as-the-application-exe Closes #5305 Closes #5276
* Enable WebGPU tests in CI (#5239)Anders Leino2024-10-15
|
* Lower minimum CMake version to 3.22 (#5295)Ellie Hermaszewska2024-10-15
| | | | | | | * Lower minimum CMake version to 3.22 Reverts https://github.com/shader-slang/slang/pull/4193 * Update build instructions to mention older CMake versions
* Misc build fixes. (#5271)Yong He2024-10-14
| | | | | | | | | | | | | | | | | * Don't use __assume for SLANG_ASSERT + build fixes. * Fix. * build slang-wasm conditionally * Fix. * revert retry open file * revert include. * another attempt of silencing compiler warnings. * revert assume change.
* Fix assert when compiling an entrypoint that calls another entrypoint. (#5268)Yong He2024-10-14
| | | | | * Fix assert when compiling an entrypoint that calls another entrypoint. * Fix test.
* 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
* Add slang-wasm target (#5237)Anders Leino2024-10-11
| | | | | | Support for exceptions is enabled, since Slang uses them for diagnostics. The size optimization arguments ('-Os') resolves some internal emscripten error during the slang-wasm.wasm linking step, which happens when enabling exceptions. ("parse exception: too many locals")
* 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>
* Enable emscripten builds to compile slang.dll to WebAssembly. (#5131)Anders Leino2024-09-25
| | | | | | | | | | | | | | | | | | | | | | | | | | * Compile fixes for Wasm The issues are all are due to 'long' types being 32 bits on WASM. - class members redeclared errors - << with StringBuilder and unsigned long is ambiguous This helps to address issue #5115. * Use the host executable suffix for generators Since the generators are run at build-time, we should not use CMAKE_EXECUTABLE_SUFFIX, which is the suffix for the target platform. Instead, define CMAKE_HOST_EXECUTABLE_SUFFIX as appropriate, and use that suffix instead. This helps to address issue #5115. * Add support for Wasm as a platform This helps to address issue #5115. * Add emscripten build This closes #5115.
* 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>
* Draft: integrate slang-rhi (#4970)Simon Kallweit2024-08-30
| | | | | | | | | | | | | | | | | | | | | * add slang-rhi submodule * refactor render-test to use slang-rhi and remove OpenGL support * remove -vk -glsl tests * remove gl test * disable failing test * allow recursive submodules in github actions * update slang-rhi * update slang-rhi --------- 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>