CMAKE_MINIMUM_REQUIRED(VERSION 3.7.1) FUNCTION(READ_REVISION _var _regex _file) IF(EXISTS "${_file}") FILE(READ "${_file}" content) STRING(REGEX MATCH "${_regex}" _unused "${content}") SET(${_var} ${CMAKE_MATCH_1} PARENT_SCOPE) ENDIF() ENDFUNCTION() IF(NOT CMAKE_ANDROID_NDK) SET(CMAKE_ANDROID_NDK $ENV{ANDROID_NDK}) ENDIF() SET(ANDROID_SDK $ENV{ANDROID_HOME}) SET(ANDROID_BUILD_TOOLS_REVISION $ENV{ANDROID_BUILD_TOOLS_REVISION}) IF(NOT EXISTS "${ANDROID_SDK}") MESSAGE(FATAL_ERROR "Environment variable ANDROID_HOME is undefined") ENDIF() IF(NOT ANDROID_BUILD_TOOLS_REVISION) SET(_android_build_tools_dir "${ANDROID_SDK}/build-tools") FILE(GLOB build_tools ${_android_build_tools_dir}/*) LIST(LENGTH build_tools build_tools_len) IF(NOT build_tools_len EQUAL 1) MESSAGE(FATAL_ERROR "Cannot determine ANDROID_BUILD_TOOLS_REVISION: ${_android_build_tools_dir}") ENDIF() GET_FILENAME_COMPONENT(ANDROID_BUILD_TOOLS_REVISION "${build_tools}" NAME) ENDIF() READ_REVISION(ANDROID_NDK_REVISION ".*Revision = ([0-9|\\.]+)" "${CMAKE_ANDROID_NDK}/source.properties") READ_REVISION(ANDROID_SDK_REVISION ".*Revision=([0-9|\\.]+)" "${ANDROID_SDK}/tools/source.properties") IF(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION AND ANDROID_NDK_REVISION VERSION_GREATER_EQUAL "11") SET(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang) ENDIF() SET(ANDROID_NDK_TOOLCHAIN_VERSION 4.9) SET(CMAKE_SYSTEM_NAME Android) SET(CMAKE_SYSTEM_VERSION 21) IF(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "clang") SET(CMAKE_ANDROID_STL_TYPE c++_shared) ELSE() SET(CMAKE_ANDROID_STL_TYPE gnustl_shared) ENDIF() IF(NOT CMAKE_ANDROID_ARCH_ABI) SET(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) ENDIF() OPTION(ANDROID_BUILD_AAR "Build AAR file instead of APK" OFF) SET(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} CACHE string "android find search path root") SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)