add optional cmake builds

This commit is contained in:
mbilling
2019-09-11 15:19:52 +02:00
committed by mbilling
parent 56ee707517
commit daa9d4c209
5 changed files with 41 additions and 3 deletions

View File

@@ -8,8 +8,12 @@ edition = "2018"
license = "MIT"
build = "build.rs"
[features]
default = ["autotools"]
[dependencies]
libc = "0.2"
[build-dependencies]
autotools = "0.2"
autotools = {version = "0.2", optional = true}
cmake = {version = "0.1", optional = true}

View File

@@ -12,6 +12,13 @@ This crate is for use cases in which developers need to integrate [`bdwgc`][bdwg
See [`examples`](examples) directory.
By default [`bdwgc`][bdwgc] is built with autotools. To build with cmake enable the `cmake` feature in `Cargo.toml`:
[dependencies.bdwgc-alloc]
version = "0.4"
default-features = false
features = ["cmake"]
## License
[MIT](LICENSE)

View File

@@ -1,6 +1,7 @@
const LIB_ATOMIC_OPS_DIR: &str = "vendor/libatomic_ops";
const LIB_GC_DIR: &str = "vendor/bdwgc";
#[cfg(feature = "autotools")]
fn main() {
for dir in &[LIB_ATOMIC_OPS_DIR, LIB_GC_DIR] {
std::process::Command::new("sh")
@@ -41,3 +42,29 @@ fn main() {
.unwrap();
}
}
#[cfg(feature = "cmake")]
fn main() {
use cmake::Config;
use std::path::Path;
let libatomic_include_path = Path::new(LIB_ATOMIC_OPS_DIR)
.join("src")
.canonicalize()
.unwrap()
.display()
.to_string()
.replace(r"\\?\", "");
let dst = Config::new(LIB_GC_DIR)
.profile("Release")
.define("BUILD_SHARED_LIBS", "FALSE")
.cflag(format!("-I{}", libatomic_include_path))
.build();
println!(
"cargo:rustc-link-search=native={}",
dst.join("lib").display()
);
println!("cargo:rustc-link-lib=static=gc");
}

2
vendor/bdwgc vendored