diff options
Diffstat (limited to '.github/actions')
| -rw-r--r-- | .github/actions/common-setup/action.yml | 112 |
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 |
