Skip to content
Snippets Groups Projects
Verified Commit eb3b93d1 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Define strtold in C until Rust and cbindgen can use f128

parent 17ac6ef0
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,15 @@ dependencies = [ ...@@ -23,6 +23,15 @@ dependencies = [
"num-traits", "num-traits",
] ]
[[package]]
name = "cc"
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "crt0" name = "crt0"
version = "0.1.0" version = "0.1.0"
...@@ -56,9 +65,9 @@ version = "0.1.0" ...@@ -56,9 +65,9 @@ version = "0.1.0"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.151" version = "0.2.152"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
[[package]] [[package]]
name = "log" name = "log"
...@@ -225,6 +234,7 @@ version = "0.2.5" ...@@ -225,6 +234,7 @@ version = "0.2.5"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cbitset", "cbitset",
"cc",
"dlmalloc", "dlmalloc",
"goblin", "goblin",
"libc", "libc",
......
...@@ -12,6 +12,9 @@ crate-type = ["staticlib"] ...@@ -12,6 +12,9 @@ crate-type = ["staticlib"]
members = ["src/crt0", "src/crti", "src/crtn", "src/ld_so", "src/platform/redox/redox-exec"] members = ["src/crt0", "src/crti", "src/crtn", "src/ld_so", "src/platform/redox/redox-exec"]
exclude = ["ralloc", "tests", "dlmalloc-rs"] exclude = ["ralloc", "tests", "dlmalloc-rs"]
[build-dependencies]
cc = "1"
[dependencies] [dependencies]
bitflags = "2" bitflags = "2"
cbitset = "0.2" cbitset = "0.2"
......
build.rs 0 → 100644
extern crate cc;
use std::{env, fs};
fn get_target() -> String {
env::var("TARGET").unwrap_or(
option_env!("TARGET").map_or("x86_64-unknown-redox".to_string(), |x| x.to_string()),
)
}
fn main() {
let crate_dir = env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set");
let target = get_target();
println!("cargo:rerun-if-changed=src/c");
let mut cc_builder = &mut cc::Build::new();
cc_builder = cc_builder
.flag("-nostdinc")
.flag("-nostdlib");
if target.starts_with("aarch64") {
cc_builder = cc_builder.flag("-mno-outline-atomics")
}
cc_builder
.flag("-fno-stack-protector")
.flag("-Wno-expansion-to-defined")
.files(
fs::read_dir("src/c")
.expect("src/c directory missing")
.map(|res| res.expect("read_dir error").path()),
)
.compile("relibc_c");
println!("cargo:rustc-link-lib=static=relibc_c");
}
...@@ -5,9 +5,7 @@ ...@@ -5,9 +5,7 @@
extern "C" { extern "C" {
#endif #endif
long double strtold(const char *nptr, char **endptr) { long double strtold(const char *nptr, char **endptr);
return (long double)strtod(nptr, endptr);
}
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
......
double strtod(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr) {
return (long double)strtod(nptr, endptr);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment