@@ -376,6 +376,7 @@ opt fast-make 0 "use .gitmodules as timestamp for submodule deps"
376
376
opt manage-submodules 1 " let the build manage the git submodules"
377
377
opt mingw-cross 0 " cross-compile for win32 using mingw"
378
378
opt clang 0 " prefer clang to gcc for building the runtime"
379
+ opt ccache 0 " invoke gcc/clang via ccache to reuse object files between builds"
379
380
opt local-rust 0 " use an installed rustc rather than downloading a snapshot"
380
381
opt pax-flags 0 " apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
381
382
valopt prefix " /usr/local" " set installation prefix"
421
422
fi
422
423
423
424
probe CFG_CLANG clang++
425
+ probe CFG_CCACHE ccache
424
426
probe CFG_GCC gcc
425
427
probe CFG_LD ld
426
428
probe CFG_VALGRIND valgrind
@@ -571,6 +573,16 @@ else
571
573
CFG_C_COMPILER=" gcc"
572
574
fi
573
575
576
+ if [ ! -z " $CFG_ENABLE_CCACHE " ]
577
+ then
578
+ if [ -z " $CFG_CCACHE " ]
579
+ then
580
+ err " ccache requested but not found"
581
+ fi
582
+
583
+ CFG_C_COMPILER=" ccache $CFG_C_COMPILER "
584
+ fi
585
+
574
586
# a little post-processing of various config values
575
587
576
588
CFG_PREFIX=${CFG_PREFIX%/ }
825
837
--enable-bindings=none --disable-threads \
826
838
--disable-pthreads"
827
839
828
- if [ " $CFG_C_COMPILER " = " clang" ]
829
- then
840
+ case " $CFG_C_COMPILER " in
841
+ (" ccache clang" )
842
+ LLVM_CXX_32=" ccache clang++ -m32 -Qunused-arguments"
843
+ LLVM_CC_32=" ccache clang -m32 -Qunused-arguments"
844
+
845
+ LLVM_CXX_64=" ccache clang++ -Qunused-arguments"
846
+ LLVM_CC_64=" ccache clang -Qunused-arguments"
847
+ ;;
848
+ (" clang" )
830
849
LLVM_CXX_32=" clang++ -m32"
831
850
LLVM_CC_32=" clang -m32"
832
851
833
852
LLVM_CXX_64=" clang++"
834
853
LLVM_CC_64=" clang"
835
- else
854
+ ;;
855
+ (" ccache gcc" )
856
+ LLVM_CXX_32=" ccache g++ -m32"
857
+ LLVM_CC_32=" ccache gcc -m32"
858
+
859
+ LLVM_CXX_64=" ccache g++"
860
+ LLVM_CC_64=" ccache gcc"
861
+ ;;
862
+ (" gcc" )
836
863
LLVM_CXX_32=" g++ -m32"
837
864
LLVM_CC_32=" gcc -m32"
838
865
839
866
LLVM_CXX_64=" g++"
840
867
LLVM_CC_64=" gcc"
841
- fi
868
+ esac
842
869
843
870
LLVM_CFLAGS_32=" -m32"
844
871
LLVM_CXXFLAGS_32=" -m32"
@@ -935,6 +962,14 @@ then
935
962
putvar CFG_PAXCTL
936
963
fi
937
964
965
+ # Avoid spurious warnings from clang by feeding it original source on
966
+ # ccache-miss rather than preprocessed input.
967
+ if [ ! -z " $CFG_ENABLE_CCACHE " ] && [ ! -z " $CFG_ENABLE_CLANG " ]
968
+ then
969
+ CFG_CCACHE_CPP2=1
970
+ putvar CFG_CCACHE_CPP2
971
+ fi
972
+
938
973
if [ ! -z $BAD_PANDOC ]
939
974
then
940
975
CFG_PANDOC=
0 commit comments