Skip to content

Commit b706c95

Browse files
authored
Merge pull request #179 from Wenzel/cargo/fix_build_rs
cargo: fix location of generated file libmcrovmi.h
2 parents c061178 + c5b4ac6 commit b706c95

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,5 @@ priority = "optional"
6969
# add generated libmicrovmi.h header
7070
assets = [
7171
["target/release/libmicrovmi.so", "usr/lib/libmicrovmi.so", "644"],
72-
["c_examples/libmicrovmi.h", "usr/include/libmicrovmi.h", "644"],
72+
["target/release/capi/libmicrovmi.h", "usr/include/libmicrovmi.h", "644"],
7373
]

build.rs

+20-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
//! This build script will run cbindgen to generate libmicrovmi C header file
22
33
use std::env;
4-
use std::path::Path;
4+
use std::fs;
5+
use std::path::PathBuf;
56

67
use cbindgen::Config;
78

89
fn main() {
910
let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
1011

11-
let out_path = Path::new(&crate_dir).join("c_examples/libmicrovmi.h");
12+
// a little hack to write outside of OUT_DIR
13+
// https://github.com/mmstick/cargo-deb/blob/e43018a46b8dc922cfdf6cdde12f7ed92fcc41aa/example/build.rs
14+
// libmicrovmi issue: https://github.com/Wenzel/libmicrovmi/issues/177
15+
let out_dir = env::var("OUT_DIR").unwrap();
16+
let mut out_path = PathBuf::from(&out_dir)
17+
.ancestors() // .../target/<debug|release>/build/example-<SHA>/out
18+
.nth(3) // .../target/<debug|release>
19+
.unwrap()
20+
.to_owned();
21+
out_path.push("capi");
22+
// .../target/<debug|release>/capi/
23+
24+
if !out_path.exists() {
25+
fs::create_dir(&out_path).expect("Could not create capi dir");
26+
}
27+
// .../target/<debug|release>/capi/libmicrovmi.h
28+
out_path.push("libmicrovmi.h");
1229

1330
let config = Config::from_root_or_default(&crate_dir);
1431

@@ -21,5 +38,5 @@ fn main() {
2138

2239
println!("cargo:rerun-if-changed=src/capi.rs");
2340
// if it has been removed
24-
println!("cargo:rerun-if-changed=c_examples/libmicrovmi.h");
41+
println!("cargo:rerun-if-changed=target/capi/libmicrovmi.h");
2542
}

0 commit comments

Comments
 (0)