38 lines
1.4 KiB
CMake
38 lines
1.4 KiB
CMake
function(llvmEnsureCmakeAr CURRENT_ARCH)
|
|
set (LLVM_DIR_ARCH_NAME "")
|
|
if (CURRENT_ARCH STREQUAL "x64")
|
|
set (LLVM_DIR_ARCH_NAME "x64")
|
|
elseif (CURRENT_ARCH STREQUAL "arm64")
|
|
set (LLVM_DIR_ARCH_NAME "ARM64")
|
|
endif()
|
|
|
|
if (NOT DEFINED CMAKE_AR OR NOT EXISTS "${CMAKE_AR}")
|
|
set(LLVM_INSTALL_PATHS "")
|
|
foreach(PATH IN LISTS PROGRAMFILES_PATHS)
|
|
list(APPEND LLVM_INSTALL_PATHS "${PATH}/LLVM")
|
|
|
|
file(GLOB_RECURSE FOUND_LLVM_ROOT LIST_DIRECTORIES true
|
|
"${PATH}/Microsoft Visual Studio/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}"
|
|
"${PATH}/Microsoft Visual Studio/**/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}")
|
|
list(FILTER FOUND_LLVM_ROOT INCLUDE REGEX "VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}$")
|
|
|
|
if(FOUND_LLVM_ROOT)
|
|
list(APPEND LLVM_INSTALL_PATHS ${FOUND_LLVM_ROOT})
|
|
endif()
|
|
endforeach()
|
|
|
|
if(DEFINED LLVM_ROOT AND EXISTS "${LLVM_ROOT}")
|
|
list(INSERT LLVM_INSTALL_PATHS 0 "${LLVM_ROOT}")
|
|
endif()
|
|
|
|
list(REMOVE_DUPLICATES LLVM_INSTALL_PATHS)
|
|
|
|
foreach(PATH IN LISTS LLVM_INSTALL_PATHS)
|
|
if(EXISTS "${PATH}/bin/llvm-ar.exe" AND EXISTS "${PATH}/bin/llvm-ar.exe")
|
|
set(CMAKE_AR "${PATH}/bin/llvm-ar.exe" PARENT_SCOPE)
|
|
break()
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
endfunction()
|