@@ -109,6 +109,12 @@ jobs:
109109 with :
110110 node-version : 22
111111 cache : pnpm
112+ - name : Setup MSVC (Windows)
113+ if : ${{ contains(matrix.settings.host, 'windows') }}
114+ uses : microsoft/setup-msbuild@v1.3
115+ with :
116+ vs-version : ' [17.0,18.0)'
117+
112118 - name : Install Rust (Windows)
113119 if : ${{ contains(matrix.settings.host, 'windows') }}
114120 run : |
@@ -146,26 +152,67 @@ jobs:
146152 sudo apt-get update
147153 sudo apt-get install -y build-essential libssl-dev pkg-config
148154
149- - name : Install Android NDK
155+ - name : Setup Android NDK Environment
150156 if : ${{ contains(matrix.settings.target, 'android') }}
151157 run : |
152- wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip
153- unzip android-ndk-r25c-linux.zip
154- echo "ANDROID_NDK_ROOT=$PWD/android-ndk-r25c" >> $GITHUB_ENV
155- echo "$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
158+ # Find Android SDK installation
159+ ANDROID_SDK=""
160+ if [ -d "/usr/lib/android-sdk" ]; then
161+ ANDROID_SDK="/usr/lib/android-sdk"
162+ elif [ -d "/opt/android-sdk" ]; then
163+ ANDROID_SDK="/opt/android-sdk"
164+ elif [ -d "$HOME/android-sdk" ]; then
165+ ANDROID_SDK="$HOME/android-sdk"
166+ elif [ -d "/usr/local/android-sdk" ]; then
167+ ANDROID_SDK="/usr/local/android-sdk"
168+ else
169+ echo "Android SDK not found, trying to find NDK directly..."
170+ # Try to find NDK directly
171+ NDK_PATH=$(find /usr /opt /home -name "ndk*" -type d 2>/dev/null | head -1)
172+ if [ -n "$NDK_PATH" ]; then
173+ ANDROID_SDK=$(dirname "$NDK_PATH")
174+ fi
175+ fi
176+
177+ if [ -z "$ANDROID_SDK" ]; then
178+ echo "Error: Android SDK not found. Please install android-sdk package."
179+ exit 1
180+ fi
181+
182+ echo "Found Android SDK at: $ANDROID_SDK"
183+ # Find NDK in the SDK
184+ NDK_ROOT=$(find "$ANDROID_SDK" -name "ndk*" -type d | head -1)
185+ if [ -z "$NDK_ROOT" ]; then
186+ echo "NDK not found in SDK, trying alternative locations..."
187+ NDK_ROOT=$(find /usr /opt -name "ndk*" -type d 2>/dev/null | head -1)
188+ fi
189+
190+ if [ -z "$NDK_ROOT" ] || [ ! -d "$NDK_ROOT" ]; then
191+ echo "Error: NDK not found. Please ensure NDK is installed with the SDK."
192+ exit 1
193+ fi
194+
195+ echo "Using NDK at: $NDK_ROOT"
196+ echo "ANDROID_NDK_ROOT=$NDK_ROOT" >> $GITHUB_ENV
197+ echo "$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
198+
156199 # Set up environment variables for Android targets
157200 if [[ "${{ matrix.settings.target }}" == "aarch64-linux-android" ]]; then
158- echo "CC_aarch64_linux_android=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" >> $GITHUB_ENV
159- echo "CXX_aarch64_linux_android=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" >> $GITHUB_ENV
160- echo "AR_aarch64_linux_android=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
161- echo "TARGET_CC=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" >> $GITHUB_ENV
162- echo "TARGET_AR=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
201+ echo "CC_aarch64_linux_android=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" >> $GITHUB_ENV
202+ echo "CXX_aarch64_linux_android=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" >> $GITHUB_ENV
203+ echo "AR_aarch64_linux_android=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
204+ echo "TARGET_CC=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" >> $GITHUB_ENV
205+ echo "TARGET_AR=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
206+ echo "CC_aarch64_pc_windows_msvc=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" >> $GITHUB_ENV
207+ echo "AR_aarch64_pc_windows_msvc=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
163208 elif [[ "${{ matrix.settings.target }}" == "armv7-linux-androideabi" ]]; then
164- echo "CC_armv7_linux_androideabi=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" >> $GITHUB_ENV
165- echo "CXX_armv7_linux_androideabi=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" >> $GITHUB_ENV
166- echo "AR_armv7_linux_androideabi=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
167- echo "TARGET_CC=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" >> $GITHUB_ENV
168- echo "TARGET_AR=$PWD/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
209+ echo "CC_armv7_linux_androideabi=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" >> $GITHUB_ENV
210+ echo "CXX_armv7_linux_androideabi=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" >> $GITHUB_ENV
211+ echo "AR_armv7_linux_androideabi=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
212+ echo "TARGET_CC=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" >> $GITHUB_ENV
213+ echo "TARGET_AR=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
214+ echo "CC_armv7_pc_windows_msvc=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" >> $GITHUB_ENV
215+ echo "AR_armv7_pc_windows_msvc=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV
169216 fi
170217
171218 - uses : mlugg/setup-zig@v2
0 commit comments