Skip to content

Commit e65ef96

Browse files
libprofiler_builtins: Set compilation flags more correctly for C code.
In particular, set COMPILER_RT_HAS_FCNTL_LCK and COMPILER_RT_HAS_ATOMICS as appropriate.
1 parent b92d360 commit e65ef96

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/libprofiler_builtins/build.rs

+13
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,19 @@ fn main() {
4444
cfg.define("COMPILER_RT_HAS_UNAME", Some("1"));
4545
}
4646

47+
// Assume that the Unixes we are building this for have fnctl() available
48+
if env::var_os("CARGO_CFG_UNIX").is_some() {
49+
cfg.define("COMPILER_RT_HAS_FCNTL_LCK", Some("1"));
50+
}
51+
52+
// This should be a pretty good heuristic for when to set
53+
// COMPILER_RT_HAS_ATOMICS
54+
if env::var_os("CARGO_CFG_TARGET_HAS_ATOMIC").map(|features| {
55+
features.to_string_lossy().to_lowercase().contains("cas")
56+
}).unwrap_or(false) {
57+
cfg.define("COMPILER_RT_HAS_ATOMICS", Some("1"));
58+
}
59+
4760
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
4861
// load our env var set by cargo to find the source code.
4962
let root = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();

0 commit comments

Comments
 (0)