extern crate gcc;
use std::env;
use std::process::Command;
macro_rules! nfd {
($suf:expr) => {
concat!("nativefiledialog/src/", $suf);
};
}
fn main() {
let mut cfg = gcc::Config::new();
let env = env::var("TARGET").unwrap();
cfg.include(nfd!("include"));
cfg.file(nfd!("nfd_common.c"));
if env.contains("darwin") {
cfg.file(nfd!("nfd_cocoa.m"));
cfg.compile("libnfd.a");
println!("cargo:rustc-link-lib=framework=AppKit");
} else if env.contains("windows") {
cfg.cpp(true);
cfg.file(nfd!("nfd_win.cpp"));
cfg.compile("libnfd.a");
println!("cargo:rustc-link-lib=ole32");
println!("cargo:rustc-link-lib=uuid");
} else {
let pkg_output = Command::new("pkg-config")
.arg("--cflags")
.arg("gtk+-3.0")
.arg("glib-2.0")
.arg("--libs")
.arg("glib-2.0")
.output();
match pkg_output {
Ok(output) => {
let t = String::from_utf8(output.stdout).unwrap();
let flags = t.split(" ");
for flag in flags {
if flag != "\n" && flag != "" {
cfg.flag(flag);
}
}
}
_ => (),
}
cfg.file(nfd!("nfd_gtk.c"));
cfg.compile("libnfd.a");
println!("cargo:rustc-link-lib=gdk-3");
println!("cargo:rustc-link-lib=gtk-3");
println!("cargo:rustc-link-lib=glib-2.0");
println!("cargo:rustc-link-lib=gobject-2.0");
}
}