From 1e85affc00733189cf7462d921d75775269130a8 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 11 Oct 2024 16:58:13 -0500 Subject: remove system exports from bindings.rs resolves https://github.com/MrCyjaneK/monero_c/pull/67#discussion_r1796432127 --- impls/monero.rs/build.rs | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) (limited to 'impls/monero.rs/build.rs') 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()) -- cgit v1.2.3