summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergiu Deitsch <sergiu.deitsch@gmail.com>2022-10-17 18:45:18 +0200
committerBrad King <brad.king@kitware.com>2022-10-17 15:51:10 -0400
commitc833df092406874c84dce94c708fe90272701379 (patch)
treef91c2af0b40af140874ef12790ea2979c5686280
parent06294a1945110d7d7d0e3c39401c606f8edf95c9 (diff)
downloadcmake-c833df092406874c84dce94c708fe90272701379.tar.gz
FindJNI: replace CMAKE_ANDROID_API by CMAKE_SYSTEM_VERSION
In commit 00c4f488f2 (FindJNI: support Android NDK, 2022-03-18, v3.24.0-rc1~325^2) we used `CMAKE_ANDROID_API` to check the Android API level. However, `CMAKE_SYSTEM_VERSION` is the authoritative value. When cross-compiling for Android, an unset `CMAKE_ANDROID_API` can result in failure to locate JNI because the `NativeHelper` component cannot be found. In this case, the component is falsely assumed to be available by default (and thus required) since the comparison against an unset `CMAKE_ANDROID_API` variable evaluates to true. Use `CMAKE_SYSTEM_VERSION` to determine the Android API level instead. Issue: #23830
-rw-r--r--Modules/FindJNI.cmake4
1 files changed, 2 insertions, 2 deletions
diff --git a/Modules/FindJNI.cmake b/Modules/FindJNI.cmake
index e93b91e2b1..64163b008a 100644
--- a/Modules/FindJNI.cmake
+++ b/Modules/FindJNI.cmake
@@ -107,7 +107,7 @@ include(FindPackageHandleStandardArgs)
if(NOT JNI_FIND_COMPONENTS)
if(ANDROID)
- if(CMAKE_ANDROID_API LESS 31)
+ if(CMAKE_SYSTEM_VERSION LESS 31)
# There are no components for Android NDK
set(JNI_FIND_COMPONENTS)
else()
@@ -125,7 +125,7 @@ else()
# On Android, if JVM was requested we need to find NativeHelper as well which
# is an implicit dependency of JVM allowing to provide uniform access to basic
# JVM/DVM functionality.
- if(ANDROID AND CMAKE_ANDROID_API GREATER_EQUAL 31 AND JVM IN_LIST JNI_FIND_COMPONENTS)
+ if(ANDROID AND CMAKE_SYSTEM_VERSION GREATER_EQUAL 31 AND JVM IN_LIST JNI_FIND_COMPONENTS)
if(NOT NativeHelper IN_LIST JNI_FIND_COMPONENTS)
list(APPEND JNI_FIND_COMPONENTS NativeHelper)
# NativeHelper is required only if JVM was requested as such.