diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-07-10 22:37:21 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-10 22:37:21 +0800 |
| commit | 0e56999a573fada2cce6e94c21ef856cc88dc933 (patch) | |
| tree | 2a74650a90285c5e4b0823fed10b3cc2ba9fe9d4 /.github/actions | |
| parent | 9f1ff45e67c3c8e368feec11130378805bf5497c (diff) | |
WIP Drop Premake (#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 https://github.com/shader-slang/slang/issues/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 a58aaba939a4aa35fe70962fd60d9512b143592f.
* 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 https://github.com/shader-slang/slang/issues/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
Diffstat (limited to '.github/actions')
| -rw-r--r-- | .github/actions/common-setup/action.yml | 83 |
1 files changed, 54 insertions, 29 deletions
diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index a1323ddbd..712a74df5 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -5,35 +5,39 @@ 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/ccache-action@v1.2 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}} @@ -41,50 +45,69 @@ runs: # 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/ccache-action@v1.2 + 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/release-downloader@v1.8 @@ -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 |
