summaryrefslogtreecommitdiff
path: root/.github/actions
diff options
context:
space:
mode:
Diffstat (limited to '.github/actions')
-rw-r--r--.github/actions/common-setup/action.yml112
1 files changed, 112 insertions, 0 deletions
diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml
new file mode 100644
index 000000000..60c81b007
--- /dev/null
+++ b/.github/actions/common-setup/action.yml
@@ -0,0 +1,112 @@
+name: Common setup
+
+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
+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: ${{github.job}}-${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}}
+ variant: sccache
+ - 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
+
+ # 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}
+ 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
+ id: cache-llvm
+ 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') }}
+ - name: Build LLVM
+ if: 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'
+ with:
+ path: ${{ github.workspace }}/build/llvm-project-install
+ key: ${{ steps.cache-llvm.outputs.cache-primary-key }}
+ - 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"
+
+ # Install swiftshader
+ - uses: robinraju/release-downloader@v1.8
+ continue-on-error: true
+ with:
+ latest: true
+ repository: "shader-slang/swiftshader"
+ out-file-path: "swiftshader"
+ extract: true
+ fileName: "vk_swiftshader_${{inputs.os}}_${{inputs.platform}}.zip"
+
+ - name: Install SwiftShader
+ shell: bash
+ run: |
+ case "${{inputs.os}}" in
+ windows*) echo "${{github.workspace}}/swiftshader/" >> "$GITHUB_PATH";;
+ *) echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${{github.workspace}}/swiftshader" >> "$GITHUB_ENV";;
+ esac
+
+ # Put spirv-tools in path
+ - shell: bash
+ run: |
+ case "${{inputs.os}}" in
+ windows*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/windows-${{inputs.platform}}/bin" >> "$GITHUB_PATH";;
+ linux*) echo "${{github.workspace}}/external/slang-binaries/spirv-tools/$(uname -m)-linux/bin" >> "$GITHUB_PATH";;
+ esac