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