Determine-Compiler-Standalone.cmake 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. set(_ANDROID_TOOL_C_COMPILER "")
  4. set(_ANDROID_TOOL_CXX_COMPILER "")
  5. set(_ANDROID_TOOL_PREFIX "")
  6. file(GLOB _gcc "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/*-gcc${_ANDROID_HOST_EXT}")
  7. foreach(gcc IN LISTS _gcc)
  8. if("${gcc}" MATCHES "/bin/([^/]*)gcc${_ANDROID_HOST_EXT}$")
  9. set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
  10. break()
  11. endif()
  12. endforeach()
  13. if(NOT _ANDROID_TOOL_PREFIX)
  14. message(FATAL_ERROR
  15. "Android: No '*-gcc' compiler found in CMAKE_ANDROID_STANDALONE_TOOLCHAIN:\n"
  16. " ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}"
  17. )
  18. endif()
  19. # Help CMakeFindBinUtils locate things.
  20. set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
  21. # _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
  22. string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
  23. execute_process(
  24. COMMAND "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}gcc${_ANDROID_HOST_EXT}" -dumpversion
  25. OUTPUT_VARIABLE _gcc_version
  26. ERROR_VARIABLE _gcc_error
  27. OUTPUT_STRIP_TRAILING_WHITESPACE
  28. )
  29. if(_gcc_version MATCHES "^([0-9]+\\.[0-9]+)")
  30. set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${CMAKE_MATCH_1}")
  31. else()
  32. message(FATAL_ERROR
  33. "Android: Failed to extract the standalone toolchain version. The command:\n"
  34. " '${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}gcc${_ANDROID_HOST_EXT}' '-dumpversion'\n"
  35. "produced output:\n"
  36. " ${_gcc_version}\n"
  37. )
  38. endif()
  39. set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}")
  40. set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
  41. set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
  42. set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
  43. set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
  44. set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
  45. if(EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang${_ANDROID_HOST_EXT}")
  46. set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang${_ANDROID_HOST_EXT}")
  47. set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}")
  48. set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang++${_ANDROID_HOST_EXT}")
  49. set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}")
  50. else()
  51. set(_ANDROID_TOOL_C_COMPILER "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}gcc${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
  52. set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
  53. set(_ANDROID_TOOL_CXX_COMPILER "${_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX}g++${_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX}")
  54. set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
  55. endif()
  56. set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
  57. set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")