mirror of
https://github.com/reactos/CMake.git
synced 2025-01-31 17:12:49 +00:00
Merge topic 'android-ndk-r19'
97bca2f9fa Android: Use unified toolchain in NDK r19+ 19f36c5fb2 Android: Update test to not require GCC compiler to exist in NDK f3e32ddae9 Android: Re-order system initialization to select sysroot last 9a0720b819 Android: Clarify name of internal variable for arch triple 4e6c58d937 Android: Select NDK host tag while determining system Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3612
This commit is contained in:
commit
23503ba5f0
@ -399,8 +399,10 @@ Configure use of an Android NDK with the following variables:
|
||||
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.
|
||||
On NDK r19 or above, this variable must be unset or set to ``clang``.
|
||||
On NDK r18 or below, set this 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.
|
||||
|
||||
:variable:`CMAKE_ANDROID_STL_TYPE`
|
||||
Set to specify which C++ standard library to use. If not specified,
|
||||
|
@ -3,7 +3,11 @@ CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
|
||||
|
||||
When :ref:`Cross Compiling for Android with the NDK`, this variable
|
||||
may be set to specify the version of the toolchain to be used
|
||||
as the compiler. The variable must be set to one of these forms:
|
||||
as the compiler.
|
||||
|
||||
On NDK r19 or above, this variable must be unset or set to ``clang``.
|
||||
|
||||
On NDK r18 or below, this variable must be set to one of these forms:
|
||||
|
||||
* ``<major>.<minor>``: GCC of specified version
|
||||
* ``clang<major>.<minor>``: Clang of specified version
|
||||
|
@ -40,6 +40,9 @@ macro(__android_compiler_clang lang)
|
||||
endif()
|
||||
if(NOT CMAKE_${lang}_COMPILER_TARGET)
|
||||
set(CMAKE_${lang}_COMPILER_TARGET "${_ANDROID_ABI_CLANG_TARGET}")
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
string(APPEND CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_VERSION}")
|
||||
endif()
|
||||
list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
@ -47,7 +47,41 @@ if(CMAKE_ANDROID_NDK)
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_STL_TYPE)
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
if(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
|
||||
set(_ANDROID_STL_EXCEPTIONS 0)
|
||||
set(_ANDROID_STL_RTTI 0)
|
||||
macro(__android_stl lang)
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libstdc++")
|
||||
endmacro()
|
||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_static")
|
||||
set(_ANDROID_STL_EXCEPTIONS 1)
|
||||
set(_ANDROID_STL_RTTI 1)
|
||||
macro(__android_stl lang)
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
|
||||
string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -static-libstdc++")
|
||||
endmacro()
|
||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_shared")
|
||||
set(_ANDROID_STL_EXCEPTIONS 1)
|
||||
set(_ANDROID_STL_RTTI 1)
|
||||
macro(__android_stl lang)
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
|
||||
endmacro()
|
||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
|
||||
set(_ANDROID_STL_RTTI 0)
|
||||
set(_ANDROID_STL_EXCEPTIONS 0)
|
||||
macro(__android_stl lang)
|
||||
# FIXME: Add a way to add project-wide language-specific compile-only flags.
|
||||
set(CMAKE_CXX_COMPILE_OBJECT
|
||||
"<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE> -nostdinc++")
|
||||
string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -nostdlib++")
|
||||
endmacro()
|
||||
else()
|
||||
message(FATAL_ERROR
|
||||
"Android: STL '${CMAKE_ANDROID_STL_TYPE}' not supported by this NDK."
|
||||
)
|
||||
endif()
|
||||
elseif(CMAKE_ANDROID_NDK)
|
||||
|
||||
macro(__android_stl_inc lang dir req)
|
||||
if(EXISTS "${dir}")
|
||||
@ -152,6 +186,10 @@ macro(__android_compiler_common lang)
|
||||
__android_stl(CXX)
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -latomic -lm")
|
||||
endif()
|
||||
|
||||
# <ndk>/build/core/definitions.mk appends the sysroot's include directory
|
||||
# explicitly at the end of the command-line include path so that it
|
||||
# precedes the toolchain's builtin include directories. This is
|
||||
@ -161,7 +199,7 @@ macro(__android_compiler_common lang)
|
||||
#
|
||||
# Do not do this for a standalone toolchain because it is already
|
||||
# tied to a specific API version.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
if(CMAKE_SYSROOT_COMPILE)
|
||||
set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}")
|
||||
else()
|
||||
@ -170,7 +208,7 @@ macro(__android_compiler_common lang)
|
||||
if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES
|
||||
"${_cmake_sysroot_compile}/usr/include"
|
||||
"${_cmake_sysroot_compile}/usr/include/${CMAKE_ANDROID_ARCH_HEADER_TRIPLE}"
|
||||
"${_cmake_sysroot_compile}/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}"
|
||||
)
|
||||
else()
|
||||
list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${_cmake_sysroot_compile}/usr/include")
|
||||
|
@ -198,32 +198,66 @@ if(NOT CMAKE_SYSTEM_VERSION MATCHES "^[0-9]+$")
|
||||
message(FATAL_ERROR "Android: The API specified by CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}' is not an integer.")
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
# Identify the host platform.
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86_64")
|
||||
else()
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86_64")
|
||||
else()
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows-x86_64")
|
||||
else()
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Android: Builds hosted on '${CMAKE_HOST_SYSTEM_NAME}' not supported.")
|
||||
endif()
|
||||
|
||||
# Look for a unified toolchain/sysroot provided with the NDK.
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "${CMAKE_ANDROID_NDK}/toolchains/llvm/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}")
|
||||
if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
|
||||
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_arm64-v8a_HEADER "aarch64-linux-android")
|
||||
set(_ANDROID_ABI_arm64-v8a_TRIPLE "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-v7a_TRIPLE "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-v6_TRIPLE "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_armeabi_TRIPLE "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_mips_TRIPLE "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_mips64_TRIPLE "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_TRIPLE "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_ABI_x86_64_TRIPLE "x86_64-linux-android")
|
||||
|
||||
set(_ANDROID_PROC_aarch64_ARCH_ABI "arm64-v8a")
|
||||
set(_ANDROID_PROC_armv7-a_ARCH_ABI "armeabi-v7a")
|
||||
@ -308,7 +342,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}")
|
||||
set(CMAKE_ANDROID_ARCH_TRIPLE "${_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_TRIPLE}")
|
||||
|
||||
# Select a processor.
|
||||
if(NOT CMAKE_SYSTEM_PROCESSOR)
|
||||
@ -321,7 +355,7 @@ if(NOT _ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESS
|
||||
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}")
|
||||
if(IS_DIRECTORY "${CMAKE_ANDROID_NDK}/sysroot/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}")
|
||||
# Unified headers exist so we use them by default.
|
||||
set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 0)
|
||||
else()
|
||||
@ -340,8 +374,10 @@ 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_ARCH_TRIPLE \"${CMAKE_ANDROID_ARCH_TRIPLE}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS \"${CMAKE_ANDROID_NDK_DEPRECATED_HEADERS}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED \"${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}\")\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -17,6 +17,13 @@ if(CMAKE_SYSTEM_VERSION EQUAL 1)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(CMAKE_BUILD_TYPE_INIT Debug)
|
||||
|
||||
# Skip sysroot selection if the NDK has a unified toolchain.
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_SYSROOT)
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
set(CMAKE_SYSROOT "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}/arch-${CMAKE_ANDROID_ARCH}")
|
||||
@ -40,5 +47,3 @@ else()
|
||||
"Android: No CMAKE_SYSROOT was selected."
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CMAKE_BUILD_TYPE_INIT Debug)
|
||||
|
@ -1,6 +1,31 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# In Android NDK r19 and above there is a single clang toolchain.
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION STREQUAL "clang")
|
||||
message(FATAL_ERROR
|
||||
"Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}' "
|
||||
"is not supported by this NDK. It must be 'clang' or not set at all."
|
||||
)
|
||||
endif()
|
||||
message(STATUS "Android: Selected unified Clang toolchain")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "clang")
|
||||
set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang++${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# In Android NDK releases there is build system toolchain selection logic in
|
||||
# these files:
|
||||
#
|
||||
@ -195,40 +220,16 @@ if(NOT _ANDROID_TOOL_PREFIX AND "${_ANDROID_TOOL_NAME}" MATCHES "^(.*-)[0-9.]+$"
|
||||
set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
|
||||
# Identify the host platform.
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(_ANDROID_HOST_DIR "darwin-x86_64")
|
||||
else()
|
||||
set(_ANDROID_HOST_DIR "darwin-x86")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(_ANDROID_HOST_DIR "linux-x86_64")
|
||||
else()
|
||||
set(_ANDROID_HOST_DIR "linux-x86")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
set(_ANDROID_HOST_DIR "windows-x86_64")
|
||||
else()
|
||||
set(_ANDROID_HOST_DIR "windows")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Android: Builds hosted on '${CMAKE_HOST_SYSTEM_NAME}' not supported.")
|
||||
endif()
|
||||
|
||||
# Help CMakeFindBinUtils locate things.
|
||||
set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "${_ANDROID_HOST_DIR}")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
|
||||
|
||||
# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
|
||||
string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
|
||||
@ -238,9 +239,9 @@ set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
||||
|
||||
if(_ANDROID_TOOL_CLANG_NAME)
|
||||
message(STATUS "Android: Selected Clang toolchain '${_ANDROID_TOOL_CLANG_NAME}' with GCC toolchain '${_ANDROID_TOOL_NAME}'")
|
||||
set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/clang${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR})
|
||||
set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/clang++${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG})
|
||||
set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang++${_ANDROID_HOST_EXT}")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN}")
|
||||
else()
|
||||
message(STATUS "Android: Selected GCC toolchain '${_ANDROID_TOOL_NAME}'")
|
||||
@ -267,4 +268,3 @@ unset(_ANDROID_TOOL_PREFIX)
|
||||
unset(_ANDROID_TOOL_CLANG_NAME)
|
||||
unset(_ANDROID_TOOL_CLANG_VERS)
|
||||
unset(_ANDROID_TOOL_LLVM_NAME)
|
||||
unset(_ANDROID_HOST_DIR)
|
||||
|
@ -62,5 +62,4 @@ else()
|
||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
endif()
|
||||
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
||||
|
@ -40,7 +40,6 @@ if(CMAKE_ANDROID_NDK)
|
||||
elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
include(Platform/Android/Determine-Compiler-Standalone)
|
||||
else()
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_C_COMPILER "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "")
|
||||
@ -65,7 +64,6 @@ macro(__android_determine_compiler lang)
|
||||
|
||||
# Save the Android-specific information in CMake${lang}Compiler.cmake.
|
||||
set(CMAKE_${lang}_COMPILER_CUSTOM_CODE "
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG}\")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION}\")
|
||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_MACHINE \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_MACHINE}\")
|
||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_VERSION}\")
|
||||
|
@ -3,7 +3,7 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -no-canonical-prefixes"
|
||||
)
|
||||
|
||||
if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED AND NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS " -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION}")
|
||||
endif()
|
||||
|
||||
|
@ -6,8 +6,6 @@ if(NOT ANDROID)
|
||||
endif()
|
||||
|
||||
foreach(f
|
||||
"${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX}"
|
||||
"${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}g++${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}"
|
||||
"${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ar${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}"
|
||||
"${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}"
|
||||
)
|
||||
@ -51,23 +49,26 @@ elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX}" -dumpmachine
|
||||
OUTPUT_VARIABLE _out OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_VARIABLE _err
|
||||
RESULT_VARIABLE _res
|
||||
)
|
||||
if(NOT _res EQUAL 0)
|
||||
message(SEND_ERROR "Failed to run 'gcc -dumpmachine':\n ${_res}")
|
||||
endif()
|
||||
string(REPLACE "--" "-" _out_check "${_out}")
|
||||
if(NOT _out_check STREQUAL "${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||
AND NOT (_out STREQUAL "arm--linux-android" AND CMAKE_C_ANDROID_TOOLCHAIN_MACHINE STREQUAL "arm-linux-androideabi"))
|
||||
message(SEND_ERROR "'gcc -dumpmachine' produced:\n"
|
||||
" ${_out}\n"
|
||||
"which does not match CMAKE_C_ANDROID_TOOLCHAIN_MACHINE:\n"
|
||||
" ${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||
set(gcc ${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX})
|
||||
if(EXISTS "${gcc}")
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX}" -dumpmachine
|
||||
OUTPUT_VARIABLE _out OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_VARIABLE _err
|
||||
RESULT_VARIABLE _res
|
||||
)
|
||||
if(NOT _res EQUAL 0)
|
||||
message(SEND_ERROR "Failed to run 'gcc -dumpmachine':\n ${_res}")
|
||||
endif()
|
||||
string(REPLACE "--" "-" _out_check "${_out}")
|
||||
if(NOT _out_check STREQUAL "${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||
AND NOT (_out STREQUAL "arm--linux-android" AND CMAKE_C_ANDROID_TOOLCHAIN_MACHINE STREQUAL "arm-linux-androideabi"))
|
||||
message(SEND_ERROR "'gcc -dumpmachine' produced:\n"
|
||||
" ${_out}\n"
|
||||
"which does not match CMAKE_C_ANDROID_TOOLCHAIN_MACHINE:\n"
|
||||
" ${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
|
||||
|
@ -1,2 +1,2 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'arm64', ABI 'arm64-v8a', and processor 'aarch64'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
|
@ -1,3 +1,3 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'arm', ABI 'armeabi', and processor 'armv5te'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
.*-- CMAKE_ANDROID_ARM_MODE=1
|
||||
|
@ -1,3 +1,3 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'arm', ABI 'armeabi-v7a', and processor 'armv7-a'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
.*-- CMAKE_ANDROID_ARM_NEON=1
|
||||
|
@ -1,3 +1,3 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'arm', ABI 'armeabi-v7a', and processor 'armv7-a'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
.*-- CMAKE_ANDROID_ARM_NEON=0
|
||||
|
@ -1,11 +1,12 @@
|
||||
^CMake Error at .*/Modules/Platform/Android/Determine-Compiler-NDK.cmake:[0-9]+ \(message\):
|
||||
Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value 'badver' is not one
|
||||
Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value 'badver' is not(
|
||||
supported by this NDK. It must be 'clang' or not set at all\.| one
|
||||
of the allowed forms:
|
||||
|
||||
<major>.<minor> = GCC of specified version
|
||||
clang<major>.<minor> = Clang of specified version
|
||||
clang = Clang of most recent available version
|
||||
|
||||
)
|
||||
Call Stack \(most recent call first\):
|
||||
.*
|
||||
ndk-badver.cmake:1 \(enable_language\)
|
||||
|
@ -1,4 +1,6 @@
|
||||
^CMake Error at .*/Modules/Platform/Android/Determine-Compiler-NDK.cmake:[0-9]+ \(message\):
|
||||
^CMake Error at .*/Modules/Platform/Android/Determine-Compiler-NDK.cmake:[0-9]+ \(message\):(
|
||||
Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '1.0' is not
|
||||
supported by this NDK. It must be 'clang' or not set at all.|
|
||||
Android: No toolchain for ABI 'armeabi(-v7a)?' found in the NDK:
|
||||
|
||||
.*
|
||||
@ -6,7 +8,7 @@
|
||||
of the version specified by CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION:
|
||||
|
||||
1\.0
|
||||
|
||||
)
|
||||
Call Stack \(most recent call first\):
|
||||
.*
|
||||
ndk-badvernum.cmake:1 \(enable_language\)
|
||||
|
@ -1,2 +1,2 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'mips', ABI 'mips', and processor 'mips'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
|
@ -1,2 +1,2 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'mips64', ABI 'mips64', and processor 'mips64'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
|
@ -1,2 +1,2 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'x86', ABI 'x86', and processor 'i686'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
|
@ -1,2 +1,2 @@
|
||||
-- Android: Targeting API '[0-9]+' with architecture 'x86_64', ABI 'x86_64', and processor 'x86_64'
|
||||
-- Android: Selected (Clang toolchain '[^']+' with )?GCC toolchain '[^']+'
|
||||
-- Android: Selected (unified Clang toolchain|(Clang toolchain '[^']+' with )?GCC toolchain '[^']+')
|
||||
|
Loading…
x
Reference in New Issue
Block a user