xplane11-sys

git clone git://archive.git.mtrnord.blog/MTRNord/xplane11-sys.git
Log | Files | Refs | README | LICENSE

build.rs (4109B)


      1 extern crate bindgen;
      2 
      3 use std::env;
      4 use std::path::Path;
      5 use std::path::PathBuf;
      6 
      7 fn main() {
      8     let dir = env::var("CARGO_MANIFEST_DIR").unwrap();
      9     println!(
     10         "cargo:rustc-link-search={}",
     11         Path::new(&dir).join("SDK/Libraries/Win").display()
     12     );
     13     println!("cargo:rustc-link-lib=XPLM_64");
     14     println!("cargo:rustc-link-lib=XPWidgets_64");
     15 
     16     // Tell cargo to invalidate the built crate whenever the wrapper changes
     17     println!("cargo:rerun-if-changed=wrapper.h");
     18 
     19     // The bindgen::Builder is the main entry point
     20     // to bindgen, and lets you build up options for
     21     // the resulting bindings.
     22     let bindings = bindgen::Builder::default()
     23         // The input header we would like to generate
     24         // bindings for.
     25         .header("wrapper.h")
     26         //.clang_arg("-v")
     27         .clang_arg(format!(
     28             "-I{}",
     29             Path::new(&dir).join("SDK/CHeaders/XPLM").display()
     30         ))
     31         .clang_arg(format!(
     32             "-I{}",
     33             Path::new(&dir).join("SDK/CHeaders/Widgets").display()
     34         ))
     35         .blacklist_type("LPMONITORINFOEXA?W?")
     36         .blacklist_type("LPTOP_LEVEL_EXCEPTION_FILTER")
     37         .blacklist_type("MONITORINFOEXA?W?")
     38         .blacklist_type("PEXCEPTION_FILTER")
     39         .blacklist_type("PEXCEPTION_ROUTINE")
     40         .blacklist_type("PSLIST_HEADER")
     41         .blacklist_type("PTOP_LEVEL_EXCEPTION_FILTER")
     42         .blacklist_type("PVECTORED_EXCEPTION_HANDLER")
     43         .blacklist_type("_?L?P?CONTEXT")
     44         .blacklist_type("_?L?P?EXCEPTION_POINTERS")
     45         .blacklist_type("_?P?DISPATCHER_CONTEXT")
     46         .blacklist_type("_?P?EXCEPTION_REGISTRATION_RECORD")
     47         .blacklist_type("_?P?IMAGE_TLS_DIRECTORY.*")
     48         .blacklist_type("_?P?NT_TIB")
     49         .blacklist_type("tagMONITORINFOEXA")
     50         .blacklist_type("tagMONITORINFOEXW")
     51         .blacklist_function("AddVectoredContinueHandler")
     52         .blacklist_function("AddVectoredExceptionHandler")
     53         .blacklist_function("CopyContext")
     54         .blacklist_function("GetThreadContext")
     55         .blacklist_function("GetXStateFeaturesMask")
     56         .blacklist_function("InitializeContext")
     57         .blacklist_function("InitializeContext2")
     58         .blacklist_function("InitializeSListHead")
     59         .blacklist_function("InterlockedFlushSList")
     60         .blacklist_function("InterlockedPopEntrySList")
     61         .blacklist_function("InterlockedPushEntrySList")
     62         .blacklist_function("InterlockedPushListSListEx")
     63         .blacklist_function("LocateXStateFeature")
     64         .blacklist_function("QueryDepthSList")
     65         .blacklist_function("RaiseFailFastException")
     66         .blacklist_function("RtlCaptureContext")
     67         .blacklist_function("RtlCaptureContext2")
     68         .blacklist_function("RtlFirstEntrySList")
     69         .blacklist_function("RtlInitializeSListHead")
     70         .blacklist_function("RtlInterlockedFlushSList")
     71         .blacklist_function("RtlInterlockedPopEntrySList")
     72         .blacklist_function("RtlInterlockedPushEntrySList")
     73         .blacklist_function("RtlInterlockedPushListSListEx")
     74         .blacklist_function("RtlQueryDepthSList")
     75         .blacklist_function("RtlRestoreContext")
     76         .blacklist_function("RtlUnwindEx")
     77         .blacklist_function("RtlVirtualUnwind")
     78         .blacklist_function("SetThreadContext")
     79         .blacklist_function("SetUnhandledExceptionFilter")
     80         .blacklist_function("SetXStateFeaturesMask")
     81         .blacklist_function("UnhandledExceptionFilter")
     82         .blacklist_function("__C_specific_handler")
     83         // Tell cargo to invalidate the built crate whenever any of the
     84         // included header files changed.
     85         .parse_callbacks(Box::new(bindgen::CargoCallbacks))
     86         // Finish the builder and generate the bindings.
     87         .generate()
     88         // Unwrap the Result and panic on failure.
     89         .expect("Unable to generate bindings");
     90 
     91     // Write the bindings to the $OUT_DIR/bindings.rs file.
     92     let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
     93     bindings
     94         .write_to_file(out_path.join("bindings.rs"))
     95         .expect("Couldn't write bindings!");
     96 }