summaryrefslogtreecommitdiffstats
path: root/gfx/wr/example-compositor/compositor-wayland/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/wr/example-compositor/compositor-wayland/build.rs')
-rw-r--r--gfx/wr/example-compositor/compositor-wayland/build.rs63
1 files changed, 63 insertions, 0 deletions
diff --git a/gfx/wr/example-compositor/compositor-wayland/build.rs b/gfx/wr/example-compositor/compositor-wayland/build.rs
new file mode 100644
index 0000000000..ab418b94c7
--- /dev/null
+++ b/gfx/wr/example-compositor/compositor-wayland/build.rs
@@ -0,0 +1,63 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use std::process::Command;
+use std::env;
+use std::fs;
+
+extern crate pkg_config;
+
+fn main() {
+ let out_dir = env::var("OUT_DIR").unwrap();
+
+ fs::create_dir_all(&format!("{}/include", out_dir)).unwrap();
+ Command::new("wayland-scanner")
+ .args(&["client-header", "/usr/share/wayland-protocols/stable/viewporter/viewporter.xml"])
+ .arg(&format!("{}/include/viewporter-client-protocol.h", out_dir))
+ .status().unwrap();
+
+ Command::new("wayland-scanner")
+ .args(&["public-code", "/usr/share/wayland-protocols/stable/viewporter/viewporter.xml"])
+ .arg(&format!("{}/viewporter-protocol.c", out_dir))
+ .status().unwrap();
+
+ Command::new("wayland-scanner")
+ .args(&["client-header", "/usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml"])
+ .arg(&format!("{}/include/xdg-shell-client-protocol.h", out_dir))
+ .status().unwrap();
+
+ Command::new("wayland-scanner")
+ .args(&["public-code", "/usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml"])
+ .arg(&format!("{}/xdg-shell-protocol.c", out_dir))
+ .status().unwrap();
+
+ cc::Build::new()
+ .include(&format!("{}/include", out_dir))
+ .file("src/lib.cpp")
+ .file(&format!("{}/viewporter-protocol.c", out_dir))
+ .file(&format!("{}/xdg-shell-protocol.c", out_dir))
+ .compile("wayland");
+
+ println!("cargo:rustc-link-lib=dylib=stdc++");
+
+ pkg_config::Config::new()
+ .atleast_version("1")
+ .probe("egl")
+ .unwrap();
+ pkg_config::Config::new()
+ .atleast_version("1")
+ .probe("gl")
+ .unwrap();
+ pkg_config::Config::new()
+ .atleast_version("1")
+ .probe("wayland-client")
+ .unwrap();
+ pkg_config::Config::new()
+ .atleast_version("1")
+ .probe("wayland-egl")
+ .unwrap();
+
+ println!("cargo:rerun-if-changed=src/lib.rs");
+ println!("cargo:rerun-if-changed=src/lib.cpp");
+}