-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathbuild.rs
50 lines (44 loc) · 1.41 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use std::path::PathBuf;
use std::process::Command;
use std::{env, fs};
fn main() {
let cargo_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
let src = cargo_dir.join("mesa-src");
let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap()).join("mesa");
let _ = fs::create_dir(&dst);
if !dst.join("build.ninja").exists() {
let mut cmd = Command::new("meson");
if let Some(cross_path) = env::var_os("MESON_CROSSFILE") {
cmd
.arg("--cross-file")
.arg(cross_path);
}
run(cmd
.current_dir(&dst)
.arg(&src)
.arg("-Dplatforms=")
.arg("-Ddri3=disabled")
.arg("-Dglx-direct=false")
.arg("-Dgallium-drivers=swrast")
.arg("-Dvulkan-drivers=")
.arg("-Ddri-drivers=")
.arg("-Dgles1=disabled")
.arg("-Dgles2=disabled")
.arg("-Dosmesa=gallium")
.arg("-Degl=disabled")
.arg("-Dgbm=disabled")
.arg("-Dglx=disabled")
.arg("-Dllvm=enabled"));
}
run(Command::new("ninja").current_dir(&dst));
}
fn run(cmd: &mut Command) {
eprintln!("running: {:?}", cmd);
let status = match cmd.status() {
Ok(s) => s,
Err(e) => panic!("failed to get status: {}", e),
};
if !status.success() {
panic!("failed with: {}", status);
}
}