diff options
| author | Yuval Adam <_@yuv.al> | 2018-07-06 15:20:57 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-07-06 15:20:57 +0300 |
| commit | a984107f78fe827e6a1731bbd38c071acfaeaee7 (patch) | |
| tree | e42451d3e45808bb6db9e8bba7eb904a5303c1fa /build.rs | |
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..821125b --- /dev/null +++ b/build.rs @@ -0,0 +1,62 @@ +extern crate pkg_config; + +use pkg_config::{Config, Error}; +use std::env; +use std::io::prelude::*; +use std::io; +use std::process; + +fn main() { + if let Err(s) = find() { + let _ = writeln!(io::stderr(), "{}", s); + process::exit(1); + } +} + +fn find() -> Result<(), Error> { + let package_name = "gssdp-1.0"; + let shared_libs = ["gssdp-1.0"]; + let version = { + "1.0" + }; + + if let Ok(lib_dir) = env::var("GTK_LIB_DIR") { + for lib_ in shared_libs.iter() { + println!("cargo:rustc-link-lib=dylib={}", lib_); + } + println!("cargo:rustc-link-search=native={}", lib_dir); + return Ok(()) + } + + let target = env::var("TARGET").expect("TARGET environment variable doesn't exist"); + let hardcode_shared_libs = target.contains("windows"); + + let mut config = Config::new(); + config.atleast_version(version); + config.print_system_libs(false); + if hardcode_shared_libs { + config.cargo_metadata(false); + } + match config.probe(package_name) { + Ok(library) => { + if hardcode_shared_libs { + for lib_ in shared_libs.iter() { + println!("cargo:rustc-link-lib=dylib={}", lib_); + } + for path in library.link_paths.iter() { + println!("cargo:rustc-link-search=native={}", + path.to_str().expect("library path doesn't exist")); + } + } + Ok(()) + } + Err(Error::EnvNoPkgConfig(_)) | Err(Error::Command { .. }) => { + for lib_ in shared_libs.iter() { + println!("cargo:rustc-link-lib=dylib={}", lib_); + } + Ok(()) + } + Err(err) => Err(err), + } +} + |
