build-noise-core.sh

1.8 KB · raw

1#!/bin/sh2set -eu34SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)5ANDROID_REPOSITORY=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)6CORE_REPOSITORY=${PEACH_NOISE_CORE_DIR:-"$ANDROID_REPOSITORY/../peach-browser/crypto-core"}7NDK_HOME=${ANDROID_NDK_HOME:-/opt/homebrew/share/android-commandlinetools/ndk/27.3.13750724}89# shellcheck source=scripts/rust-toolchain.sh10. "$SCRIPT_DIR/rust-toolchain.sh"11require_pinned_rust_toolchain1213if [ ! -f "$CORE_REPOSITORY/Cargo.toml" ]; then14  echo "Canonical Peach Noise core not found: $CORE_REPOSITORY" >&215  exit 116fi1718if [ ! -d "$NDK_HOME" ]; then19  echo "Android NDK not found: $NDK_HOME" >&220  exit 121fi2223cd "$CORE_REPOSITORY"24cargo fmt --check25cargo test --locked26cargo build --locked --release2728ANDROID_NDK_HOME="$NDK_HOME" cargo ndk \29  --target arm64-v8a \30  --target armeabi-v7a \31  --target x86 \32  --target x86_64 \33  --platform 26 \34  --output-dir "$ANDROID_REPOSITORY/app/src/main/jniLibs" \35  build --locked --release3637shasum -a 256 "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so3839PROVENANCE_DIRECTORY="$ANDROID_REPOSITORY/build/provenance"40mkdir -p "$PROVENANCE_DIRECTORY"41{42  echo "rustc=$PINNED_RUSTC_VERSION"43  echo "cargo=$PINNED_CARGO_VERSION"44  echo "cargo_toml_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.toml")"45  echo "cargo_lock_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.lock")"46  echo "rust_sources_sha256=$(hash_rust_sources "$CORE_REPOSITORY/src")"47  echo "ndk=$NDK_HOME"48  echo "android_api=26"49  echo "targets=arm64-v8a,armeabi-v7a,x86,x86_64"50  for native_library in "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so; do51    target_name=$(basename "$(dirname "$native_library")")52    echo "artifact_${target_name}_sha256=$(hash_file "$native_library")"53  done54} > "$PROVENANCE_DIRECTORY/noise-core-android.txt"