-
Notifications
You must be signed in to change notification settings - Fork 34
145 lines (135 loc) · 5.16 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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]
build_type: [Release, RelAssert]
arch : [ x86_64, aarch64 ]
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: RelAssert
build_type_flags: -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
- arch: aarch64
arch_flags: -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/ock/platform/arm-linux/aarch64-toolchain.cmake"
-DLLVM_TARGET_ARCH=AArch64
-DLLVM_HOST_TRIPLE=aarch64-unknown-linux-gnu
-DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnu
-DLLVM_TABLEGEN="$GITHUB_WORKSPACE/build_native/bin/llvm-tblgen"
-DCLANG_TABLEGEN="$GITHUB_WORKSPACE/build_native/bin/clang-tblgen"
- build_type: Release
build_type_flags: -DCMAKE_BUILD_TYPE=Release
exclude:
# For now just do latest llvm with aarch to reduce cache usage.
- arch: aarch64
version: 17
- arch: aarch64
build_type: Release
runs-on: ${{ 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: show arch flags
if: steps.cache.outputs.cache-hit != 'true'
run:
echo ${{ matrix.arch_flags }}
# - name: Check ock place
# run: |
# pwd
# ls *
- 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: Check llvm place
if: (steps.cache.outputs.cache-hit != 'true') && ("${{ matrix.arch }}" != 'x86_64')
run: |
pwd
ls *
ls ock
ls ock/platform
- name: Install Ninja
if: steps.cache.outputs.cache-hit != 'true'
uses: llvm/actions/install-ninja@main
- name: install aarch64 build tools
if: ${{ matrix.arch }} == 'aarch64' && steps.cache.outputs.cache-hit != 'true'
run:
sudo apt-get install --yes gcc-11-aarch64-linux-gnu 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}}" aarch "${{ matrix.arch }}"extra flags "${{ matrix.build_type_flags}}" and build_type "${{matrix.build_type}}"
- name: cmake native for cross
if: (steps.cache.outputs.cache-hit != 'true') && ("${{ matrix.arch }}" != 'x86_64')
run:
cmake llvm
-DLLVM_ENABLE_DIA_SDK=OFF
-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_native
-GNinja
${{ matrix.build_type_flags }}
${{ matrix.os_flags}}
- name: build native for cross
if: ${{ matrix.arch }} != 'x86_64' && steps.cache.outputs.cache-hit != 'true'
run:
ninja -C build_native llvm-tblgen clang-tblgen llvm-config
- 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