aboutsummaryrefslogtreecommitdiffstats
path: root/build.rs
blob: 0c7e0f93865fdbc8ad7b29fe127650568c1661e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use std::env;
use std::path::PathBuf;

fn main() {
    // First build osmo-fl2k
    cc::Build::new()
        .file("c_sources/libosmo-fl2k.c")
        .include("c_sources")
        .include("/usr/include/libusb-1.0")
        .compile("libosmo-fl2k");

    // Tell cargo to look for shared libraries in the specified directory
    //println!("cargo:rustc-link-search=/path/to/lib");

    // Tell cargo to tell rustc to link the system bzip2
    // shared library.
    println!("cargo:rustc-link-lib=libosmo-fl2k");
    println!("cargo:rustc-link-lib=usb-1.0");

    // Tell cargo to invalidate the built crate whenever the wrapper changes
    println!("cargo:rerun-if-changed=c_sources/osmo-fl2k.h");

    let bindings = bindgen::Builder::default()
        .header("c_sources/osmo-fl2k.h")
        // Tell cargo to invalidate the built crate whenever any of the
        // included header files changed.
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .generate()
        .expect("Unable to generate bindings");

    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}