@@ -19,16 +19,23 @@ $(basename "$0")
1919 [ -r | --release ] Release build, requires rebuild of LLVM in Release mode, activates 'dev' option
2020 [ -c | --clean ] Delete the build artifacts from the previous build
2121 [ -i | --imex ] Compile with IMEX (used for GPU pipeline)
22+ [ -s | --suffix ] Build dir suffix
23+ [ -v | --llvm ] Build llvm only
2224 [ -h | --help ] Print this message
2325EOF
2426}
2527
2628DYN_LINK=OFF
2729ENABLE_IMEX=false
2830for arg in " $@ " ; do
31+ if [ ! -z " $ASSIGN_NEXT " ]; then
32+ eval " $ASSIGN_NEXT =$arg "
33+ unset ASSIGN_NEXT
34+ continue
35+ fi
2936 case $arg in
30- -d | --dev)
31- DEV_BUILD=true
37+ -d | --dev)
38+ DEV_BUILD=true
3239 ;;
3340 -i | --imex)
3441 ENABLE_IMEX=true
@@ -44,12 +51,18 @@ for arg in "$@"; do
4451 -c | --clean)
4552 CLEANUP=true
4653 ;;
54+ -s | --suffix)
55+ ASSIGN_NEXT=BUILD_DIR_SFX
56+ ;;
57+ -v | --llvm)
58+ LLVM_ONLY=true
59+ ;;
4760 -h | --help)
4861 print_usage
4962 exit 0
5063 ;;
5164 # -- means the end of the arguments; drop this, and break out of the while loop
52- * )
65+ * )
5366 echo Unsupported option: $arg
5467 print_usage
5568 exit 1
@@ -99,6 +112,10 @@ load_llvm() {
99112
100113build_llvm () {
101114 local llvm_dir=" $EXTERNALS_DIR /llvm-project"
115+ LLVM_BUILD_DIR=" $llvm_dir /build$BUILD_DIR_SFX "
116+ MLIR_DIR=" $LLVM_BUILD_DIR /lib/cmake/mlir"
117+ mkdir -p " $LLVM_BUILD_DIR "
118+
102119 if ! [ -d " $llvm_dir " ]; then
103120 git clone https://github.com/llvm/llvm-project.git
104121 cd " $llvm_dir "
@@ -111,16 +128,17 @@ build_llvm() {
111128 fi
112129
113130 git checkout ${LLVM_HASH}
114- [ -z " $CLEANUP " ] || rm -rf build
131+ [ -z " $CLEANUP " ] || rm -rf " $LLVM_BUILD_DIR "
115132
116133 [ " $DYN_LINK " = " OFF" ] && CXX_FLAGS=" -fvisibility=hidden"
117134
118135 if [ " $ENABLE_IMEX " = " true" ]; then
119136 # clone IMEX and apply patches
120- local mlir_ext_dir=" $EXTERNALS_DIR /mlir-extensions "
137+ local mlir_ext_dir=" $EXTERNALS_DIR /imex-src "
121138 if ! [ -d " $mlir_ext_dir " ]; then
122139 cd " $EXTERNALS_DIR "
123- git clone https://github.com/intel/mlir-extensions.git
140+ local imex_url=" $( grep -F ' set(IMEX_URL ' " $PROJECT_DIR /cmake/imex.cmake" | awk ' {print $2}' | tr -d ' )' ) "
141+ git clone " $imex_url " " $mlir_ext_dir "
124142 cd " $mlir_ext_dir "
125143 else
126144 cd " $mlir_ext_dir "
@@ -134,7 +152,7 @@ build_llvm() {
134152 find " $mlir_ext_dir /build_tools/patches" -name ' *.patch' | sort -V | xargs git apply
135153 fi
136154
137- cmake -G Ninja llvm -B build \
155+ cmake -G Ninja llvm -B " $LLVM_BUILD_DIR " \
138156 -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
139157 -DCMAKE_CXX_FLAGS=" $CXX_FLAGS " \
140158 -DCMAKE_CXX_FLAGS_DEBUG=" -g -O0" \
@@ -153,9 +171,7 @@ build_llvm() {
153171 -DLLVM_INSTALL_UTILS=ON \
154172 -DLLVM_INSTALL_GTEST=ON \
155173 -DMLIR_ENABLE_BINDINGS_PYTHON=ON
156- cmake --build build --parallel $MAX_JOBS
157-
158- MLIR_DIR=" $PWD /build/lib/cmake/mlir"
174+ cmake --build " $LLVM_BUILD_DIR " --parallel $MAX_JOBS
159175}
160176
161177# MLIR_DIR is set on all passes
@@ -174,13 +190,14 @@ get_llvm() {
174190 cd " $llvm_dir "
175191 load_llvm
176192 cd " $PROJECT_DIR "
177- else
193+ else
178194 MLIR_DIR=" $llvm_dir /lib/cmake/mlir"
179195 fi
180196 return 0
181197}
182198
183199get_llvm
200+ [ -z " $LLVM_ONLY " ] || exit 0
184201
185202# written in this form to set LIT_PATH in any case
186203if ! LIT_PATH=$( which lit) && [ -z " $DEV_BUILD " ]; then
@@ -193,16 +210,17 @@ if [ -z "$DEV_BUILD" ]; then
193210 FETCH_DIR=$PROJECT_DIR /build/_deps
194211else
195212 FETCH_DIR=$PROJECT_DIR /externals
196- LIT_PATH=$PROJECT_DIR /externals/llvm-project/build/ bin/llvm-lit
213+ LIT_PATH=" $LLVM_BUILD_DIR / bin/llvm-lit"
197214fi
198215
199- [ -z " $CLEANUP " ] || rm -rf build
200- cmake -S . -G Ninja -B build \
216+ BUILD_DIR=" $PROJECT_DIR /build$BUILD_DIR_SFX "
217+ [ -z " $CLEANUP " ] || rm -rf " $BUILD_DIR "
218+ cmake -S . -G Ninja -B " $BUILD_DIR " \
201219 -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
202220 -DMLIR_DIR=$MLIR_DIR \
203221 -DLLVM_EXTERNAL_LIT=$LIT_PATH \
204222 -DFETCHCONTENT_BASE_DIR=$FETCH_DIR \
205223 -DGC_DEV_LINK_LLVM_DYLIB=$DYN_LINK \
206224 -DGC_ENABLE_IMEX=$ENABLE_IMEX
207225
208- cmake --build build --parallel $MAX_JOBS
226+ cmake --build " $BUILD_DIR " --parallel $MAX_JOBS
0 commit comments