forked from google/clspv
-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (132 loc) · 5.48 KB
/
generate_artifacts.yml
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Generate artifacts
on:
push:
jobs:
build:
name: Build ${{ matrix.os }} ${{ matrix.target }} ${{ matrix.abi }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
target: [linux]
abi: [x86_64]
include:
- os: windows-latest
target: windows
abi: x86_64
- os: ubuntu-latest
target: linux
abi: x86_64
- os: ubuntu-latest
target: android
abi: x86_64
- os: ubuntu-latest
target: android
abi: arm64-v8a
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Free space on runner
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
set +x
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | tail -n 100
df -h
sudo apt-get update
sudo apt-get remove -y '^dotnet-.*'
sudo apt-get remove -y '^temurin-.*'
sudo apt-get remove -y azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox
sudo apt-get autoremove -y
sudo apt-get clean
sudo rm -rf /usr/share/dotnet/
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /usr/local/lib/node_modules
df -h
- name: Setup Ninja
uses: ./.github/actions/setup-ninja
- name: Download and extract Android NDK
if: ${{ matrix.target == 'android' }}
run: |
set -x
wget https://dl.google.com/android/repository/android-ndk-r27c-linux.zip
unzip android-ndk-r27c-linux.zip
rm -rf android-ndk-r27c-linux.zip
- name: Select build directory
shell: bash
run: |
if [ $RUNNER_OS == "Windows" ]; then
echo "builddir=C:/build" >> $GITHUB_ENV
else
echo "builddir=${{ github.workspace }}/build" >> $GITHUB_ENV
fi
- name: Fetch dependencies
run: python3 ./utils/fetch_sources.py --shallow
- name: Download LLVM Windows
if: ${{ matrix.os == 'windows-latest' }}
shell: bash
env:
LLVM_ARCHIVE_PREFIX: LLVM-19.1.3-Windows-X64
run: |
set -x
curl -L https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.3/${LLVM_ARCHIVE_PREFIX}.tar.xz --output ${LLVM_ARCHIVE_PREFIX}.tar.xz
tar -xf ${LLVM_ARCHIVE_PREFIX}.tar.xz
rm -rf ${LLVM_ARCHIVE_PREFIX}.tar.xz
echo "llvmnative=$(pwd)/${LLVM_ARCHIVE_PREFIX}" >> $GITHUB_ENV
echo "clangxxbinary=clang++.exe" >> $GITHUB_ENV
echo "clangbinary=clang.exe" >> $GITHUB_ENV
echo "windows-cmake-args=-DLLVM_HOST_TRIPLE=x86_64-w64-windows-gnu" >> $GITHUB_ENV
- name: Download LLVM Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
env:
LLVM_ARCHIVE_PREFIX: LLVM-19.1.3-Linux-X64
run: |
set -x
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.3/${LLVM_ARCHIVE_PREFIX}.tar.xz
tar -xf ${LLVM_ARCHIVE_PREFIX}.tar.xz
rm -rf ${LLVM_ARCHIVE_PREFIX}.tar.xz
echo "llvmnative=${{ github.workspace }}/${LLVM_ARCHIVE_PREFIX}" >> $GITHUB_ENV
echo "clangxxbinary=clang++" >> $GITHUB_ENV
echo "clangbinary=clang" >> $GITHUB_ENV
- name: Build libclc
if: ${{ matrix.target == 'android' }}
env:
LIBCLC_DIR: ${{ github.workspace }}/build_libclc
run: |
set -x
cmake -S '${{ github.workspace }}/third_party/llvm/libclc' -B ${LIBCLC_DIR} -G Ninja \
-DLLVM_CMAKE_DIR=${{ env.llvmnative }}/lib/cmake \
-DCMAKE_C_COMPILER=${{ env.llvmnative }}/bin/${{ env.clangbinary }} \
-DCMAKE_CXX_COMPILER=${{ env.llvmnative }}/bin/${{ env.clangxxbinary }} \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
-DLIBCLC_TARGETS_TO_BUILD="clspv--;clspv64--"
cmake --build ${LIBCLC_DIR}
ls -l ${LIBCLC_DIR}
echo "android-cmake-args=-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/android-ndk-r27c/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ matrix.abi }} -DCLSPV_EXTERNAL_LIBCLC_DIR=${LIBCLC_DIR}" >> $GITHUB_ENV
- name: Configure & Build
shell: bash
run: |
set -x
cmake -B '${{ env.builddir }}' -S '${{ github.workspace }}' -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
${{ env.android-cmake-args }} \
${{ env.windows-cmake-args }} \
-DCMAKE_C_COMPILER=${{ env.llvmnative }}/bin/${{ env.clangbinary }} \
-DCMAKE_CXX_COMPILER=${{ env.llvmnative }}/bin/${{ env.clangxxbinary }} \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld -Wno-unused-command-line-argument -Wno-unknown-warning-option -Wno-deprecated-declarations"
ls -l '${{ env.builddir }}'
cmake --build '${{ env.builddir }}' --config Release
ls -l '${{ env.builddir }}'
cmake -B '${{ env.builddir }}' -S '${{ github.workspace }}' \
-DCLSPV_SHARED_LIB=1
cmake --build '${{ env.builddir }}' --config Release
ls -l '${{ env.builddir }}'
- uses: actions/upload-artifact@v4
with:
name: clspv-781c86d0-${{ matrix.target }}-${{ matrix.abi }}
path: |
'${{ env.builddir }}'/bin/*
'${{ env.builddir }}'/lib/*clspv_core*
'${{ env.builddir }}'/lib/*clspv_combined*