mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
Android/Clang: Tolerate undefined CMAKE_ANDROID_NDK_VERSION
The previous fix for #21772, commit 005e2cdfb0 (Android: Do not use gold
for ndk >= r22, 2021-02-26, v3.20.0-rc3~1^2), doesn't work with typical
android toolchain file, like this one:
https://android.googlesource.com/platform/ndk/+/master/build/cmake/android-legacy.toolchain.cmake
The condition fails to work when CMAKE_ANDROID_NDK_VERSION is undefined:
second part evaluates to true, although ndk version is not known.
I've encountered following environment where CMAKE_ANDROID_NDK_VERSION
is used without definition:
* Build uses android toolchain file, which sets CMAKE_SYSTEM_VERSION=1
and doesn't set CMAKE_ANDROID_NDK_VERSION.
* Code in Platform/Android-Determine.cmake exits early when it detects
toolchain usage (via value CMAKE_SYSTEM_VERSION=1). This file is the
only place in cmake modules where variable CMAKE_ANDROID_NDK_VERSION
is set, and by early return we skip this definition.
This commit is contained in:
@@ -80,7 +80,7 @@ else()
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
|
||||
endif()
|
||||
|
||||
if(ANDROID AND NOT CMAKE_ANDROID_NDK_VERSION VERSION_GREATER_EQUAL "22")
|
||||
if(ANDROID AND CMAKE_ANDROID_NDK_VERSION VERSION_LESS "22")
|
||||
# https://github.com/android-ndk/ndk/issues/242
|
||||
set(CMAKE_${lang}_LINK_OPTIONS_IPO "-fuse-ld=gold")
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user