summaryrefslogtreecommitdiffstats
path: root/.github/actions
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-07-10 22:37:21 +0800
committerGitHub <noreply@github.com>2024-07-10 22:37:21 +0800
commit0e56999a573fada2cce6e94c21ef856cc88dc933 (patch)
tree2a74650a90285c5e4b0823fed10b3cc2ba9fe9d4 /.github/actions
parent9f1ff45e67c3c8e368feec11130378805bf5497c (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.yml83
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