| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| # This module is shared by multiple languages; use include blocker. | |
| if(__ANDROID_DETERMINE_COMPILER) | |
| return() | |
| endif() | |
| set(__ANDROID_DETERMINE_COMPILER 1) | |
| # Include the NDK hook. | |
| # It can be used by NDK to inject necessary fixes for an earlier cmake. | |
| if(CMAKE_ANDROID_NDK) | |
| include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Determine-Compiler.cmake OPTIONAL) | |
| endif() | |
| # Support for NVIDIA Nsight Tegra Visual Studio Edition was previously | |
| # implemented in the CMake VS IDE generators. Avoid interfering with | |
| # that functionality for now. Later we may try to integrate this. | |
| if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android") | |
| macro(__android_determine_compiler lang) | |
| endmacro() | |
| return() | |
| endif() | |
| # Commonly used Android toolchain files that pre-date CMake upstream support | |
| # set CMAKE_SYSTEM_VERSION to 1. Avoid interfering with them. | |
| if(CMAKE_SYSTEM_VERSION EQUAL 1) | |
| macro(__android_determine_compiler lang) | |
| endmacro() | |
| return() | |
| endif() | |
| # Identify the host platform. | |
| if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") | |
| set(_ANDROID_HOST_EXT "") | |
| elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") | |
| set(_ANDROID_HOST_EXT "") | |
| elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") | |
| set(_ANDROID_HOST_EXT ".exe") | |
| elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android") | |
| # Natively compiling on an Android host doesn't use the NDK cross-compilation | |
| # tools. | |
| macro(__android_determine_compiler lang) | |
| # Do nothing | |
| endmacro() | |
| if(NOT CMAKE_CXX_COMPILER_NAMES) | |
| set(CMAKE_CXX_COMPILER_NAMES c++) | |
| endif() | |
| return() | |
| else() | |
| message(FATAL_ERROR "Android: Builds hosted on '${CMAKE_HOST_SYSTEM_NAME}' not supported.") | |
| endif() | |
| if(CMAKE_ANDROID_NDK) | |
| include(Platform/Android/Determine-Compiler-NDK) | |
| elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN) | |
| include(Platform/Android/Determine-Compiler-Standalone) | |
| else() | |
| set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "") | |
| set(_ANDROID_TOOL_C_COMPILER "") | |
| set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "") | |
| set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "") | |
| set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "") | |
| set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "") | |
| set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "") | |
| set(_ANDROID_TOOL_CXX_COMPILER "") | |
| set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "") | |
| set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "") | |
| set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "") | |
| set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "") | |
| set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "") | |
| endif() | |
| unset(_ANDROID_HOST_EXT) | |
| macro(__android_determine_compiler lang) | |
| if(_ANDROID_TOOL_${lang}_COMPILER) | |
| set(CMAKE_${lang}_COMPILER "${_ANDROID_TOOL_${lang}_COMPILER}") | |
| set(CMAKE_${lang}_COMPILER_EXTERNAL_TOOLCHAIN "${_ANDROID_TOOL_${lang}_COMPILER_EXTERNAL_TOOLCHAIN}") | |
| # Save the Android-specific information in CMake${lang}Compiler.cmake. | |
| set(CMAKE_${lang}_COMPILER_CUSTOM_CODE " | |
| 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}\") | |
| set(CMAKE_${lang}_COMPILER_EXTERNAL_TOOLCHAIN \"${_ANDROID_TOOL_${lang}_COMPILER_EXTERNAL_TOOLCHAIN}\") | |
| set(CMAKE_${lang}_ANDROID_TOOLCHAIN_PREFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_PREFIX}\") | |
| set(CMAKE_${lang}_ANDROID_TOOLCHAIN_SUFFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_SUFFIX}\") | |
| ") | |
| endif() | |
| endmacro() | |
| # Include the NDK hook. | |
| # It can be used by NDK to inject necessary fixes for an earlier cmake. | |
| if(CMAKE_ANDROID_NDK) | |
| include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Determine-Compiler.cmake OPTIONAL) | |
| endif() |