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