@@ -46,7 +46,7 @@ BuildDir="`pwd`"
46
46
ExtraConfigureFlags=" "
47
47
ExportBranch=" "
48
48
git_ref=" "
49
-
49
+ do_cmake_cache= " no "
50
50
do_bolt=" no"
51
51
if [ " $System " = " Linux" ]; then
52
52
case $Machine in
@@ -87,6 +87,7 @@ function usage() {
87
87
echo " -no-mlir Disable check-out & build MLIR"
88
88
echo " -no-flang Disable check-out & build Flang"
89
89
echo " -silent-log Don't output build logs to stdout"
90
+ echo " -use-cmake-cache Build using a CMake cache file"
90
91
}
91
92
92
93
while [ $# -gt 0 ]; do
@@ -200,6 +201,9 @@ while [ $# -gt 0 ]; do
200
201
-silent-log )
201
202
do_silent_log=" yes"
202
203
;;
204
+ -use-cmake-cache | --use-cmake-cache )
205
+ do_cmake_cache=" yes"
206
+ ;;
203
207
-help | --help | -h | --h | -\? )
204
208
usage
205
209
exit 0
@@ -328,6 +332,55 @@ Package=$Package-$Triple
328
332
# Errors to be highlighted at the end are written to this file.
329
333
echo -n > $LogDir /deferred_errors.log
330
334
335
+ redir=" /dev/stdout"
336
+ if [ $do_silent_log == " yes" ]; then
337
+ echo " # Silencing build logs because of -silent-log flag..."
338
+ redir=" /dev/null"
339
+ fi
340
+
341
+
342
+ function build_with_cmake_cache() {
343
+ (
344
+ CMakeBuildDir=$BuildDir /build
345
+ SrcDir=$BuildDir /llvm-project/
346
+ InstallDir=$BuildDir /install
347
+
348
+ rm -rf $CMakeBuildDir
349
+
350
+ # FIXME: Would be nice if the commands were echoed to the log file too.
351
+ set -x
352
+
353
+ env CC=" $c_compiler " CXX=" $cxx_compiler " \
354
+ cmake -G " $generator " -B $CMakeBuildDir -S $SrcDir /llvm \
355
+ -C $SrcDir /clang/cmake/caches/Release.cmake \
356
+ -DCLANG_BOOTSTRAP_PASSTHROUGH=" CMAKE_POSITION_INDEPENDENT_CODE;LLVM_LIT_ARGS" \
357
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
358
+ -DLLVM_LIT_ARGS=" -j $NumJobs $LitVerbose " \
359
+ $ExtraConfigureFlags
360
+ 2>&1 | tee $LogDir /llvm.configure-$Flavor .log
361
+
362
+ ${MAKE} $J_ARG $Verbose -C $CMakeBuildDir stage3-check-all \
363
+ 2>&1 | tee $LogDir /llvm.make-$Flavor .log > $redir
364
+
365
+ DESTDIR=" ${InstallDir} " \
366
+ ${MAKE} -C $CMakeBuildDir stage3-install \
367
+ 2>&1 | tee $LogDir /llvm.install-$Flavor .log > $redir
368
+
369
+ mkdir -p $BuildDir /Release
370
+ pushd $BuildDir /Release
371
+ mv $InstallDir /usr/local $Package
372
+ if [ " $use_gzip " = " yes" ]; then
373
+ tar cf - $Package | gzip -9c > $BuildDir /$Package .tar.gz
374
+ else
375
+ tar cf - $Package | xz -9ce -T $NumJobs > $BuildDir /$Package .tar.xz
376
+ fi
377
+ mv $Package $InstallDir /usr/local
378
+ popd
379
+ ) 2>&1 | tee $LogDir /testing.$Release -$RC .log
380
+
381
+ exit 0
382
+ }
383
+
331
384
function deferred_error() {
332
385
Phase=" $1 "
333
386
Flavor=" $2 "
@@ -485,12 +538,6 @@ function build_llvmCore() {
485
538
fi
486
539
fi
487
540
488
- redir=" /dev/stdout"
489
- if [ $do_silent_log == " yes" ]; then
490
- echo " # Silencing build logs because of -silent-log flag..."
491
- redir=" /dev/null"
492
- fi
493
-
494
541
cd $ObjDir
495
542
echo " # Compiling llvm $Release -$RC $Flavor "
496
543
echo " # ${MAKE} $J_ARG $Verbose "
@@ -600,7 +647,13 @@ if [ $do_test_suite = "yes" ]; then
600
647
mkdir -p $TestSuiteBuildDir
601
648
fi
602
649
650
+ if [ " $do_cmake_cache " = " yes" ]; then
651
+ build_with_cmake_cache
652
+ exit 0
653
+ fi
654
+
603
655
(
656
+
604
657
Flavors=" Release"
605
658
if [ " $do_debug " = " yes" ]; then
606
659
Flavors=" Debug $Flavors "
0 commit comments