Skip to content

Commit 8b9983a

Browse files
authored
Merge pull request #210 from alexanderwiederin/android-CI
Add `Generate Kotlin Android` to CI
2 parents 7bf8b53 + 5e6e23d commit 8b9983a

File tree

2 files changed

+41
-6
lines changed

2 files changed

+41
-6
lines changed

.github/workflows/kotlin.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ jobs:
2020
distribution: temurin
2121
java-version: 11
2222

23+
- name: Set default Rust version to 1.73.0
24+
run: rustup default 1.73.0
25+
26+
- name: Show default version of NDK
27+
run: echo $ANDROID_NDK_ROOT
28+
2329
- name: Run ktlintCheck on ldk-node-jvm
2430
run: |
2531
cd $LDK_NODE_JVM_DIR
@@ -33,6 +39,9 @@ jobs:
3339
- name: Generate Kotlin JVM
3440
run: ./scripts/uniffi_bindgen_generate_kotlin.sh
3541

42+
- name: Generate Kotlin Android
43+
run: ./scripts/uniffi_bindgen_generate_kotlin_android.sh
44+
3645
- name: Start bitcoind and electrs
3746
run: docker compose up -d
3847

scripts/uniffi_bindgen_generate_kotlin_android.sh

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,43 @@
11
#!/bin/bash
2+
23
BINDINGS_DIR="bindings/kotlin"
34
TARGET_DIR="target"
45
PROJECT_DIR="ldk-node-android"
5-
PACKAGE_DIR="org/lightningdevkit/ldknode"
66
UNIFFI_BINDGEN_BIN="cargo run --manifest-path bindings/uniffi-bindgen/Cargo.toml"
7-
ANDROID_NDK_ROOT="/opt/homebrew/share/android-ndk"
8-
LLVM_ARCH_PATH="darwin-x86_64"
7+
8+
export_variable_if_not_present() {
9+
local name="$1"
10+
local value="$2"
11+
12+
# Check if the variable is already set
13+
if [ -z "${!name}" ]; then
14+
export "$name=$value"
15+
echo "Exported $name=$value"
16+
else
17+
echo "$name is already set to ${!name}, not exporting."
18+
fi
19+
}
20+
21+
case "$OSTYPE" in
22+
linux-gnu)
23+
export_variable_if_not_present "ANDROID_NDK_ROOT" "/opt/android-ndk"
24+
export_variable_if_not_present "LLVM_ARCH_PATH" "linux-x86_64"
25+
;;
26+
darwin*)
27+
export_variable_if_not_present "ANDROID_NDK_ROOT" "/opt/homebrew/share/android-ndk"
28+
export_variable_if_not_present "LLVM_ARCH_PATH" "darwin-x86_64"
29+
;;
30+
*)
31+
echo "Unknown operating system: $OSTYPE"
32+
;;
33+
esac
34+
935
PATH="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$LLVM_ARCH_PATH/bin:$PATH"
1036

1137
rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi
12-
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="x86_64-linux-android25-clang" CC="x86_64-linux-android25-clang" cargo build --profile release-smaller --features uniffi --target x86_64-linux-android || exit 1
13-
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="armv7a-linux-androideabi25-clang" CC="armv7a-linux-androideabi25-clang" cargo build --profile release-smaller --features uniffi --target armv7-linux-androideabi || exit 1
14-
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="aarch64-linux-android25-clang" CC="aarch64-linux-android25-clang" cargo build --profile release-smaller --features uniffi --target aarch64-linux-android || exit 1
38+
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="x86_64-linux-android21-clang" CC="x86_64-linux-android21-clang" cargo build --profile release-smaller --features uniffi --target x86_64-linux-android || exit 1
39+
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="armv7a-linux-androideabi21-clang" CC="armv7a-linux-androideabi21-clang" cargo build --profile release-smaller --features uniffi --target armv7-linux-androideabi || exit 1
40+
CFLAGS="-D__ANDROID_MIN_SDK_VERSION__=21" AR=llvm-ar CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="aarch64-linux-android21-clang" CC="aarch64-linux-android21-clang" cargo build --profile release-smaller --features uniffi --target aarch64-linux-android || exit 1
1541
$UNIFFI_BINDGEN_BIN generate bindings/ldk_node.udl --language kotlin -o "$BINDINGS_DIR"/"$PROJECT_DIR"/lib/src/main/kotlin || exit 1
1642

1743
JNI_LIB_DIR="$BINDINGS_DIR"/"$PROJECT_DIR"/lib/src/main/jniLibs/

0 commit comments

Comments
 (0)