From 2df972607eedc8ddb9bf50932e3d3beb113e3aaa Mon Sep 17 00:00:00 2001 From: Trevor Gross Date: Tue, 7 Apr 2026 07:07:59 -0500 Subject: [PATCH] build: Fix c-b builds always being marked dirty --- .../compiler-builtins/compiler-builtins/build.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/library/compiler-builtins/compiler-builtins/build.rs b/library/compiler-builtins/compiler-builtins/build.rs index c85ef306aeab..d8019277d3ff 100644 --- a/library/compiler-builtins/compiler-builtins/build.rs +++ b/library/compiler-builtins/compiler-builtins/build.rs @@ -6,10 +6,19 @@ use configure::{Config, Library, set_cfg}; fn main() { - println!("cargo::rerun-if-changed=build.rs"); + let cfg = Config::from_env(Library::CompilerBuiltins); + + // Work around building as part of `builtins-shim`: if only `build.rs` is used, Cargo always + // considers the build dirty because `builtins-shim/build.rs` does not exist. If only + // `../c-b/build.rs` is used, the same may happen if not built in the workspace. + if cfg.manifest_dir.file_name().unwrap() == "builtins-shim" { + println!("cargo::rerun-if-changed=../compiler-builtins/build.rs"); + } else { + println!("cargo::rerun-if-changed=build.rs"); + } + println!("cargo::rerun-if-changed=../libm/configure.rs"); - let cfg = Config::from_env(Library::CompilerBuiltins); configure::emit(&cfg); configure_check_cfg();