Skip to content

Commit 48bf909

Browse files
committed
ci: fix in windows/android environment
1 parent 29e184c commit 48bf909

File tree

1 file changed

+62
-15
lines changed

1 file changed

+62
-15
lines changed

.github/workflows/CI.yml

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)