mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Android: Select NDK host tag while determining system
The host tag is tied to the host platform and does not depend on any specific language or compiler.
This commit is contained in:
@@ -198,6 +198,33 @@ 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()
|
||||
else()
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
endif()
|
||||
|
||||
# https://developer.android.com/ndk/guides/abis.html
|
||||
|
||||
set(_ANDROID_ABI_arm64-v8a_PROC "aarch64")
|
||||
@@ -342,6 +369,7 @@ 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"
|
||||
"set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\")\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -195,40 +195,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 +214,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 +243,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}\")
|
||||
|
||||
Reference in New Issue
Block a user