Files
airllm-fork-nodejs/node_modules/node-llama-cpp/llama/cmake/win32.llvmEnsureCmakeAr.cmake
2026-02-05 15:27:49 +08:00

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()