1
1
#! /bin/bash -e
2
2
3
- repo=intel/graph-compiler
3
+ cd " $( dirname " $0 " ) /.."
4
+ PROJECT_DIR=" $PWD "
5
+ EXTERNALS_DIR=" $PWD /externals"
6
+ REPO=intel/graph-compiler
4
7
5
8
set -e
6
9
@@ -31,10 +34,6 @@ for arg in "$@"; do
31
34
ENABLE_IMEX=true
32
35
;;
33
36
-l | --dyn)
34
- if [ " $ENABLE_IMEX " = " true" ]; then
35
- echo " IMEX doesn't support dynamical linking of LLVM"
36
- exit 1
37
- fi
38
37
DYN_LINK=ON
39
38
DEV_BUILD=true
40
39
;;
@@ -58,6 +57,11 @@ for arg in "$@"; do
58
57
esac
59
58
done
60
59
60
+ if [ " $ENABLE_IMEX " = " true" ] && [ " $DYN_LINK " = " ON" ]; then
61
+ echo " IMEX doesn't support dynamical linking of LLVM"
62
+ exit 1
63
+ fi
64
+
61
65
if [ ! -z " $REL_BUILD " ]; then
62
66
BUILD_TYPE=Release
63
67
elif [ ! -z " $DEV_BUILD " ]; then
@@ -71,9 +75,6 @@ if [ -z "$MAX_JOBS" ]; then
71
75
[ $MAX_JOBS -gt 0 ] || MAX_JOBS=1
72
76
fi
73
77
74
- cd $( dirname " $0 " ) /..
75
- PROJECT_DIR=$PWD
76
-
77
78
if [ " $ENABLE_IMEX " = " true" ]; then
78
79
LLVM_HASH=$( cat cmake/llvm-version-imex.txt)
79
80
else
@@ -84,28 +85,27 @@ load_llvm() {
84
85
local run_id
85
86
86
87
if [ " $ENABLE_IMEX " = " true" ]; then
87
- llvm_version=" llvm-${LLVM_HASH} -imex-patched"
88
+ local llvm_version=" llvm-${LLVM_HASH} -imex-patched"
88
89
else
89
- llvm_version=" llvm-${LLVM_HASH} "
90
+ local llvm_version=" llvm-${LLVM_HASH} "
90
91
fi
91
92
92
93
gh run download " $run_id " \
93
- --repo " $repo " \
94
+ --repo " $REPO " \
94
95
-n " $llvm_version " \
95
96
--dir " $llvm_dir "
96
- cd " $llvm_dir "
97
97
tar -zxf llvm.tgz
98
98
99
99
MLIR_DIR=" $PWD /lib/cmake/mlir"
100
- cd " $PROJECT_DIR "
101
100
}
102
101
103
102
build_llvm () {
104
- if ! [ -d " llvm-project" ]; then
103
+ local llvm_dir=" $EXTERNALS_DIR /llvm-project"
104
+ if ! [ -d " $llvm_dir " ]; then
105
105
git clone https://github.com/llvm/llvm-project.git
106
- cd llvm-project
106
+ cd " $llvm_dir "
107
107
else
108
- cd llvm-project
108
+ cd " $llvm_dir "
109
109
git fetch --all
110
110
# discard all unstaged changes (there could be remaining patches from the IMEX
111
111
# build that would break 'git checkout ${LLVM_HASH}')
@@ -119,19 +119,20 @@ build_llvm() {
119
119
120
120
if [ " $ENABLE_IMEX " = " true" ]; then
121
121
# clone IMEX and apply patches
122
- cd ../
123
- if ! [ -d " mlir-extensions" ]; then
122
+ local mlir_ext_dir=" $EXTERNALS_DIR /mlir-extensions"
123
+ if ! [ -d " $mlir_ext_dir " ]; then
124
+ cd " $EXTERNALS_DIR "
124
125
git clone https://github.com/Menooker/mlir-extensions.git
125
- cd mlir-extensions
126
+ cd " $mlir_ext_dir "
126
127
else
127
- cd mlir-extensions
128
+ cd " $mlir_ext_dir "
128
129
git fetch --all
129
130
fi
130
131
131
132
git checkout dev
132
133
133
- cd ../llvm-project
134
- git apply ../mlir-extensions/ build_tools/patches/ *
134
+ cd " $llvm_dir "
135
+ find " $mlir_ext_dir / build_tools/patches" -name ' *.patch ' -exec git apply {} +
135
136
fi
136
137
137
138
cmake -G Ninja llvm -B build \
@@ -156,27 +157,23 @@ build_llvm() {
156
157
cmake --build build --parallel $MAX_JOBS
157
158
158
159
MLIR_DIR=" $PWD /build/lib/cmake/mlir"
159
- cd ..
160
160
}
161
161
162
162
# MLIR_DIR is set on all passes
163
163
get_llvm () {
164
164
if [ ! -z " $DEV_BUILD " ]; then
165
- mkdir -p externals
166
- cd externals
167
- build_llvm
168
- cd ..
165
+ mkdir -p " $EXTERNALS_DIR "
166
+ build_llvm
167
+ cd " $PROJECT_DIR "
169
168
return 0
170
169
fi
171
170
172
- llvm_dir=$PROJECT_DIR /../install/llvm
173
- if [ " $ENABLE_IMEX " = " true" ]; then
174
- llvm_version=" llvm-${LLVM_HASH} -imex-patched"
175
- else
176
- llvm_version=" llvm-${LLVM_HASH} "
177
- fi
178
- if ! [ -f " $llvm_dir /$llvm_name " /llvm.tgz ]; then
179
- load_llvm
171
+ local llvm_dir=" $PROJECT_DIR /../install/llvm"
172
+ if ! [ -f " $llvm_dir /$llvm_name /llvm.tgz" ]; then
173
+ mkdir -p " $llvm_dir "
174
+ cd " $llvm_dir "
175
+ load_llvm
176
+ cd " $PROJECT_DIR "
180
177
else
181
178
MLIR_DIR=" $llvm_dir /lib/cmake/mlir"
182
179
fi
0 commit comments