summaryrefslogtreecommitdiff
path: root/share/cmake-3.18/Modules/Platform/Android-Common.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'share/cmake-3.18/Modules/Platform/Android-Common.cmake')
-rw-r--r--share/cmake-3.18/Modules/Platform/Android-Common.cmake230
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()