Skip to content

Commit

Permalink
bindings: auto generate C/C++/Dart bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
pythcoiner committed Feb 23, 2025
1 parent a486b5c commit 7c4f73a
Show file tree
Hide file tree
Showing 10 changed files with 122 additions and 556 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
/rust/joinstr/Cargo.lock
/rust/simple_nostr_client/Cargo.lock
/rust/simple_electrum_client/Cargo.lock
/dart/.dart_tool
/dart/ios/
/dart/android/
/dart/lib/
/rust/joinstr/include
Cargo.lock
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ resolver = "2"
members = [
"rust/joinstr",
"rust/simple_nostr_client",
"rust/simple_electrum_client",
"rust/simple_electrum_client",
]
34 changes: 32 additions & 2 deletions build_dart.sh → contrib/bindings.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,39 @@
# Exit if any command fails
set -e

# Generate C bindings first as C headers needed to generate dart bindings

# Remove old headers
rm -f rust/joinstr/include/c/joinstr.h
rm -f rust/joinstr/include/cpp/joinstr.h

# C headers
cbindgen --lang c --crate joinstr -o rust/joinstr/include/c/joinstr.h

# C++ headers
cbindgen --crate joinstr -o rust/joinstr/include/cpp/joinstr.h

# Then generate dart bindings

cd dart
dart pub get

# Remove old bindings
rm -f lib/joinstr.dart

# Automated bindings using ffigen
dart run ffigen --ignore-source-errors

dart analyze

# Generate rust librairies

cd ../rust/joinstr

# Variables
RUST_LIB_NAME="joinstr"
ANDROID_OUTPUT_DIR="./dart/android"
IOS_OUTPUT_DIR="./dart/ios/Frameworks"
ANDROID_OUTPUT_DIR="../../dart/android"
IOS_OUTPUT_DIR="../../dart/ios/Frameworks"

# Set default ANDROID_NDK_HOME if not provided
ANDROID_NDK_HOME="${ANDROID_NDK_HOME:-/opt/android-ndk}"
Expand Down Expand Up @@ -65,3 +94,4 @@ echo "Android .so files built and placed in $ANDROID_OUTPUT_DIR"
# echo "iOS .a file built and placed in $IOS_OUTPUT_DIR"

echo "Build complete!"

311 changes: 0 additions & 311 deletions dart/.dart_tool/package_config.json

This file was deleted.

Loading

0 comments on commit 7c4f73a

Please sign in to comment.