@@ -2,7 +2,7 @@ name: Prebuild
22
33on :
44 push :
5- branches : [main, feat/interchangable-ffi]
5+ branches : [main, feat/interchangable-ffi, feat/termux ]
66 pull_request :
77
88jobs :
3636 artifact_name : target/aarch64-unknown-linux-musl/release/libfff_nvim.so
3737 ext : so
3838
39+ # # Android (Termux)
40+ - os : ubuntu-latest
41+ target : aarch64-linux-android
42+ artifact_name : target/aarch64-linux-android/release/libfff_nvim.so
43+ ext : so
44+
3945 # # macOS builds
4046 - os : macos-latest
4147 target : x86_64-apple-darwin
@@ -73,11 +79,25 @@ jobs:
7379 run : cargo install cargo-zigbuild
7480
7581 - name : Build for Linux
76- if : contains(matrix.os, 'ubuntu')
82+ if : contains(matrix.os, 'ubuntu') && !contains(matrix.target, 'android')
7783 run : |
7884 cargo zigbuild --release --target ${{ matrix.zigbuild_target || matrix.target }} -p fff-nvim
7985 mv "${{ matrix.artifact_name }}" "${{ matrix.target }}.${{ matrix.ext }}"
8086
87+ - name : Build for Android (Termux)
88+ if : contains(matrix.target, 'android')
89+ run : |
90+ NDK_BIN="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin"
91+
92+ # NDK clang for C deps (libgit2, lmdb, blake3) that need Bionic sysroot headers
93+ export CC_aarch64_linux_android="$NDK_BIN/aarch64-linux-android24-clang"
94+ export CXX_aarch64_linux_android="$NDK_BIN/aarch64-linux-android24-clang++"
95+ export AR_aarch64_linux_android="$NDK_BIN/llvm-ar"
96+ export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$NDK_BIN/aarch64-linux-android24-clang"
97+
98+ cargo build --release --target ${{ matrix.target }} -p fff-nvim
99+ mv "${{ matrix.artifact_name }}" "${{ matrix.target }}.${{ matrix.ext }}"
100+
81101 - name : Build for macOS
82102 if : contains(matrix.os, 'macos')
83103 run : |
@@ -137,6 +157,13 @@ jobs:
137157 lib_filename : libfff_c.so
138158 ext : so
139159
160+ # # Android (Termux)
161+ - os : ubuntu-latest
162+ target : aarch64-linux-android
163+ artifact_name : target/aarch64-linux-android/release/libfff_c.so
164+ lib_filename : libfff_c.so
165+ ext : so
166+
140167 # # macOS builds
141168 - os : macos-latest
142169 target : x86_64-apple-darwin
@@ -183,11 +210,24 @@ jobs:
183210 run : cargo install cargo-zigbuild
184211
185212 - name : Build for Linux
186- if : contains(matrix.os, 'ubuntu')
213+ if : contains(matrix.os, 'ubuntu') && !contains(matrix.target, 'android')
187214 run : |
188215 cargo zigbuild --release --target ${{ matrix.zigbuild_target || matrix.target }} -p fff-c
189216 mv "${{ matrix.artifact_name }}" "c-lib-${{ matrix.target }}.${{ matrix.ext }}"
190217
218+ - name : Build for Android (Termux)
219+ if : contains(matrix.target, 'android')
220+ run : |
221+ NDK_BIN="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin"
222+
223+ export CC_aarch64_linux_android="$NDK_BIN/aarch64-linux-android24-clang"
224+ export CXX_aarch64_linux_android="$NDK_BIN/aarch64-linux-android24-clang++"
225+ export AR_aarch64_linux_android="$NDK_BIN/llvm-ar"
226+ export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$NDK_BIN/aarch64-linux-android24-clang"
227+
228+ cargo build --release --target ${{ matrix.target }} -p fff-c
229+ mv "${{ matrix.artifact_name }}" "c-lib-${{ matrix.target }}.${{ matrix.ext }}"
230+
191231 - name : Build for macOS
192232 if : contains(matrix.os, 'macos')
193233 run : |
@@ -206,6 +246,7 @@ jobs:
206246 mv "${{ matrix.artifact_name }}" "c-lib-${{ matrix.target }}.${{ matrix.ext }}"
207247
208248 - name : Prepare npm package
249+ if : " !contains(matrix.target, 'android')"
209250 shell : bash
210251 run : |
211252 # Copy the built binary into the platform npm package directory
@@ -218,6 +259,7 @@ jobs:
218259 path : c-lib-${{ matrix.target }}.*
219260
220261 - name : Upload npm package artifact
262+ if : " !contains(matrix.target, 'android')"
221263 uses : actions/upload-artifact@v4
222264 with :
223265 name : npm-${{ matrix.npm_package }}
0 commit comments