blob: a1323ddbd726450ab0f83ea8f2ab1da9210da1d9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
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: ${{inputs.os}}-${{inputs.compiler}}-${{inputs.platform}}-${{inputs.config}}
variant: sccache
append-timestamp: false
- 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
|