Skip to content

Commit 91f589e

Browse files
rhythmcachelu-zero
authored andcommitted
Build aarch64 android bins
1 parent 282f394 commit 91f589e

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

.github/workflows/deploy.yml

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,73 @@ jobs:
9595
name: cargo-c-linux-binaries-${{ matrix.target }}
9696
path: cargo-c-${{ matrix.target }}.tar.gz
9797

98+
android-binaries:
99+
100+
runs-on: ubuntu-latest
101+
102+
steps:
103+
- uses: actions/checkout@v5
104+
105+
- name: Install Rust toolchain
106+
uses: dtolnay/rust-toolchain@stable
107+
with:
108+
toolchain: stable
109+
targets: aarch64-linux-android
110+
111+
- name: Setup Android NDK
112+
uses: nttld/setup-ndk@v1
113+
id: setup-ndk
114+
with:
115+
ndk-version: r29
116+
add-to-path: true
117+
118+
- name: Configure linker and environment
119+
run: |
120+
NDK_BIN="${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin"
121+
122+
cd $NDK_BIN
123+
ln -sf aarch64-linux-android21-clang aarch64-linux-android-clang
124+
ln -sf aarch64-linux-android21-clang++ aarch64-linux-android-clang++
125+
126+
cd $GITHUB_WORKSPACE
127+
mkdir -p .cargo
128+
cat > .cargo/config.toml << EOF
129+
[target.aarch64-linux-android]
130+
linker = "${NDK_BIN}/aarch64-linux-android21-clang"
131+
ar = "${NDK_BIN}/llvm-ar"
132+
EOF
133+
134+
echo "CC_aarch64_linux_android=${NDK_BIN}/aarch64-linux-android21-clang" >> $GITHUB_ENV
135+
echo "CXX_aarch64_linux_android=${NDK_BIN}/aarch64-linux-android21-clang++" >> $GITHUB_ENV
136+
echo "AR_aarch64_linux_android=${NDK_BIN}/llvm-ar" >> $GITHUB_ENV
137+
echo "CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=${NDK_BIN}/aarch64-linux-android21-clang" >> $GITHUB_ENV
138+
echo "${NDK_BIN}" >> $GITHUB_PATH
139+
140+
- name: Build cargo-c
141+
env:
142+
CC_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang
143+
CXX_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++
144+
AR_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
145+
run: |
146+
cargo build --target aarch64-linux-android \
147+
--features=vendored-openssl \
148+
--profile release-strip
149+
150+
- name: Create tar
151+
run: |
152+
cd target/aarch64-linux-android/release-strip
153+
tar -czvf $GITHUB_WORKSPACE/cargo-c-aarch64-linux-android.tar.gz \
154+
cargo-capi \
155+
cargo-cbuild \
156+
cargo-cinstall \
157+
cargo-ctest
158+
159+
- name: Upload binaries
160+
uses: actions/upload-artifact@v5
161+
with:
162+
name: cargo-c-android-binaries-aarch64
163+
path: cargo-c-aarch64-linux-android.tar.gz
164+
98165
macos-binaries:
99166

100167
runs-on: macos-latest
@@ -128,7 +195,7 @@ jobs:
128195

129196
deploy:
130197

131-
needs: [windows-binaries, linux-binaries, macos-binaries]
198+
needs: [windows-binaries, linux-binaries, android-binaries, macos-binaries]
132199

133200
runs-on: ubuntu-latest
134201

@@ -153,6 +220,7 @@ jobs:
153220
files: |
154221
Cargo.lock
155222
cargo-c-linux-binaries*/*.tar.gz
223+
cargo-c-android-binaries*/*.tar.gz
156224
cargo-c-macos-binaries/cargo-c-macos.zip
157225
cargo-c-windows-msvc-binaries/cargo-c-windows-msvc.zip
158226
cargo-c-windows-gnu-binaries/cargo-c-windows-gnu.zip

0 commit comments

Comments
 (0)