diff options
Diffstat (limited to 'impls/monero.rs/build.rs')
| -rw-r--r-- | impls/monero.rs/build.rs | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/impls/monero.rs/build.rs b/impls/monero.rs/build.rs index c3dd63a..59e87d9 100644 --- a/impls/monero.rs/build.rs +++ b/impls/monero.rs/build.rs @@ -1,24 +1,39 @@ use std::env; use std::path::PathBuf; +use bindgen::EnumVariation; fn main() { - println!("cargo:rerun-if-changed=build.rs"); + let header_path = "../../monero_libwallet2_api_c/src/main/cpp/wallet2_api_c.h"; - let lib_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("lib"); - let monero_include_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()) - .join("../../monero_libwallet2_api_c/src/main/cpp/"); + println!("cargo:rerun-if-changed={}", header_path); - println!("cargo:rustc-link-search=native={}", lib_dir.display()); - println!("cargo:rustc-link-lib=dylib=wallet2_api_c"); - println!("cargo:rustc-link-lib=dylib=stdc++"); - println!("cargo:rustc-link-lib=dylib=hidapi-hidraw"); - - println!("cargo:rustc-link-arg-bin=monero_rust=-Wl,-rpath,$ORIGIN/../../lib"); - - // Generate Rust bindings. + // Configure bindgen let bindings = bindgen::Builder::default() - .header("../../monero_libwallet2_api_c/src/main/cpp/wallet2_api_c.h") - .clang_arg(format!("-I{}", monero_include_dir.display())) + .header(header_path) + .allowlist_function("MONERO_.*") + .allowlist_var("MONERO_.*") + .allowlist_var("NetworkType_.*") + .allowlist_var("PendingTransactionStatus_.*") + .allowlist_var("Priority_.*") + .allowlist_var("UnsignedTransactionStatus_.*") + .allowlist_var("TransactionInfoDirection_.*") + .allowlist_var("AddressBookErrorCode.*") + .allowlist_var("WalletDevice_.*") + .allowlist_var("WalletStatus_.*") + .allowlist_var("WalletConnectionStatus_.*") + .allowlist_var("WalletBackgroundSync_.*") + .allowlist_var("BackgroundSync_.*") + .allowlist_var("LogLevel_.*") + .blocklist_type("__.*") + .blocklist_type("_.*") + .blocklist_function("__.*") + .layout_tests(false) + .default_enum_style(EnumVariation::Rust { + non_exhaustive: false, + }) + .derive_default(false) + .conservative_inline_namespaces() + .generate_comments(false) .generate() .expect("Unable to generate bindings"); let out_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()) |
