about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authoronur-ozkan <work@onurozkan.dev>2025-01-11 16:01:33 +0300
committeronur-ozkan <work@onurozkan.dev>2025-01-12 08:43:45 +0300
commit99322a5158e274decf1552b3abc041b3abbacbd2 (patch)
tree48e09774a8d9edcb640fb2825327cadba48520ff /src
parent216969b8c2c454ccf3daf7de0df49846ffd501ef (diff)
downloadrust-99322a5158e274decf1552b3abc041b3abbacbd2.tar.gz
rust-99322a5158e274decf1552b3abc041b3abbacbd2.zip
extend sanitizers stamp calculation
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Diffstat (limited to 'src')
-rw-r--r--src/bootstrap/src/core/build_steps/llvm.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs
index 1159ba71230..51df2eba6e9 100644
--- a/src/bootstrap/src/core/build_steps/llvm.rs
+++ b/src/bootstrap/src/core/build_steps/llvm.rs
@@ -1121,18 +1121,24 @@ impl Step for Sanitizers {
 
         let out_dir = builder.native_dir(self.target).join("sanitizers");
         let runtimes = supported_sanitizers(&out_dir, self.target, &builder.config.channel);
-        if runtimes.is_empty() {
+
+        if builder.config.dry_run() || runtimes.is_empty() {
             return runtimes;
         }
 
         let LlvmResult { llvm_config, .. } = builder.ensure(Llvm { target: builder.config.build });
-        if builder.config.dry_run() {
-            return runtimes;
-        }
 
-        let stamp = BuildStamp::new(&out_dir)
-            .with_prefix("sanitizers")
-            .with_stamp(builder.in_tree_llvm_info.sha().map(String::from).unwrap_or_default());
+        static STAMP_HASH_MEMO: OnceLock<String> = OnceLock::new();
+        let smart_stamp_hash = STAMP_HASH_MEMO.get_or_init(|| {
+            generate_smart_stamp_hash(
+                builder,
+                &builder.config.src.join("src/llvm-project/compiler-rt"),
+                builder.in_tree_llvm_info.sha().unwrap_or_default(),
+            )
+        });
+
+        let stamp =
+            BuildStamp::new(&out_dir).with_prefix("sanitizers").with_stamp(smart_stamp_hash);
 
         if stamp.is_up_to_date() {
             if stamp.stamp.is_empty() {