summaryrefslogtreecommitdiff
path: root/impls/monero.rs/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'impls/monero.rs/build.rs')
-rw-r--r--impls/monero.rs/build.rs43
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())