mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
68 lines
1.9 KiB
CMake
68 lines
1.9 KiB
CMake
include(Macros)
|
|
|
|
if(CMAKE_HOST_WIN32 OR CMAKE_HOST_APPLE)
|
|
set(DEFAULT_LLVM_VERSION "18.1.8")
|
|
else()
|
|
set(DEFAULT_LLVM_VERSION "16.0.6")
|
|
endif()
|
|
|
|
optionx(LLVM_VERSION STRING "The version of LLVM to use" DEFAULT ${DEFAULT_LLVM_VERSION})
|
|
parse_semver(${LLVM_VERSION} LLVM)
|
|
|
|
if(APPLE)
|
|
execute_process(
|
|
COMMAND brew --prefix llvm@${LLVM_VERSION_MAJOR}
|
|
OUTPUT_VARIABLE DEFAULT_LLVM_PREFIX
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
if(NOT DEFAULT_LLVM_PREFIX)
|
|
set(DEFAULT_LLVM_PREFIX /opt/homebrew/opt/llvm)
|
|
endif()
|
|
elseif(NOT WIN32)
|
|
set(DEFAULT_LLVM_PREFIX /usr/lib/llvm-${LLVM_VERSION_MAJOR})
|
|
else()
|
|
set(DEFAULT_LLVM_PREFIX /usr/lib)
|
|
endif()
|
|
|
|
optionx(LLVM_PREFIX FILEPATH "The path to the LLVM installation" DEFAULT ${DEFAULT_LLVM_PREFIX})
|
|
set(LLVM_PATH ${LLVM_PREFIX}/bin)
|
|
|
|
macro(find_llvm_command VARIABLE COMMAND)
|
|
find_command(
|
|
VARIABLE ${VARIABLE}
|
|
COMMAND ${COMMAND} ${COMMAND}-${LLVM_VERSION_MAJOR}
|
|
PATHS ${LLVM_PATH}
|
|
VERSION ${LLVM_VERSION}
|
|
)
|
|
list(APPEND CMAKE_ARGS -D${VARIABLE}=${${VARIABLE}})
|
|
endmacro()
|
|
|
|
macro(find_llvm_command_no_version VARIABLE COMMAND)
|
|
find_command(
|
|
VARIABLE ${VARIABLE}
|
|
COMMAND ${COMMAND} ${COMMAND}-${LLVM_VERSION_MAJOR}
|
|
PATHS ${LLVM_PATH}
|
|
REQUIRED ON
|
|
)
|
|
list(APPEND CMAKE_ARGS -D${VARIABLE}=${${VARIABLE}})
|
|
endmacro()
|
|
|
|
if(WIN32)
|
|
find_llvm_command(CMAKE_C_COMPILER clang-cl)
|
|
find_llvm_command(CMAKE_CXX_COMPILER clang-cl)
|
|
find_llvm_command_no_version(CMAKE_LINKER lld-link)
|
|
find_llvm_command_no_version(CMAKE_AR llvm-lib)
|
|
find_llvm_command_no_version(CMAKE_STRIP llvm-strip)
|
|
else()
|
|
find_llvm_command(CMAKE_C_COMPILER clang)
|
|
find_llvm_command(CMAKE_CXX_COMPILER clang++)
|
|
find_llvm_command(CMAKE_LINKER llvm-link)
|
|
find_llvm_command(CMAKE_AR llvm-ar)
|
|
find_llvm_command(CMAKE_STRIP llvm-strip)
|
|
find_llvm_command(CMAKE_RANLIB llvm-ranlib)
|
|
if(APPLE)
|
|
find_llvm_command(CMAKE_DSYMUTIL dsymutil)
|
|
endif()
|
|
endif()
|