Compare commits

...

3 Commits

Author SHA1 Message Date
Ashcon Partovi
e283273a58 Fix? 2025-04-25 17:00:41 -07:00
Ashcon Partovi
0c09445322 No LLVM with Zig: 2025-04-25 12:01:17 -07:00
Ashcon Partovi
40e08d2d6d Better LLVM version safe-guards in CMake 2025-04-25 11:53:34 -07:00
3 changed files with 39 additions and 25 deletions

View File

@@ -399,7 +399,6 @@ function getBuildEnv(target, options) {
ENABLE_ASSERTIONS: release ? "OFF" : "ON",
ENABLE_LOGS: release ? "OFF" : "ON",
ABI: isMusl ? "musl" : undefined,
CMAKE_TLS_VERIFY: "0",
};
}
@@ -469,7 +468,10 @@ function getBuildZigStep(platform, options) {
agents: getZigAgent(platform, options),
retry: getRetry(),
cancel_on_build_failing: isMergeQueue(),
env: getBuildEnv(platform, options),
env: {
...getBuildEnv(platform, options),
ENABLE_LLVM: "OFF",
},
command: `bun run build:ci --target bun-zig --toolchain ${toolchain}`,
timeout_in_minutes: 35,
};

View File

@@ -190,7 +190,7 @@ endfunction()
# Check if a version satisfies a version range
# Arguments:
# version string - The version to check (e.g. "1.2.3")
# range string - The range to check against (e.g. ">=1.2.3")
# range string - The range to check against (e.g. ">=1.2.3" or "~1.2.3")
# variable string - The variable to store the result in
function(satisfies_range version range variable)
if(range STREQUAL "ignore")
@@ -204,14 +204,26 @@ function(satisfies_range version range variable)
if(NOT match)
return()
endif()
set(version ${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3})
set(version_major ${CMAKE_MATCH_1})
set(version_minor ${CMAKE_MATCH_2})
set(version_patch ${CMAKE_MATCH_3})
set(version ${version_major}.${version_minor}.${version_patch})
string(REGEX MATCH "(>=|<=|>|<)?([0-9]+)\\.([0-9]+)\\.([0-9]+)" match "${range}")
string(REGEX MATCH "(~|>=|<=|>|<)?([0-9]+)\\.([0-9]+)\\.([0-9]+)" match "${range}")
if(NOT match)
return()
endif()
set(comparator ${CMAKE_MATCH_1})
set(range ${CMAKE_MATCH_2}.${CMAKE_MATCH_3}.${CMAKE_MATCH_4})
set(range_major ${CMAKE_MATCH_2})
set(range_minor ${CMAKE_MATCH_3})
set(range_patch ${CMAKE_MATCH_4})
set(range ${range_major}.${range_minor}.${range_patch})
# If tilde comparator, check only if the major and minor versions match
if(comparator STREQUAL "~")
set(comparator "=")
set(version ${version_major}.${version_minor}.${range_patch})
endif()
if(comparator STREQUAL ">=")
set(comparator VERSION_GREATER_EQUAL)

View File

@@ -1,23 +1,13 @@
set(DEFAULT_ENABLE_LLVM ON)
# if target is bun-zig, set ENABLE_LLVM to OFF
if(TARGET bun-zig)
set(DEFAULT_ENABLE_LLVM OFF)
endif()
optionx(ENABLE_LLVM BOOL "If LLVM should be used for compilation" DEFAULT ${DEFAULT_ENABLE_LLVM})
optionx(ENABLE_LLVM BOOL "If LLVM should be used for compilation" DEFAULT ON)
if(NOT ENABLE_LLVM)
return()
endif()
set(DEFAULT_LLVM_VERSION "19.1.7")
optionx(LLVM_VERSION STRING "The version of LLVM to use" DEFAULT "19.1.7")
optionx(LLVM_VERSION STRING "The version of LLVM to use" DEFAULT ${DEFAULT_LLVM_VERSION})
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" USE_LLVM_VERSION ${LLVM_VERSION})
if(USE_LLVM_VERSION)
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" LLVM_VERSION_MATCH ${LLVM_VERSION})
if(LLVM_VERSION_MATCH)
set(LLVM_VERSION_MAJOR ${CMAKE_MATCH_1})
set(LLVM_VERSION_MINOR ${CMAKE_MATCH_2})
set(LLVM_VERSION_PATCH ${CMAKE_MATCH_3})
@@ -41,7 +31,7 @@ if(APPLE)
endif()
endif()
if(USE_LLVM_VERSION)
if(LLVM_VERSION_MATCH)
list(APPEND LLVM_PATHS ${HOMEBREW_PREFIX}/opt/llvm@${LLVM_VERSION_MAJOR}/bin)
endif()
@@ -51,7 +41,7 @@ endif()
if(UNIX)
list(APPEND LLVM_PATHS /usr/lib/llvm/bin)
if(USE_LLVM_VERSION)
if(LLVM_VERSION_MATCH)
list(APPEND LLVM_PATHS
/usr/lib/llvm-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}/bin
/usr/lib/llvm-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}/bin
@@ -64,7 +54,7 @@ endif()
macro(find_llvm_command variable command)
set(commands ${command})
if(USE_LLVM_VERSION)
if(LLVM_VERSION_MATCH)
list(APPEND commands
${command}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}
${command}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}
@@ -72,12 +62,22 @@ macro(find_llvm_command variable command)
)
endif()
# In CI, we want to make sure we're using an exact version of LLVM.
# Otherwise, it's okay if the patch version is different.
if(CI)
# FIXME: re-enable once we've updated build image
# set(LLVM_VERSION_REQUIREMENT "=${LLVM_VERSION}")
set(LLVM_VERSION_REQUIREMENT "~${LLVM_VERSION}")
else()
set(LLVM_VERSION_REQUIREMENT "~${LLVM_VERSION}")
endif()
find_command(
VARIABLE ${variable}
VERSION_VARIABLE LLVM_VERSION
COMMAND ${commands}
PATHS ${LLVM_PATHS}
VERSION >=${LLVM_VERSION_MAJOR}.1.0
VERSION ${LLVM_VERSION_REQUIREMENT}
)
list(APPEND CMAKE_ARGS -D${variable}=${${variable}})
endmacro()
@@ -85,7 +85,7 @@ endmacro()
macro(find_llvm_command_no_version variable command)
set(commands ${command})
if(USE_LLVM_VERSION)
if(LLVM_VERSION_MATCH)
list(APPEND commands
${command}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}
${command}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}