forked from shader-slang/slang
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
WIP Drop Premake (shader-slang#3703)
* Remove premake lua * Remove premake generated vs project * remove deps file * Remove premake driving bat files * Full test matrix under CMake * Remove premake based ci workflows * Wiggle CI * remove cmake from ci name * find frameworks correctly on osx * remove cmake from ci name * Cope with sccache not being available * cmake based falcor tests * ci wobble * only install ninja if necessary * more appropriate cache name * Remove premake from build instructions * Add some docs on ci setup * remove premake from regression tests * remove premake from perf test * Set SLANGC_PATH * ci wobble * bump slang-binaries * ci wobble * Bump spirv tools * dont use timestamp in cache * remote debug code * cache key wobble * Install sccache after building llvm * Do not build llvm tools * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * Tests spirv via glsl in ci * Define SLANG_ENABLE_XLIB=1 * osx builds on aarch64 * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * ci wobble * package documentation and metadata with cmake * ci wobble * Split hlsl double intrinsic tests * ci wobble * Correct type for double log10 Fixes shader-slang#4549 * remove working test from expected failures * add broken test to expected failures * smaller build for falcor tests * ci wobble * A few exclusions in ci * wip, release script * Enable examples in ci * neaten release script * Correct building docs * Only use xlib vulkan when slang_enable_xlib is true * bump slang-llvm version * Remove toolchain file use * Bump slang-llvm preset version * slash direction * Improve build directions * Add msvc cross build documentation * Disable old release files * Smaller set of releases for test * Allow not building llvm * simplify release matrix * Cross releases * formatting * formatting * ci wiggle * ci wiggle * cleaner * neaten * ci wobble * formatting * Install cross tools on linux * do not clean build dir * neaten ci * neaten ci * neaten ci * remove unused release workflow files * Build llvm on some platforms * neaten ci * notarize on osx * s/x64/x86_64 * ci wobble * Embed stdlib for release build * wobble ci * wobble ci * s/x64/x86_64 * ci wobble * ci wobble * ci wobble * vk-gl-cts on cmake * neaten ci * neaten ci * bump cache action version * Cope with windows being weird about case * old glibc version * old glibc version * Correct action file * Keep cache hot on main branch * separate small script for old glibc releases * ci wobble * ci wobble * Run cmake outside of docker * only sign on releases * Revert "Run cmake outside of docker" This reverts commit a58aaba. * python3 on build image * less parallel * ci wobble * ci wobble * ci wobble * newer git * ci wobble * ci wobble * Use newer docker image * Use newer docker image * sccache wobble * permissions issue * neaten * build llvm in ci * build llvm in ci * Remove linux clang build in ci * Only install crossbuild tools on non-aarch64 systems * neaten ci.yml * Correct github matrix * Simplify github matrix * ci wobble * Disable broken test See shader-slang#4589 * ci wobble * Neater slang-llvm archive filename * Neater path for uploading artifacts * Neater ci names * Use Windows SDK 10.0.19041.0 in cmake builds
- Loading branch information
1 parent
9f1ff45
commit 0e56999
Showing
119 changed files
with
514 additions
and
22,659 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,86 +5,109 @@ description: Performs setup common to all our actions | |
inputs: | ||
os: | ||
required: true | ||
runs-on: | ||
required: true | ||
compiler: | ||
required: true | ||
platform: | ||
required: true | ||
config: | ||
required: true | ||
build-llvm: | ||
required: true | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Set up MSVC dev tools on Windows | ||
uses: ilammy/msvc-dev-cmd@v1 | ||
- name: Set up sccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: ${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}} | ||
variant: sccache | ||
append-timestamp: false | ||
sdk: "10.0.19041.0" | ||
|
||
- shell: bash | ||
run: | | ||
# Set up system dependencies | ||
# Install Ninja | ||
case "${{inputs.os}}" in | ||
linux*) sudo apt-get install -y ninja-build;; | ||
windows*) choco install ninja;; | ||
macos*) brew install ninja;; | ||
esac | ||
if ! command -v ninja; then | ||
case "${{inputs.os}}" in | ||
linux*) sudo apt-get install -y ninja-build;; | ||
windows*) choco install ninja;; | ||
macos*) brew install ninja;; | ||
esac | ||
fi | ||
# Install cross tools on Ubuntu | ||
if [[ "${{inputs.os}}" == linux* && "${{inputs.platform}}" == "aarch64" && "$(uname -m)" != "aarch64" ]]; then | ||
sudo apt-get install -y crossbuild-essential-arm64 | ||
fi | ||
# Set compiler | ||
CC=${{inputs.compiler}} | ||
CXX=${{inputs.compiler}} | ||
# infer C++ compiler | ||
CXX=${CXX/gcc/g++} | ||
CXX=${CXX/clang/clang++} | ||
# Correct version on older ubuntu | ||
if [[ "${{inputs.runs-on}}" == ubuntu-20.04 ]]; then | ||
CC=${CC/gcc/gcc-10} | ||
CXX=${CXX/g++/g++-10} | ||
# Correct gcc version on older ubuntu | ||
if [[ "${{inputs.os}}" == linux* ]]; then | ||
gcc_version=$(gcc -dumpversion | cut -d'.' -f1) | ||
if [ "$gcc_version" -lt 10 ]; then | ||
CC=${CC/gcc/gcc-10} | ||
CXX=${CXX/g++/g++-10} | ||
fi | ||
fi | ||
# Export | ||
echo "CC=$CC" >> "$GITHUB_ENV" | ||
echo "CXX=$CXX" >> "$GITHUB_ENV" | ||
# Set CMake to use sccache | ||
echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" | ||
echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" | ||
# Some useful variables | ||
config=${{inputs.config}} | ||
Config=$(echo "${{inputs.config}}" | sed 's/debug/Debug/;s/release/Release/') | ||
bin_dir=$(pwd)/build/$Config/bin | ||
lib_dir=$(pwd)/build/$Config/lib | ||
echo "config=$config" >> "$GITHUB_ENV" | ||
echo "Config=$Config" >> "$GITHUB_ENV" | ||
echo "bin_dir=$bin_dir" >> "$GITHUB_ENV" | ||
echo "lib_dir=$lib_dir" >> "$GITHUB_ENV" | ||
# Try to restore a LLVM install, and build it otherwise | ||
- uses: actions/cache/restore@v3 | ||
- uses: actions/cache/restore@v4 | ||
id: cache-llvm | ||
if: inputs.build-llvm == 'true' | ||
with: | ||
path: ${{ github.workspace }}/build/llvm-project-install | ||
# Use os*compiler*platform in lieu of an ABI key here, which is what we really want | ||
key: ${{ inputs.os }}-${{ inputs.compiler }}-${{ inputs.platform }}-${{ hashFiles('external/build-llvm.sh') }} | ||
key: llvm-${{ inputs.os }}-${{ inputs.compiler }}-${{ inputs.platform }}-${{ hashFiles('external/build-llvm.sh') }} | ||
- name: Build LLVM | ||
if: steps.cache-llvm.outputs.cache-hit != 'true' | ||
if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true' | ||
shell: bash | ||
run: ./external/build-llvm.sh --install-prefix "${{ github.workspace }}/build/llvm-project-install" | ||
- uses: actions/cache/save@v3 | ||
if: steps.cache-llvm.outputs.cache-hit != 'true' | ||
- uses: actions/cache/save@v4 | ||
if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true' | ||
with: | ||
path: ${{ github.workspace }}/build/llvm-project-install | ||
key: ${{ steps.cache-llvm.outputs.cache-primary-key }} | ||
|
||
# Run this after building llvm, it's pointless to fill the caches with | ||
# infrequent llvm build products | ||
- name: Set up sccache | ||
uses: hendrikmuhs/[email protected] | ||
with: | ||
key: ${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}} | ||
variant: sccache | ||
# Opportunistically use sccache, it's not available for example on self | ||
# hosted runners or ARM | ||
continue-on-error: true | ||
|
||
- name: Set environment variable for CMake | ||
shell: bash | ||
run: | | ||
echo "LLVM_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" | ||
echo "Clang_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" | ||
if [ "${{inputs.build-llvm}}" == "true" ]; then | ||
echo "LLVM_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" | ||
echo "Clang_DIR=${{ github.workspace }}/build/llvm-project-install" >> "$GITHUB_ENV" | ||
fi | ||
# Set CMake to use sccache if it's available | ||
if command -v sccache; then | ||
echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" | ||
echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> "$GITHUB_ENV" | ||
fi | ||
# Install swiftshader | ||
- uses: robinraju/[email protected] | ||
|
@@ -107,7 +130,9 @@ runs: | |
# Put spirv-tools in path | ||
- shell: bash | ||
run: | | ||
win_platform="${{ inputs.platform }}" | ||
win_platform="${win_platform//x86_64/x64}" | ||
case "${{inputs.os}}" in | ||
windows*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/windows-${{inputs.platform}}/bin" >> "$GITHUB_PATH";; | ||
windows*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/windows-$win_platform/bin" >> "$GITHUB_PATH";; | ||
linux*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/$(uname -m)-linux/bin" >> "$GITHUB_PATH";; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.