From 654b2e5fa1566f0479b09adf2d73f783196ad032 Mon Sep 17 00:00:00 2001 From: Daniel Mueller Date: Sun, 26 Mar 2017 17:07:48 -0700 Subject: Import subrepo hidapi-sys/:hidapi-sys at ec441b2751dcbbcd053800b6901672c999651584 --- hidapi-sys/build.rs | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 hidapi-sys/build.rs (limited to 'hidapi-sys/build.rs') diff --git a/hidapi-sys/build.rs b/hidapi-sys/build.rs new file mode 100644 index 0000000..6ad9197 --- /dev/null +++ b/hidapi-sys/build.rs @@ -0,0 +1,81 @@ +extern crate gcc; +extern crate pkg_config; + +use std::env; +use std::io; +use std::path::PathBuf; +use std::process::Command; + +fn main() { + if env::var("CARGO_FEATURE_BUILD").is_err() { + return; + } + + fetch().unwrap(); + build().unwrap(); + + println!("cargo:rustc-link-search=native={}", output().to_string_lossy()); +} + +fn output() -> PathBuf { + PathBuf::from(env::var("OUT_DIR").unwrap()) +} + +fn source() -> PathBuf { + output().join("hidapi") +} + +fn fetch() -> io::Result<()> { + Command::new("git") + .current_dir(&output()) + .arg("clone") + .arg("https://github.com/signal11/hidapi.git") + .arg("hidapi") + .status()?; + + Ok(()) +} + +#[cfg(target_os = "linux")] +fn build() -> io::Result<()> { + let mut config = gcc::Config::new(); + + config.file(source().join("libusb/hid.c")); + config.include(source().join("hidapi")); + + for path in pkg_config::find_library("libusb-1.0").unwrap().include_paths { + config.include(path.to_str().unwrap()); + } + + config.compile("libhidapi-libusb.a"); + + Ok(()) +} + +#[cfg(target_os = "macos")] +fn build() -> io::Result<()> { + let mut config = gcc::Config::new(); + + config.file(source().join("libusb/hid.c")); + config.include(source().join("hidapi")); + + for path in pkg_config::find_library("libusb-1.0").unwrap().include_paths { + config.include(path.to_str().unwrap()); + } + + config.compile("libhidapi.a"); + + Ok(()) +} + +#[cfg(target_os = "windows")] +fn build() -> io::Result<()> { + let mut config = gcc::Config::new(); + + config.file(source().join("windows/hid.c")); + config.include(source().join("hidapi")); + + config.compile("libhidapi.a"); + + Ok(()) +} -- cgit v1.2.1