#!/bin/sh set -eu SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) ANDROID_REPOSITORY=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd) CORE_REPOSITORY=${PEACH_NOISE_CORE_DIR:-"$ANDROID_REPOSITORY/../peach-browser/crypto-core"} NDK_HOME=${ANDROID_NDK_HOME:-/opt/homebrew/share/android-commandlinetools/ndk/27.3.13750724} # shellcheck source=scripts/rust-toolchain.sh . "$SCRIPT_DIR/rust-toolchain.sh" require_pinned_rust_toolchain if [ ! -f "$CORE_REPOSITORY/Cargo.toml" ]; then echo "Canonical Peach Noise core not found: $CORE_REPOSITORY" >&2 exit 1 fi if [ ! -d "$NDK_HOME" ]; then echo "Android NDK not found: $NDK_HOME (set ANDROID_NDK_HOME to the pinned 27.3.13750724)" >&2 exit 1 fi cd "$CORE_REPOSITORY" cargo fmt --check cargo test --locked cargo build --locked --release ANDROID_NDK_HOME="$NDK_HOME" cargo ndk \ --target arm64-v8a \ --target x86_64 \ --platform 26 \ --output-dir "$ANDROID_REPOSITORY/app/src/main/jniLibs" \ build --locked --release shasum -a 256 "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so PROVENANCE_DIRECTORY="$ANDROID_REPOSITORY/build/provenance" mkdir -p "$PROVENANCE_DIRECTORY" { echo "rustc=$PINNED_RUSTC_VERSION" echo "cargo=$PINNED_CARGO_VERSION" echo "cargo_toml_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.toml")" echo "cargo_lock_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.lock")" echo "rust_sources_sha256=$(hash_rust_sources "$CORE_REPOSITORY/src")" echo "ndk=$NDK_HOME" echo "android_api=26" echo "targets=arm64-v8a,x86_64" for native_library in "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so; do target_name=$(basename "$(dirname "$native_library")") echo "artifact_${target_name}_sha256=$(hash_file "$native_library")" done } > "$PROVENANCE_DIRECTORY/noise-core-android.txt"