Android: CMake can't find ar tool during configuration on macOS host
Hi.
I believe that this is CMake issue, not NDK.
My environment:
- MacOS Monterey 12.2.1
- Xcode 13.2.1
- Android Studio 2021.1.1 Patch 1
- Gradle 7.2 based project which uses Android Gradle Plugin 7.1.0
- NDK 23.1.7779620
- CMake 3.22.3
When I try to compile the project with ./gradlew assembleRelease (this issues is not reproduced on Debug!) I see the following error:
FAILED: xxx/libminizip.a
: && /Applications/CMake.app/Contents/bin/cmake -E rm -f xxx/libminizip.a && /usr/bin/ar qc xxx/libminizip.a external/minizip/CMakeFiles/minizip.dir/ioapi.c.o external/minizip/CMakeFiles/minizip.dir/ioapi_mem.c.o external/minizip/CMakeFiles/minizip.dir/mztools.c.o external/minizip/CMakeFiles/minizip.dir/unzip.c.o external/minizip/CMakeFiles/minizip.dir/zip.c.o && /Users/yyyy/AndroidSDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib xxx/libminizip.a && /Applications/CMake.app/Contents/bin/cmake -E touch xxx/libminizip.a && :
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv7-none-linux-android21
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv7-none-linux-android21
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv7-none-linux-android21
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv7-none-linux-android21
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv7-none-linux-android21
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar: internal ranlib command failed
Obviously it uses ar tool from system (see /usr/bin/ar), not from NDK. CMakeCache.txt:
//Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar
Note: everything works if I specify -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=ON. android-legacy.toolchain.cmake contains following lines:
set(CMAKE_AR "${ANDROID_AR}" CACHE FILEPATH "Archiver")
set(CMAKE_RANLIB "${ANDROID_RANLIB}" CACHE FILEPATH "Ranlib")
set(CMAKE_STRIP "${ANDROID_STRIP}" CACHE FILEPATH "Strip")
Edited by Brad King