From 300ad624d8e9c7a679ebdac84d11ca721a71aeaf Mon Sep 17 00:00:00 2001 From: Renar Narubin Date: Wed, 5 Jan 2022 14:34:08 -0800 Subject: [PATCH] Skip afn on docs.rs builds --- Cargo.toml | 2 +- build.rs | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3d657f0..cc10cee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fast_fp" -version = "0.1.0" +version = "0.1.1" authors = ["Renar Narubin "] edition = "2021" description = "Floating point fast-math optimizations" diff --git a/build.rs b/build.rs index 532c48b..01d90cd 100644 --- a/build.rs +++ b/build.rs @@ -30,9 +30,24 @@ fn build_c(mut builder: cc::Build) { builder.flag("-fno-signed-zeros"); builder.flag("-fno-trapping-math"); builder.flag("-ffp-contract=fast"); - // -fapprox-func isn't currently available in the driver, but it is in clang itself - // https://reviews.llvm.org/D106191 - builder.flag("-Xclang").flag("-fapprox-func"); + + // -fapprox-func isn't currently available in the clang driver (fixed with + // https://reviews.llvm.org/D106191 but need an updated version), but it is in clang itself. + // This means it can be toggled using the `-Xclang ` option. + // + // The clang version on docs.rs doesn't recognize -fapprox-func even with -Xclang :shrug: + // We could attempt to check flag support using cc's flag_if_supported, but this is a compound + // flag which doesn't seem to mix well with the is_supported api checks. Instead, do the dumb + // thing and don't enable this flag when compiling on docs.rs. That way, normal users should at + // least get a slightly informative error if they have an incompatible clang + match std::env::var("DOCS_RS") { + Err(std::env::VarError::NotPresent) => { + builder.flag("-Xclang").flag("-fapprox-func"); + } + Ok(_) => {} + Err(err) => panic!("{}", err), + } + builder.flag("-fno-math-errno"); // poison_unsafe must be compiled without finite-math-only