diff options
Diffstat (limited to 'share/cmake-3.18/Modules/Platform/Android-Common.cmake')
-rw-r--r-- | share/cmake-3.18/Modules/Platform/Android-Common.cmake | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/share/cmake-3.18/Modules/Platform/Android-Common.cmake b/share/cmake-3.18/Modules/Platform/Android-Common.cmake deleted file mode 100644 index 39da933..0000000 --- a/share/cmake-3.18/Modules/Platform/Android-Common.cmake +++ /dev/null @@ -1,230 +0,0 @@ -# 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_COMPILER_COMMON) - return() -endif() -set(__ANDROID_COMPILER_COMMON 1) - -if(CMAKE_ANDROID_NDK) - # <ndk>/build/core/definitions.mk - - set(_ANDROID_STL_TYPES - none - system - c++_static - c++_shared - gabi++_static - gabi++_shared - gnustl_static - gnustl_shared - stlport_static - stlport_shared - ) - - if(CMAKE_ANDROID_STL_TYPE) - list(FIND _ANDROID_STL_TYPES "${CMAKE_ANDROID_STL_TYPE}" _ANDROID_STL_TYPE_FOUND) - if(_ANDROID_STL_TYPE_FOUND EQUAL -1) - string(REPLACE ";" "\n " _msg ";${_ANDROID_STL_TYPES}") - message(FATAL_ERROR - "The CMAKE_ANDROID_STL_TYPE '${CMAKE_ANDROID_STL_TYPE}' is not one of the allowed values:${_msg}\n" - ) - endif() - unset(_ANDROID_STL_TYPE_FOUND) - elseif(IS_DIRECTORY ${CMAKE_ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++) - set(CMAKE_ANDROID_STL_TYPE "gnustl_static") - else() - set(CMAKE_ANDROID_STL_TYPE "c++_static") - endif() - - unset(_ANDROID_STL_TYPES) - - # Forward Android-specific platform variables to try_compile projects. - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - CMAKE_ANDROID_STL_TYPE - ) -endif() - -if(CMAKE_ANDROID_STL_TYPE) - 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++") - if(_ANDROID_STL_EXCEPTIONS OR _ANDROID_STL_RTTI) - string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -lc++abi") - if(CMAKE_SYSTEM_VERSION LESS 21) - list(APPEND CMAKE_${lang}_STANDARD_LIBRARIES "-landroid_support") - endif() - endif() - 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() - if(DEFINED CMAKE_ANDROID_RTTI) - set(_ANDROID_STL_RTTI ${CMAKE_ANDROID_RTTI}) - endif() - if(DEFINED CMAKE_ANDROID_EXCEPTIONS) - set(_ANDROID_STL_EXCEPTIONS ${CMAKE_ANDROID_EXCEPTIONS}) - endif() - elseif(CMAKE_ANDROID_NDK) - - macro(__android_stl_inc lang dir req) - if(EXISTS "${dir}") - list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${dir}") - elseif(${req}) - message(FATAL_ERROR - "Android: STL '${CMAKE_ANDROID_STL_TYPE}' include directory not found:\n" - " ${dir}" - ) - endif() - endmacro() - - macro(__android_stl_lib lang lib req) - if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi" AND NOT CMAKE_ANDROID_ARM_MODE) - get_filename_component(_ANDROID_STL_LIBDIR "${lib}" DIRECTORY) - get_filename_component(_ANDROID_STL_LIBNAME "${lib}" NAME) - set(_ANDROID_STL_LIBTHUMB "${_ANDROID_STL_LIBDIR}/thumb/${_ANDROID_STL_LIBNAME}") - unset(_ANDROID_STL_LIBDIR) - unset(_ANDROID_STL_LIBNAME) - else() - set(_ANDROID_STL_LIBTHUMB "") - endif() - - if(_ANDROID_STL_LIBTHUMB AND EXISTS "${_ANDROID_STL_LIBTHUMB}") - string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${_ANDROID_STL_LIBTHUMB}\"") - elseif(EXISTS "${lib}") - string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${lib}\"") - elseif(${req}) - message(FATAL_ERROR - "Android: STL '${CMAKE_ANDROID_STL_TYPE}' library file not found:\n" - " ${lib}" - ) - endif() - - unset(_ANDROID_STL_LIBTHUMB) - endmacro() - - include(Platform/Android/ndk-stl-${CMAKE_ANDROID_STL_TYPE}) - else() - macro(__android_stl lang) - endmacro() - endif() -else() - macro(__android_stl lang) - endmacro() -endif() - -# The NDK toolchain configuration files at: -# -# <ndk>/[build/core/]toolchains/*/setup.mk -# -# contain logic to set TARGET_CFLAGS and TARGET_LDFLAGS (and debug/release -# variants) to tell their build system what flags to pass for each ABI. -# We need to produce the same flags here to produce compatible binaries. -# We initialize these variables here and set them in the compiler-specific -# modules that include this one. Then we use them in the macro below when -# it is called. -set(_ANDROID_ABI_INIT_CFLAGS "") -set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "") -set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "") -set(_ANDROID_ABI_INIT_LDFLAGS "") -set(_ANDROID_ABI_INIT_EXE_LDFLAGS "") - -macro(__android_compiler_common lang) - if(_ANDROID_ABI_INIT_CFLAGS) - string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_ANDROID_ABI_INIT_CFLAGS}") - endif() - if(_ANDROID_ABI_INIT_CFLAGS_DEBUG) - string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " ${_ANDROID_ABI_INIT_CFLAGS_DEBUG}") - endif() - if(_ANDROID_ABI_INIT_CFLAGS_RELEASE) - string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}") - string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}") - string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}") - endif() - if(_ANDROID_ABI_INIT_LDFLAGS) - foreach(t EXE SHARED MODULE) - string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_LDFLAGS}") - endforeach() - endif() - if(_ANDROID_ABI_INIT_EXE_LDFLAGS) - string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_EXE_LDFLAGS}") - endif() - - if(DEFINED _ANDROID_STL_EXCEPTIONS) - if(_ANDROID_STL_EXCEPTIONS) - string(APPEND CMAKE_${lang}_FLAGS_INIT " -fexceptions") - else() - string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-exceptions") - endif() - endif() - - if("x${lang}" STREQUAL "xCXX" AND DEFINED _ANDROID_STL_RTTI) - if(_ANDROID_STL_RTTI) - string(APPEND CMAKE_${lang}_FLAGS_INIT " -frtti") - else() - string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-rtti") - endif() - endif() - - if("x${lang}" STREQUAL "xCXX") - __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 - # necessary so that Android API-version-specific headers are preferred - # over those in the toolchain's `include-fixed` directory (which cannot - # possibly match all versions). - # - # Do not do this for a standalone toolchain because it is already - # tied to a specific API version. - if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED) - if(CMAKE_SYSROOT_COMPILE) - set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}") - else() - set(_cmake_sysroot_compile "${CMAKE_SYSROOT}") - endif() - 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_TRIPLE}" - ) - else() - list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${_cmake_sysroot_compile}/usr/include") - endif() - unset(_cmake_sysroot_compile) - endif() -endmacro() |