Clang-FindBinUtils.cmake 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
  2. message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
  3. endif()
  4. # Ubuntu:
  5. # * /usr/bin/llvm-ar-9
  6. # * /usr/bin/llvm-ranlib-9
  7. string(REGEX MATCH "^([0-9]+)" __version_x
  8. "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
  9. # Debian:
  10. # * /usr/bin/llvm-ar-4.0
  11. # * /usr/bin/llvm-ranlib-4.0
  12. string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
  13. "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
  14. # Try to find tools in the same directory as Clang itself
  15. get_filename_component(__clang_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
  16. get_filename_component(__clang_hint_1 "${__clang_hint_1}" DIRECTORY)
  17. get_filename_component(__clang_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
  18. set(__clang_hints ${__clang_hint_1} ${__clang_hint_2})
  19. # http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html
  20. find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
  21. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x_y}"
  22. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x}"
  23. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar"
  24. HINTS ${__clang_hints}
  25. NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
  26. DOC "LLVM archiver"
  27. )
  28. mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
  29. # http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ranlib.1.html
  30. find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
  31. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x_y}"
  32. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x}"
  33. "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib"
  34. HINTS ${__clang_hints}
  35. NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
  36. DOC "Generate index for LLVM archive"
  37. )
  38. mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB)