name: Native Build Linux
description: This builds the linux native libraries
runs:
using: composite
steps:
- name: Download Config
uses: actions/download-artifact@v4
with:
name: config.txt
path: ./wrappers/csharp
- name: Installing dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install nuget gcc-multilib software-properties-common
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Install rust
shell: bash
run: |
rustup update
rustup target add x86_64-unknown-linux-gnu
rustup target add i686-unknown-linux-gnu
rustup target add aarch64-unknown-linux-gnu
rustup target add aarch64-linux-android
rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add x86_64-linux-android
- name: Unit tests
working-directory: ./
shell: bash
run: |
ls
cargo test
- name: Building Linux
working-directory: ./wrappers/csharp
shell: bash
run: |
cargo build -p devolutions-crypto-ffi --release --target=i686-unknown-linux-gnu
cargo build -p devolutions-crypto-ffi --release --target=x86_64-unknown-linux-gnu
cargo build -p devolutions-crypto-ffi --release --target=aarch64-unknown-linux-gnu
- name: Copy Linux Natives
shell: bash
run: |
mkdir ./wrappers/csharp/linux
cp ./target/i686-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/linux/libDevolutionsCrypto-x86.so
cp ./target/x86_64-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/linux/libDevolutionsCrypto-x64.so
cp ./target/aarch64-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/linux/libDevolutionsCrypto-arm64.so
- name: Configure Android NDK
shell: bash
run: |
# Install NDK 27
ANDROID_ROOT="/usr/local/lib/android"
ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk"
SDKMANAGER="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager"
echo "y" | $SDKMANAGER "ndk;27.2.12479018"
export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle
echo "
[target.aarch64-linux-android]
ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar\"
linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang\"
[target.armv7-linux-androideabi]
ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar\"
linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang\"
[target.i686-linux-android]
ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar\"
linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang\"
[target.x86_64-linux-android]
ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar\"
linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> ./.cargo/config.toml
- name: Building Android
working-directory: ./wrappers/csharp
shell: bash
run: |
export ANDROID_ROOT="/usr/local/lib/android"
export ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk"
export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle
ln -sfn $ANDROID_SDK_ROOT/ndk/27.2.12479018 $ANDROID_NDK
ls $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
cat ../../.cargo/config.toml
# Set environment variables for blake3 custom build script
export CC_aarch64_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang"
export AR_aarch64_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
export CC_armv7_linux_androideabi="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang"
export AR_armv7_linux_androideabi="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
export CC_i686_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang"
export AR_i686_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
export CC_x86_64_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang"
export AR_x86_64_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
cargo build -p devolutions-crypto-ffi --release --target=aarch64-linux-android
cargo build -p devolutions-crypto-ffi --release --target=armv7-linux-androideabi
cargo build -p devolutions-crypto-ffi --release --target=i686-linux-android
cargo build -p devolutions-crypto-ffi --release --target=x86_64-linux-android
- name: Copy Android Natives
shell: bash
run: |
mkdir ./wrappers/csharp/android
mkdir ./wrappers/csharp/android/aarch64
mkdir ./wrappers/csharp/android/armv7
mkdir ./wrappers/csharp/android/i686
mkdir ./wrappers/csharp/android/x86_64
cp ./target/aarch64-linux-android/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/android/aarch64/libDevolutionsCrypto.so
cp ./target/armv7-linux-androideabi/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/android/armv7/libDevolutionsCrypto.so
cp ./target/i686-linux-android/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/android/i686/libDevolutionsCrypto.so
cp ./target/x86_64-linux-android/release/libdevolutions_crypto_ffi.so ./wrappers/csharp/android/x86_64/libDevolutionsCrypto.so
- uses: actions/upload-artifact@v4.3.6
with:
name: native-android-linux
path: |
wrappers/csharp/android/**
wrappers/csharp/linux/**