From 2b6ab594358cead1b9b97c062715b5c313edc391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 17 Jan 2026 05:13:13 +0100 Subject: [PATCH] cmake: update to LLVM 22 closes https://codeberg.org/ziglang/zig/issues/30558 --- CMakeLists.txt | 6 +++--- build.zig | 22 +++++++++++++++------- cmake/Findclang.cmake | 22 +++++++++++++--------- cmake/Findlld.cmake | 38 +++++++++++++++++++------------------- cmake/Findllvm.cmake | 20 ++++++++++++-------- 5 files changed, 62 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6061b22354..579967a0a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,9 +133,9 @@ else() set(ZIG_SYSTEM_LIBCXX "stdc++" CACHE STRING "system libcxx name for build.zig") endif() -find_package(llvm 21) -find_package(clang 21) -find_package(lld 21) +find_package(llvm 22) +find_package(clang 22) +find_package(lld 22) if(ZIG_STATIC_ZLIB) if (MSVC) diff --git a/build.zig b/build.zig index 726ef37d8c..3dd06c01da 100644 --- a/build.zig +++ b/build.zig @@ -1207,13 +1207,16 @@ const zig_cpp_sources = [_][]const u8{ const clang_libs = [_][]const u8{ "clangFrontendTool", "clangCodeGen", - "clangFrontend", - "clangDriver", - "clangSerialization", - "clangSema", "clangStaticAnalyzerFrontend", "clangStaticAnalyzerCheckers", "clangStaticAnalyzerCore", + "clangCrossTU", + "clangFrontend", + "clangDriver", + "clangOptions", + "clangSerialization", + "clangSema", + "clangAnalysisLifetimeSafety", "clangAnalysis", "clangASTMatchers", "clangAST", @@ -1225,8 +1228,9 @@ const clang_libs = [_][]const u8{ "clangLex", "clangRewriteFrontend", "clangRewrite", - "clangCrossTU", "clangIndex", + "clangFormat", + "clangToolingInclusions", "clangToolingCore", "clangExtractAPI", "clangSupport", @@ -1374,11 +1378,12 @@ const llvm_libs = [_][]const u8{ "LLVMObjCopy", "LLVMMCA", "LLVMMCDisassembler", + "LLVMDTLTO", "LLVMLTO", "LLVMFrontendOpenACC", - "LLVMFrontendHLSL", "LLVMFrontendDriver", "LLVMExtensions", + "LLVMPlugins", "LLVMPasses", "LLVMHipStdPar", "LLVMCoroutines", @@ -1405,6 +1410,7 @@ const llvm_libs = [_][]const u8{ "LLVMObjCARCOpts", "LLVMCodeGenTypes", "LLVMCGData", + "LLVMCAS", "LLVMIRPrinter", "LLVMInterfaceStub", "LLVMFileCheck", @@ -1423,15 +1429,17 @@ const llvm_libs = [_][]const u8{ "LLVMDebugInfoCodeView", "LLVMDebugInfoGSYM", "LLVMDebugInfoDWARF", - "LLVMDebugInfoDWARFLowLevel", "LLVMObject", "LLVMTextAPI", "LLVMMCParser", "LLVMIRReader", "LLVMAsmParser", "LLVMMC", + "LLVMDebugInfoDWARFLowLevel", "LLVMBitReader", + "LLVMFrontendHLSL", "LLVMFuzzerCLI", + "LLVMABI", "LLVMCore", "LLVMRemarks", "LLVMBitstreamReader", diff --git a/cmake/Findclang.cmake b/cmake/Findclang.cmake index 4b7363da9c..b34c9ce57f 100644 --- a/cmake/Findclang.cmake +++ b/cmake/Findclang.cmake @@ -17,10 +17,10 @@ find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h if(${LLVM_LINK_MODE} STREQUAL "shared") find_library(CLANG_LIBRARIES NAMES - libclang-cpp.so.21 - libclang-cpp.so.21.1 - clang-cpp-21.0 - clang-cpp210 + libclang-cpp.so.22 + libclang-cpp.so.22.1 + clang-cpp-22.0 + clang-cpp220 clang-cpp NAMES_PER_DIR HINTS "${LLVM_LIBDIRS}" @@ -44,13 +44,16 @@ else() FIND_AND_ADD_CLANG_LIB(clangFrontendTool) FIND_AND_ADD_CLANG_LIB(clangCodeGen) - FIND_AND_ADD_CLANG_LIB(clangFrontend) - FIND_AND_ADD_CLANG_LIB(clangDriver) - FIND_AND_ADD_CLANG_LIB(clangSerialization) - FIND_AND_ADD_CLANG_LIB(clangSema) FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend) FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers) FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore) + FIND_AND_ADD_CLANG_LIB(clangCrossTU) + FIND_AND_ADD_CLANG_LIB(clangFrontend) + FIND_AND_ADD_CLANG_LIB(clangDriver) + FIND_AND_ADD_CLANG_LIB(clangOptions) + FIND_AND_ADD_CLANG_LIB(clangSerialization) + FIND_AND_ADD_CLANG_LIB(clangSema) + FIND_AND_ADD_CLANG_LIB(clangAnalysisLifetimeSafety) FIND_AND_ADD_CLANG_LIB(clangAnalysis) FIND_AND_ADD_CLANG_LIB(clangASTMatchers) FIND_AND_ADD_CLANG_LIB(clangAST) @@ -62,8 +65,9 @@ else() FIND_AND_ADD_CLANG_LIB(clangLex) FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend) FIND_AND_ADD_CLANG_LIB(clangRewrite) - FIND_AND_ADD_CLANG_LIB(clangCrossTU) FIND_AND_ADD_CLANG_LIB(clangIndex) + FIND_AND_ADD_CLANG_LIB(clangFormat) + FIND_AND_ADD_CLANG_LIB(clangToolingInclusions) FIND_AND_ADD_CLANG_LIB(clangToolingCore) FIND_AND_ADD_CLANG_LIB(clangExtractAPI) FIND_AND_ADD_CLANG_LIB(clangSupport) diff --git a/cmake/Findlld.cmake b/cmake/Findlld.cmake index 61cf1cd883..5a6e6f4680 100644 --- a/cmake/Findlld.cmake +++ b/cmake/Findlld.cmake @@ -9,23 +9,23 @@ find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h HINTS ${LLVM_INCLUDE_DIRS} PATHS - /usr/lib/llvm-21/include - /usr/local/llvm210/include - /usr/local/llvm21/include - /usr/local/opt/lld@21/include - /opt/homebrew/opt/lld@21/include - /home/linuxbrew/.linuxbrew/opt/lld@21/include + /usr/lib/llvm-22/include + /usr/local/llvm220/include + /usr/local/llvm22/include + /usr/local/opt/lld@22/include + /opt/homebrew/opt/lld@22/include + /home/linuxbrew/.linuxbrew/opt/lld@22/include /mingw64/include) -find_library(LLD_LIBRARY NAMES lld-21.0 lld210 lld NAMES_PER_DIR +find_library(LLD_LIBRARY NAMES lld-22.0 lld220 lld NAMES_PER_DIR HINTS ${LLVM_LIBDIRS} PATHS - /usr/lib/llvm-21/lib - /usr/local/llvm210/lib - /usr/local/llvm21/lib - /usr/local/opt/lld@21/lib - /opt/homebrew/opt/lld@21/lib - /home/linuxbrew/.linuxbrew/opt/lld@21/lib + /usr/lib/llvm-22/lib + /usr/local/llvm220/lib + /usr/local/llvm22/lib + /usr/local/opt/lld@22/lib + /opt/homebrew/opt/lld@22/lib + /home/linuxbrew/.linuxbrew/opt/lld@22/lib ) if(EXISTS ${LLD_LIBRARY}) set(LLD_LIBRARIES ${LLD_LIBRARY}) @@ -36,12 +36,12 @@ else() HINTS ${LLVM_LIBDIRS} PATHS ${LLD_LIBDIRS} - /usr/lib/llvm-21/lib - /usr/local/llvm210/lib - /usr/local/llvm21/lib - /usr/local/opt/lld@21/lib - /opt/homebrew/opt/lld@21/lib - /home/linuxbrew/.linuxbrew/opt/lld@21/lib + /usr/lib/llvm-22/lib + /usr/local/llvm220/lib + /usr/local/llvm22/lib + /usr/local/opt/lld@22/lib + /opt/homebrew/opt/lld@22/lib + /home/linuxbrew/.linuxbrew/opt/lld@22/lib /mingw64/lib /c/msys64/mingw64/lib c:/msys64/mingw64/lib) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index 0c08d4f0ac..7c3b347685 100644 --- a/cmake/Findllvm.cmake +++ b/cmake/Findllvm.cmake @@ -17,12 +17,12 @@ if(ZIG_USE_LLVM_CONFIG) # terminate when the right LLVM version is not found. unset(LLVM_CONFIG_EXE CACHE) find_program(LLVM_CONFIG_EXE - NAMES llvm-config-21 llvm-config-21.0 llvm-config210 llvm-config21 llvm-config NAMES_PER_DIR + NAMES llvm-config-22 llvm-config-22.0 llvm-config220 llvm-config22 llvm-config NAMES_PER_DIR PATHS "/mingw64/bin" "/c/msys64/mingw64/bin" "c:/msys64/mingw64/bin" - "C:/Libraries/llvm-21.0.0/bin") + "C:/Libraries/llvm-22.0.0/bin") if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "") @@ -40,9 +40,9 @@ if(ZIG_USE_LLVM_CONFIG) OUTPUT_STRIP_TRAILING_WHITESPACE) get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY) - if("${LLVM_CONFIG_VERSION}" VERSION_LESS 21 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 22 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 22) + if("${LLVM_CONFIG_VERSION}" VERSION_LESS 22 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 23 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 23) # Save the error message, in case this is the last llvm-config we find - list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 21.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 22.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}") # Ignore this directory and try the search again list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}") @@ -66,9 +66,9 @@ if(ZIG_USE_LLVM_CONFIG) if (LLVM_CONFIG_ERROR) # Save the error message, in case this is the last llvm-config we find if (ZIG_SHARED_LLVM) - list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 21.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 22.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library") else() - list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 21.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 22.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library") endif() # Ignore this directory and try the search again @@ -321,11 +321,12 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMObjCopy) FIND_AND_ADD_LLVM_LIB(LLVMMCA) FIND_AND_ADD_LLVM_LIB(LLVMMCDisassembler) + FIND_AND_ADD_LLVM_LIB(LLVMDTLTO) FIND_AND_ADD_LLVM_LIB(LLVMLTO) FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenACC) - FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL) FIND_AND_ADD_LLVM_LIB(LLVMFrontendDriver) FIND_AND_ADD_LLVM_LIB(LLVMExtensions) + FIND_AND_ADD_LLVM_LIB(LLVMPlugins) FIND_AND_ADD_LLVM_LIB(LLVMPasses) FIND_AND_ADD_LLVM_LIB(LLVMHipStdPar) FIND_AND_ADD_LLVM_LIB(LLVMCoroutines) @@ -352,6 +353,7 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts) FIND_AND_ADD_LLVM_LIB(LLVMCodeGenTypes) FIND_AND_ADD_LLVM_LIB(LLVMCGData) + FIND_AND_ADD_LLVM_LIB(LLVMCAS) FIND_AND_ADD_LLVM_LIB(LLVMIRPrinter) FIND_AND_ADD_LLVM_LIB(LLVMInterfaceStub) FIND_AND_ADD_LLVM_LIB(LLVMFileCheck) @@ -370,15 +372,17 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView) FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM) FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF) - FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARFLowLevel) FIND_AND_ADD_LLVM_LIB(LLVMObject) FIND_AND_ADD_LLVM_LIB(LLVMTextAPI) FIND_AND_ADD_LLVM_LIB(LLVMMCParser) FIND_AND_ADD_LLVM_LIB(LLVMIRReader) FIND_AND_ADD_LLVM_LIB(LLVMAsmParser) FIND_AND_ADD_LLVM_LIB(LLVMMC) + FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARFLowLevel) FIND_AND_ADD_LLVM_LIB(LLVMBitReader) + FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL) FIND_AND_ADD_LLVM_LIB(LLVMFuzzerCLI) + FIND_AND_ADD_LLVM_LIB(LLVMABI) FIND_AND_ADD_LLVM_LIB(LLVMCore) FIND_AND_ADD_LLVM_LIB(LLVMRemarks) FIND_AND_ADD_LLVM_LIB(LLVMBitstreamReader)