chore: link required libraries and RLN

This commit is contained in:
Richard Ramos 2024-02-13 14:50:00 -04:00
parent 1d8626b110
commit ca72e70bb6
No known key found for this signature in database
GPG Key ID: 1CE87DB518195760
5 changed files with 1946 additions and 59 deletions

1973
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@ url = "2.3"
waku-sys = { version = "0.5.0", path = "../waku-sys" }
libc = "0.2"
serde-aux = "4.3.1"
rln = "0.3.4"
[dev-dependencies]
futures = "0.3.25"

View File

@ -1,18 +1,17 @@
//! # Waku
//!
//! Implementation on top of [`waku-bindings`](https://rfc.vac.dev/spec/36/)
mod events;
mod general;
mod node;
mod utils;
use rln;
pub use node::{
waku_create_content_topic, waku_default_pubsub_topic, waku_new, Key, Multiaddr, PublicKey,
SecretKey, WakuNodeConfig, WakuNodeHandle,
waku_create_content_topic, waku_default_pubsub_topic, waku_new, Event, Key, Multiaddr,
PublicKey, SecretKey, Signal, WakuMessageEvent, WakuNodeConfig, WakuNodeHandle,
};
pub use general::{
Encoding, MessageId, Result, WakuContentTopic, WakuMessage, WakuMessageVersion, WakuPubSubTopic,
};
pub use events::{waku_set_event_callback, Event, Signal, WakuMessageEvent};

View File

@ -35,3 +35,4 @@ crate-type = ["rlib"]
[build-dependencies]
bindgen = "0.64"
cc = "1.0"

View File

@ -3,6 +3,8 @@ use std::env::set_current_dir;
use std::path::{Path, PathBuf};
use std::process::Command;
extern crate cc;
fn build_nwaku_lib(project_dir: &Path) {
let vendor_path = project_dir.join("vendor");
@ -19,12 +21,25 @@ fn build_nwaku_lib(project_dir: &Path) {
fn generate_bindgen_code(project_dir: &Path) {
let vendor_path = project_dir.join("vendor");
let build_dir = vendor_path.join("build");
let header_path = vendor_path.join("library/libwaku.h");
println!("cargo:rustc-link-search={}", build_dir.display());
println!("cargo:rustc-link-lib=static=waku");
cc::Build::new()
.object(vendor_path.join("vendor/nim-libbacktrace/libbacktrace_wrapper.o").display().to_string())
.compile("libbacktrace_wrapper");
println!("cargo:rerun-if-changed={}", header_path.display());
println!("cargo:rustc-link-search={}", vendor_path.join("build").display());
println!("cargo:rustc-link-lib=static=waku");
println!("cargo:rustc-link-search={}", vendor_path.join("vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc/build").display());
println!("cargo:rustc-link-lib=static=miniupnpc");
println!("cargo:rustc-link-search={}", vendor_path.join("vendor/nim-nat-traversal/vendor/libnatpmp-upstream").display());
println!("cargo:rustc-link-lib=static=natpmp");
println!("cargo:rustc-link-lib=dl");
println!("cargo:rustc-link-lib=m");
println!("cargo:rustc-link-search=native={}", vendor_path.join("vendor/nim-libbacktrace/install/usr/lib").display());
println!("cargo:rustc-link-lib=static=backtrace");
// TODO: Determine if pthread is automatically included
// Generate waku bindings with bindgen
let bindings = bindgen::Builder::default()