diff --git a/Cargo.toml b/Cargo.toml index c036b2f..5debdad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "uring-sys" -version = "0.6.0" +version = "0.6.1" description = "liburing bindings" repository = "https://github.com/withoutboats/uring-sys" keywords = ["io_uring", "liburing"] diff --git a/build.rs b/build.rs index 5c1b0a3..abcc8e6 100644 --- a/build.rs +++ b/build.rs @@ -1,5 +1,6 @@ use std::env; -use std::path::PathBuf; +use std::fs; +use std::path::*; use std::process::Command; use cc::Build; @@ -8,8 +9,8 @@ fn main() { let project = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).canonicalize().unwrap(); let liburing = project.join("liburing"); - // configure script - Command::new("./configure").current_dir(&liburing).output().expect("configure script failed"); + // Run the configure script in OUT_DIR to get `compat.h` + let configured_include = configure(&liburing); let src = liburing.join("src"); @@ -19,10 +20,21 @@ fn main() { .file(src.join("syscall.c")) .file(src.join("register.c")) .include(src.join("include")) + .include(&configured_include) .extra_warnings(false) .compile("uring"); // (our additional, linkable C bindings) - Build::new().file(project.join("rusturing.c")).include(src.join("include")) + Build::new().file(project.join("rusturing.c")) + .include(src.join("include")) + .include(&configured_include) .compile("rusturing"); } + +fn configure(liburing: &Path) -> PathBuf { + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()).canonicalize().unwrap(); + fs::copy(liburing.join("configure"), out_dir.join("configure")).unwrap(); + fs::create_dir_all(out_dir.join("src/include/liburing")).unwrap(); + Command::new("./configure").current_dir(&out_dir).output().expect("configure script failed"); + out_dir.join("src/include") +}