Android: Error in Determine-Compiler-NDK.cmake
CMake 3.15
Toolchain file:
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 21) # API level
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
set(CMAKE_ANDROID_NDK $ENV{ANDROID_NDK_ROOT})
set(CMAKE_ANDROID_STL_TYPE c++_static)
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang)
set(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG ON)
Output:
-- loading: C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/build/core/toolchains/aarch64-linux-android-clang/setup.mk
-- setup.mk: TOOLCHAIN_NAME := aarch64-linux-android
-- Android: Selected Clang toolchain 'aarch64-linux-android-clang' with GCC toolchain ''
-- _ANDROID_TOOL_NAME=
-- _ANDROID_TOOL_VERS=
-- _ANDROID_TOOL_VERS_NDK=clang
-- _ANDROID_TOOL_PREFIX=
-- _ANDROID_TOOL_CLANG_NAME=aarch64-linux-android-clang
-- _ANDROID_TOOL_CLANG_VERS=
-- _ANDROID_TOOL_LLVM_NAME=llvm
-- The C compiler identification is Clang 8.0.7
-- The CXX compiler identification is Clang 8.0.7
-- Check for working C compiler: C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe -- broken
CMake Error at C:/Dev/Tools/CMake/share/cmake-3.15/Modules/CMakeTestCCompiler.cmake:60 (message):
The C compiler
"C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Dev/Projects/ITC/Icad/trunk/Build/IcDgnApi/CMakeFiles/CMakeTmp
Run Build Command(s):C:/Dev/Tools/Ninja/ninja.exe cmTC_14460 && [1/2] Building C object CMakeFiles/cmTC_14460.dir/testCCompiler.c.o
[2/2] Linking C executable cmTC_14460
FAILED: cmTC_14460
cmd.exe /C "cd . && C:\Dev\Tools\Android\Sdk\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android --gcc-toolchain=C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/toolchains//prebuilt/windows-x86_64 --sysroot=C:/Dev/Tools/Android/Sdk/ndk/20.0.5594570/platforms/android-21/arch-arm64 -funwind-tables -no-canonical-prefixes -D__ANDROID_API__=21 -fexceptions -g -Wl,--gc-sections -fPIE -pie CMakeFiles/cmTC_14460.dir/testCCompiler.c.o -o cmTC_14460 && cd ."
C:\Dev\Tools\Perl\c\bin\ld.exe: unrecognised emulation mode: aarch64linux
Supported emulations: i386pep i386pe
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
-- Configuring incomplete, errors occurred!
See trace in the attached file "1.zip".
If I fix the file
--- C:/Dev/Tools/CMake/share/cmake-3.15/Modules/Platform/Android/Determine-Compiler-NDK.cmake
+++ C:/Dev/Tools/CMake/share/cmake-3.15/Modules/Platform/Android/Determine-Compiler-NDK.cmake
@@ -120 +120 @@ if(_ANDROID_TOOL_NAME MATCHES "-clang")
- set(_ANDROID_TOOL_NAME "")
+ set(_ANDROID_TOOL_NAME "llvm")
then all works as expected.
Edited by Brad King