mirror of
https://github.com/reactos/CMake.git
synced 2024-12-13 22:58:41 +00:00
Merge branch 'android-unified-headers' into release-3.9
This commit is contained in:
commit
05789144bd
@ -385,6 +385,11 @@ Configure use of an Android NDK with the following variables:
|
||||
If not specified, a default for this variable will be chosen
|
||||
as specified :ref:`above <Cross Compiling for Android>`.
|
||||
|
||||
:variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS`
|
||||
Set to a true value to use the deprecated per-api-level headers
|
||||
instead of the unified headers. If not specified, the default will
|
||||
be false unless using a NDK that does not provide unified headers.
|
||||
|
||||
:variable:`CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION`
|
||||
Set to the version of the NDK toolchain to be selected as the compiler.
|
||||
If not specified, the default will be the latest available GCC toolchain.
|
||||
|
@ -255,6 +255,7 @@ Variables that Control the Build
|
||||
/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
|
||||
/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
|
||||
/variable/CMAKE_ANDROID_NDK
|
||||
/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
|
||||
/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
|
||||
/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
|
||||
/variable/CMAKE_ANDROID_PROCESS_MAX
|
||||
|
@ -62,6 +62,11 @@ Commands
|
||||
Variables
|
||||
---------
|
||||
|
||||
* A :variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS` variable was added
|
||||
for use when :ref:`Cross Compiling for Android with the NDK` to request
|
||||
use of the deprecated headers even when unified headers are available.
|
||||
The default is now to use unified headers if available.
|
||||
|
||||
* A :variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` variable was introduced to
|
||||
allow :variable:`CMAKE_AUTOMOC` to extract additional dependency file names
|
||||
for ``moc`` from the contents of source files.
|
||||
|
9
Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
Normal file
9
Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
Normal file
@ -0,0 +1,9 @@
|
||||
CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
|
||||
------------------------------------
|
||||
|
||||
When :ref:`Cross Compiling for Android with the NDK`, this variable
|
||||
may be set to specify whether to use the deprecated per-api-level
|
||||
headers instead of the unified headers.
|
||||
|
||||
If not specified, the default will be *false* if using a NDK version
|
||||
that provides the unified headers and *true* otherwise.
|
@ -161,6 +161,9 @@ macro(__android_compiler_common lang)
|
||||
# tied to a specific API version.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${CMAKE_SYSROOT}/usr/include")
|
||||
if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${CMAKE_SYSROOT}/usr/include/${CMAKE_ANDROID_ARCH_HEADER_TRIPLE}")
|
||||
endif()
|
||||
list(REMOVE_ITEM CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include")
|
||||
endif()
|
||||
endmacro()
|
||||
|
@ -197,22 +197,30 @@ endif()
|
||||
|
||||
# https://developer.android.com/ndk/guides/abis.html
|
||||
|
||||
set(_ANDROID_ABI_arm64-v8a_PROC "aarch64")
|
||||
set(_ANDROID_ABI_arm64-v8a_ARCH "arm64")
|
||||
set(_ANDROID_ABI_armeabi-v7a_PROC "armv7-a")
|
||||
set(_ANDROID_ABI_armeabi-v7a_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi-v6_PROC "armv6")
|
||||
set(_ANDROID_ABI_armeabi-v6_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi_PROC "armv5te")
|
||||
set(_ANDROID_ABI_armeabi_ARCH "arm")
|
||||
set(_ANDROID_ABI_mips_PROC "mips")
|
||||
set(_ANDROID_ABI_mips_ARCH "mips")
|
||||
set(_ANDROID_ABI_mips64_PROC "mips64")
|
||||
set(_ANDROID_ABI_mips64_ARCH "mips64")
|
||||
set(_ANDROID_ABI_x86_PROC "i686")
|
||||
set(_ANDROID_ABI_x86_ARCH "x86")
|
||||
set(_ANDROID_ABI_x86_64_PROC "x86_64")
|
||||
set(_ANDROID_ABI_x86_64_ARCH "x86_64")
|
||||
set(_ANDROID_ABI_arm64-v8a_PROC "aarch64")
|
||||
set(_ANDROID_ABI_arm64-v8a_ARCH "arm64")
|
||||
set(_ANDROID_ABI_arm64-v8a_HEADER "aarch64-linux-android")
|
||||
set(_ANDROID_ABI_armeabi-v7a_PROC "armv7-a")
|
||||
set(_ANDROID_ABI_armeabi-v7a_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi-v7a_HEADER "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_armeabi-v6_PROC "armv6")
|
||||
set(_ANDROID_ABI_armeabi-v6_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi-v6_HEADER "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_armeabi_PROC "armv5te")
|
||||
set(_ANDROID_ABI_armeabi_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi_HEADER "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_mips_PROC "mips")
|
||||
set(_ANDROID_ABI_mips_ARCH "mips")
|
||||
set(_ANDROID_ABI_mips_HEADER "mipsel-linux-android")
|
||||
set(_ANDROID_ABI_mips64_PROC "mips64")
|
||||
set(_ANDROID_ABI_mips64_ARCH "mips64")
|
||||
set(_ANDROID_ABI_mips64_HEADER "mips64el-linux-android")
|
||||
set(_ANDROID_ABI_x86_PROC "i686")
|
||||
set(_ANDROID_ABI_x86_ARCH "x86")
|
||||
set(_ANDROID_ABI_x86_HEADER "i686-linux-android")
|
||||
set(_ANDROID_ABI_x86_64_PROC "x86_64")
|
||||
set(_ANDROID_ABI_x86_64_ARCH "x86_64")
|
||||
set(_ANDROID_ABI_x86_64_HEADER "x86_64-linux-android")
|
||||
|
||||
set(_ANDROID_PROC_aarch64_ARCH_ABI "arm64-v8a")
|
||||
set(_ANDROID_PROC_armv7-a_ARCH_ABI "armeabi-v7a")
|
||||
@ -264,6 +272,7 @@ if(_ANDROID_SYSROOT_ARCH AND NOT "x${_ANDROID_SYSROOT_ARCH}" STREQUAL "x${CMAKE_
|
||||
"does not match architecture '${CMAKE_ANDROID_ARCH}' for the ABI '${CMAKE_ANDROID_ARCH_ABI}'."
|
||||
)
|
||||
endif()
|
||||
set(CMAKE_ANDROID_ARCH_HEADER_TRIPLE "${_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_HEADER}")
|
||||
|
||||
# Select a processor.
|
||||
if(NOT CMAKE_SYSTEM_PROCESSOR)
|
||||
@ -275,6 +284,16 @@ if(NOT _ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESS
|
||||
message(FATAL_ERROR "Android: The specified CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}' and CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}' is not a valid combination.")
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_NDK AND NOT DEFINED CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
if(IS_DIRECTORY "${CMAKE_ANDROID_NDK}/sysroot/usr/include/${CMAKE_ANDROID_ARCH_HEADER_TRIPLE}")
|
||||
# Unified headers exist so we use them by default.
|
||||
set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 0)
|
||||
else()
|
||||
# Unified headers do not exist so use the deprecated headers.
|
||||
set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Save the Android-specific information in CMakeSystem.cmake.
|
||||
set(CMAKE_SYSTEM_CUSTOM_CODE "
|
||||
set(CMAKE_ANDROID_NDK \"${CMAKE_ANDROID_NDK}\")
|
||||
@ -283,6 +302,13 @@ set(CMAKE_ANDROID_ARCH \"${CMAKE_ANDROID_ARCH}\")
|
||||
set(CMAKE_ANDROID_ARCH_ABI \"${CMAKE_ANDROID_ARCH_ABI}\")
|
||||
")
|
||||
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
|
||||
"set(CMAKE_ANDROID_ARCH_HEADER_TRIPLE \"${CMAKE_ANDROID_ARCH_HEADER_TRIPLE}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS \"${CMAKE_ANDROID_NDK_DEPRECATED_HEADERS}\")\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Select an ARM variant.
|
||||
if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi")
|
||||
if(CMAKE_ANDROID_ARM_MODE)
|
||||
|
@ -20,6 +20,9 @@ endif()
|
||||
if(NOT CMAKE_SYSROOT)
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
set(CMAKE_SYSROOT "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}/arch-${CMAKE_ANDROID_ARCH}")
|
||||
if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
set(CMAKE_SYSROOT_COMPILE "${CMAKE_ANDROID_NDK}/sysroot")
|
||||
endif()
|
||||
elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
set(CMAKE_SYSROOT "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot")
|
||||
endif()
|
||||
|
@ -3,6 +3,10 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -no-canonical-prefixes"
|
||||
)
|
||||
|
||||
if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS " -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION}")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE
|
||||
AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 16)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
Loading…
Reference in New Issue
Block a user