Skip to content

Commit 44e5f15

Browse files
committed
Run configure script in OUT_DIR
1 parent 5f265ca commit 44e5f15

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

build.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::env;
2-
use std::path::PathBuf;
2+
use std::fs;
3+
use std::path::*;
34
use std::process::Command;
45

56
use cc::Build;
@@ -8,8 +9,8 @@ fn main() {
89
let project = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).canonicalize().unwrap();
910
let liburing = project.join("liburing");
1011

11-
// configure script
12-
Command::new("./configure").current_dir(&liburing).output().expect("configure script failed");
12+
// Run the configure script in OUT_DIR to get `compat.h`
13+
let configured_include = configure(&liburing);
1314

1415
let src = liburing.join("src");
1516

@@ -19,10 +20,21 @@ fn main() {
1920
.file(src.join("syscall.c"))
2021
.file(src.join("register.c"))
2122
.include(src.join("include"))
23+
.include(&configured_include)
2224
.extra_warnings(false)
2325
.compile("uring");
2426

2527
// (our additional, linkable C bindings)
26-
Build::new().file(project.join("rusturing.c")).include(src.join("include"))
28+
Build::new().file(project.join("rusturing.c"))
29+
.include(src.join("include"))
30+
.include(&configured_include)
2731
.compile("rusturing");
2832
}
33+
34+
fn configure(liburing: &Path) -> PathBuf {
35+
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()).canonicalize().unwrap();
36+
fs::copy(liburing.join("configure"), out_dir.join("configure")).unwrap();
37+
fs::create_dir_all(out_dir.join("src/include/liburing")).unwrap();
38+
Command::new("./configure").current_dir(&out_dir).output().expect("configure script failed");
39+
out_dir.join("src/include")
40+
}

0 commit comments

Comments
 (0)