45 lines
1.2 KiB
CMake
45 lines
1.2 KiB
CMake
function(use_llvm_toolchain)
|
|
if(CMAKE_C_COMPILER_ID STREQUAL Clang)
|
|
set(compiler "${CMAKE_C_COMPILER}")
|
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
set(compiler "${CMAKE_CXX_COMPILER}")
|
|
else()
|
|
return()
|
|
endif()
|
|
|
|
foreach(tool ar ranlib ld nm objdump as)
|
|
execute_process(
|
|
COMMAND "${compiler}" -print-prog-name=llvm-${tool}
|
|
OUTPUT_VARIABLE prog_path
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# for FreeBSD
|
|
if(NOT prog_path MATCHES "^/")
|
|
get_filename_component(
|
|
abs_path ${prog_path} ABSOLUTE
|
|
BASE_DIR /usr/local/llvm-devel/bin
|
|
)
|
|
|
|
if(EXISTS ${abs_path})
|
|
set(prog_path ${abs_path})
|
|
endif()
|
|
endif()
|
|
|
|
if(prog_path MATCHES "^/")
|
|
if(tool STREQUAL ld)
|
|
set(tool linker)
|
|
elseif(tool STREQUAL as)
|
|
set(tool asm_compiler)
|
|
endif()
|
|
|
|
string(TOUPPER ${tool} utool)
|
|
|
|
set(CMAKE_${utool} "${prog_path}" PARENT_SCOPE)
|
|
set(CMAKE_${utool} "${prog_path}" CACHE FILEPATH "${tool}" FORCE)
|
|
endif()
|
|
endforeach()
|
|
endfunction()
|
|
|
|
use_llvm_toolchain()
|