[sanitizer] Clean build_stage1 and use ccache
diff --git a/zorg/buildbot/builders/sanitizers/buildbot_fast.sh b/zorg/buildbot/builders/sanitizers/buildbot_fast.sh
index a08939e..8c38fc2 100755
--- a/zorg/buildbot/builders/sanitizers/buildbot_fast.sh
+++ b/zorg/buildbot/builders/sanitizers/buildbot_fast.sh
@@ -14,7 +14,7 @@
 CHECK_LIBCXX=${CHECK_LIBCXX:-1}
 CHECK_LLD=${CHECK_LLD:-1}
 LLVM=$ROOT/llvm
-CMAKE_COMMON_OPTIONS="-GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_PARALLEL_LINK_JOBS=20"
+CMAKE_COMMON_OPTIONS="-GNinja -DCMAKE_BUILD_TYPE=Release"
 
 clobber
 
@@ -22,7 +22,11 @@
 
 build_stage1_clang_at_revison
 
-CMAKE_COMMON_OPTIONS="$CMAKE_COMMON_OPTIONS -DLLVM_ENABLE_ASSERTIONS=ON"
+CMAKE_COMMON_OPTIONS="$CMAKE_COMMON_OPTIONS -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_USE_LINKER=lld"
+
+if ccache -s ; then
+  CMAKE_COMMON_OPTIONS="${CMAKE_COMMON_OPTIONS} -DLLVM_CCACHE_BUILD=ON"
+fi
 
 buildbot_update
 
diff --git a/zorg/buildbot/builders/sanitizers/buildbot_functions.sh b/zorg/buildbot/builders/sanitizers/buildbot_functions.sh
index 06261e0..da4900e 100755
--- a/zorg/buildbot/builders/sanitizers/buildbot_functions.sh
+++ b/zorg/buildbot/builders/sanitizers/buildbot_functions.sh
@@ -71,9 +71,13 @@
 }
 
 function build_stage1_clang_impl {
+  rm -rf ${STAGE1_DIR}
   mkdir -p ${STAGE1_DIR}
   local cmake_stage1_options="${CMAKE_COMMON_OPTIONS}"
   cmake_stage1_options="${cmake_stage1_options} -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld'"
+  if ccache -s ; then
+    cmake_stage1_options="${cmake_stage1_options} -DLLVM_CCACHE_BUILD=ON"
+  fi
   (cd ${STAGE1_DIR} && cmake ${cmake_stage1_options} $LLVM && \
     ninja clang lld compiler-rt llvm-symbolizer)
 }
@@ -144,6 +148,7 @@
   if [ "$CHECK_LIBCXX" != "0" -a \
        "$sanitizer_name" != "ubsan" ]; then
     echo @@@BUILD_STEP build libcxx/$sanitizer_name@@@
+    rm -rf ${libcxx_build_dir}
     mkdir -p ${libcxx_build_dir}
     local cmake_stage2_libcxx_options="-DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi'"
     (cd ${libcxx_build_dir} && \
@@ -165,6 +170,7 @@
   local cmake_bug_workaround_cflags="$sanitizer_ldflags $fsanitize_flag -w"
   sanitizer_cflags="$sanitizer_cflags $cmake_bug_workaround_cflags"
 
+  rm -rf ${build_dir}
   mkdir -p ${build_dir}
   local extra_dir
   if [ "$CHECK_LLD" != "0" ]; then
@@ -242,7 +248,9 @@
   cmake_stage3_options="${cmake_stage3_options} -DLLVM_ENABLE_PROJECTS='clang'"
   
   echo @@@BUILD_STEP build stage3/$sanitizer_name clang@@@
-  (mkdir -p ${build_dir} && cd ${build_dir} && cmake ${cmake_stage3_options} $LLVM && ninja clang) || \
+  rm -rf ${build_dir}
+  mkdir -p ${build_dir}
+  (cd ${build_dir} && cmake ${cmake_stage3_options} $LLVM && ninja clang) || \
       echo $step_result
 }