-
Notifications
You must be signed in to change notification settings - Fork 34
131 lines (119 loc) · 4.27 KB
/
create_llvm.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
name: cache_llvm
on:
push:
branches:
- main
paths:
- '.github/workflows/create_llvm.yml'
pull_request:
paths:
- '.github/workflows/create_llvm.yml'
workflow_dispatch:
jobs:
create_llvm_cache:
strategy:
matrix:
version: [17, 18]
os: [ubuntu-22.04, windows-2019]
build_type: [Release, RelAssert]
arch : [x86_64, aarch64]
exclude:
# For now just do latest llvm with aarch to reduce cache usage.
# - arch: aarch64
# version: 17
# - arch: aarch64
# build_type: Release
- arch: aarch64
# build_type: windows-2019
- os: ubuntu-22.04
- build_type: Release
- version: 17
# - build_type: Release
# version: 17
# - os: ubuntu-22.04
# arch: aarch64
# - os: ubuntu-22.04
# build_type: Release
# - os: windows-2019
# version: 17
# - os: windows-2019
# build_type: Release
include:
# We want to set flags related to particular matrix dimensions. To do this
# we need to create default values first, and then against particular matrix
# dimensions.
# Note that we need to use RelAssert as the cache key matching can match Release against ReleaseAssert
- os_flags:
- arch_flags:
- build_type_flags:
- build_type_flags: -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
build_type: RelAssert
- arch_flags: -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/ock/platform/arm-linux/aarch64-toolchain.cmake"
-DLLVM_HOST_TRIPLE=aarch64-unknown-linux-gnu
arch: aarch64
- build_type: Release
build_type_flags: -DCMAKE_BUILD_TYPE=Release
runs-on: windows-2019
#${{ matrix.os }}
steps:
- name: Cache llvm
id: cache
uses: actions/cache@v3
with:
path:
llvm_install/**
key: llvm-${{ matrix.os }}-${{ matrix.arch }}-v${{ matrix.version }}-${{ matrix.build_type }}
- name: Setup Windows
if: startsWith(runner.os, 'Windows')
uses: llvm/actions/setup-windows@main
with:
arch: amd64
- name: Checkout repo llvm
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: llvm/llvm-project
ref: release/${{matrix.version}}.x
- name: Checkout repo ock platform
if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.arch != 'x86_64' }}
uses: actions/checkout@v4
with:
sparse-checkout: |
platform
path: ock
- name: Install Ninja
if: steps.cache.outputs.cache-hit != 'true'
uses: llvm/actions/install-ninja@main
- name: install aarch64 build tools
if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.arch == 'aarch64' }}
run:
sudo apt-get install --yes g++-11-aarch64-linux-gnu
- name: Flags checker
if: steps.cache.outputs.cache-hit != 'true'
run:
echo Building on "${{ matrix.os }}" with os_flags "${{ matrix.os_flags}}" arch "${{ matrix.arch }}"extra flags "${{ matrix.build_type_flags}}" and build_type "${{matrix.build_type}}"
- name: Run cmake
if: steps.cache.outputs.cache-hit != 'true'
run:
cmake llvm
-DLLVM_ENABLE_DIA_SDK=OFF
-DCMAKE_INSTALL_PREFIX=llvm_install
-DLLVM_ENABLE_ZLIB=FALSE
-DLLVM_ENABLE_ZSTD=FALSE
-DLLVM_ENABLE_Z3_SOLVER=FALSE
-DLLVM_ENABLE_PROJECTS="clang;lld"
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64;RISCV"
-Bbuild
-GNinja
${{ matrix.build_type_flags }}
${{ matrix.os_flags}}
${{ matrix.arch_flags}}
- name: Run build on llvm
if: steps.cache.outputs.cache-hit != 'true'
run:
cmake --build build --target install
- name: Copy lit tools
if: steps.cache.outputs.cache-hit != 'true'
run: |
cp build/bin/FileCheck* llvm_install/bin
cp build/bin/not* llvm_install/bin