summaryrefslogtreecommitdiff
path: root/crates/flasher-qt/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/flasher-qt/build.rs')
-rw-r--r--crates/flasher-qt/build.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/flasher-qt/build.rs b/crates/flasher-qt/build.rs
new file mode 100644
index 0000000..e4bdfc2
--- /dev/null
+++ b/crates/flasher-qt/build.rs
@@ -0,0 +1,25 @@
+fn main() {
+ println!("cargo:rerun-if-changed=src/ui.cpp");
+
+ let qt = pkg_config::Config::new()
+ .atleast_version("5.12")
+ .cargo_metadata(false)
+ .probe("Qt5Widgets")
+ .expect("Qt 5 Widgets development files were not found (install qt5-base-devel)");
+
+ let mut build = cc::Build::new();
+ build.cpp(true).file("src/ui.cpp").flag_if_supported("-std=c++17");
+ for path in &qt.include_paths {
+ build.include(path);
+ }
+ build.compile("flasher_qt_ui");
+
+ // Keep shared Qt libraries after our static C++ archive on the linker
+ // command line; GNU ld resolves static archives from left to right.
+ for path in &qt.link_paths {
+ println!("cargo:rustc-link-search=native={}", path.display());
+ }
+ println!("cargo:rustc-link-lib=Qt5Widgets");
+ println!("cargo:rustc-link-lib=Qt5Gui");
+ println!("cargo:rustc-link-lib=Qt5Core");
+}