Commit 008affa645

Alex Rønne Petersen <alex@alexrp.com>
2025-07-16 04:41:14
build: update to LLVM 21
Closes #20966.
1 parent 558bea2
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.20
-      libclang-cpp.so.20.1
-      clang-cpp-20.0
-      clang-cpp200
+      libclang-cpp.so.21
+      libclang-cpp.so.21.1
+      clang-cpp-21.0
+      clang-cpp210
       clang-cpp
     NAMES_PER_DIR
     HINTS "${LLVM_LIBDIRS}"
@@ -60,7 +60,6 @@ else()
   FIND_AND_ADD_CLANG_LIB(clangBasic)
   FIND_AND_ADD_CLANG_LIB(clangEdit)
   FIND_AND_ADD_CLANG_LIB(clangLex)
-  FIND_AND_ADD_CLANG_LIB(clangARCMigrate)
   FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend)
   FIND_AND_ADD_CLANG_LIB(clangRewrite)
   FIND_AND_ADD_CLANG_LIB(clangCrossTU)
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-20/include
-        /usr/local/llvm200/include
-        /usr/local/llvm20/include
-        /usr/local/opt/lld@20/include
-        /opt/homebrew/opt/lld@20/include
-        /home/linuxbrew/.linuxbrew/opt/lld@20/include
+        /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
         /mingw64/include)
 
-find_library(LLD_LIBRARY NAMES lld-20.0 lld200 lld NAMES_PER_DIR
+find_library(LLD_LIBRARY NAMES lld-21.0 lld210 lld NAMES_PER_DIR
     HINTS ${LLVM_LIBDIRS}
     PATHS
-        /usr/lib/llvm-20/lib
-        /usr/local/llvm200/lib
-        /usr/local/llvm20/lib
-        /usr/local/opt/lld@20/lib
-        /opt/homebrew/opt/lld@20/lib
-        /home/linuxbrew/.linuxbrew/opt/lld@20/lib
+        /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
 )
 if(EXISTS ${LLD_LIBRARY})
     set(LLD_LIBRARIES ${LLD_LIBRARY})
@@ -36,12 +36,12 @@ else()
             HINTS ${LLVM_LIBDIRS}
             PATHS
                 ${LLD_LIBDIRS}
-                /usr/lib/llvm-20/lib
-                /usr/local/llvm200/lib
-                /usr/local/llvm20/lib
-                /usr/local/opt/lld@20/lib
-                /opt/homebrew/opt/lld@20/lib
-                /home/linuxbrew/.linuxbrew/opt/lld@20/lib
+                /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
                 /mingw64/lib
                 /c/msys64/mingw64/lib
                 c:/msys64/mingw64/lib)
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-20 llvm-config-20.0 llvm-config200 llvm-config20 llvm-config NAMES_PER_DIR
+        NAMES llvm-config-21 llvm-config-21.0 llvm-config210 llvm-config21 llvm-config NAMES_PER_DIR
         PATHS
             "/mingw64/bin"
             "/c/msys64/mingw64/bin"
             "c:/msys64/mingw64/bin"
-            "C:/Libraries/llvm-20.0.0/bin")
+            "C:/Libraries/llvm-21.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 20 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 21 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 21)
+    if("${LLVM_CONFIG_VERSION}" VERSION_LESS 21 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 22 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 22)
       # Save the error message, in case this is the last llvm-config we find
-      list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 20.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
+      list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 21.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 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library")
+          list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 21.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library")
         else()
-          list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library")
+          list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 21.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library")
         endif()
 
         # Ignore this directory and try the search again
@@ -315,30 +315,31 @@ else()
   FIND_AND_ADD_LLVM_LIB(LLVMOrcTargetProcess)
   FIND_AND_ADD_LLVM_LIB(LLVMOrcShared)
   FIND_AND_ADD_LLVM_LIB(LLVMDWP)
+  FIND_AND_ADD_LLVM_LIB(LLVMDWARFCFIChecker)
   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoLogicalView)
-  FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM)
   FIND_AND_ADD_LLVM_LIB(LLVMOption)
-  FIND_AND_ADD_LLVM_LIB(LLVMObjectYAML)
   FIND_AND_ADD_LLVM_LIB(LLVMObjCopy)
   FIND_AND_ADD_LLVM_LIB(LLVMMCA)
   FIND_AND_ADD_LLVM_LIB(LLVMMCDisassembler)
   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(LLVMPasses)
   FIND_AND_ADD_LLVM_LIB(LLVMHipStdPar)
-  FIND_AND_ADD_LLVM_LIB(LLVMCFGuard)
   FIND_AND_ADD_LLVM_LIB(LLVMCoroutines)
+  FIND_AND_ADD_LLVM_LIB(LLVMCFGuard)
   FIND_AND_ADD_LLVM_LIB(LLVMipo)
+  FIND_AND_ADD_LLVM_LIB(LLVMInstrumentation)
   FIND_AND_ADD_LLVM_LIB(LLVMVectorize)
   FIND_AND_ADD_LLVM_LIB(LLVMSandboxIR)
   FIND_AND_ADD_LLVM_LIB(LLVMLinker)
-  FIND_AND_ADD_LLVM_LIB(LLVMInstrumentation)
   FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenMP)
-  FIND_AND_ADD_LLVM_LIB(LLVMFrontendOffloading)
-  FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenACC)
-  FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL)
-  FIND_AND_ADD_LLVM_LIB(LLVMFrontendDriver)
+  FIND_AND_ADD_LLVM_LIB(LLVMFrontendDirective)
   FIND_AND_ADD_LLVM_LIB(LLVMFrontendAtomic)
-  FIND_AND_ADD_LLVM_LIB(LLVMExtensions)
+  FIND_AND_ADD_LLVM_LIB(LLVMFrontendOffloading)
+  FIND_AND_ADD_LLVM_LIB(LLVMObjectYAML)
   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerParallel)
   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerClassic)
   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinker)
@@ -367,7 +368,9 @@ else()
   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB)
   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF)
   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)
build.zig
@@ -1176,7 +1176,6 @@ const clang_libs = [_][]const u8{
     "clangBasic",
     "clangEdit",
     "clangLex",
-    "clangARCMigrate",
     "clangRewriteFrontend",
     "clangRewrite",
     "clangCrossTU",
@@ -1322,30 +1321,31 @@ const llvm_libs = [_][]const u8{
     "LLVMOrcTargetProcess",
     "LLVMOrcShared",
     "LLVMDWP",
+    "LLVMDWARFCFIChecker",
     "LLVMDebugInfoLogicalView",
-    "LLVMDebugInfoGSYM",
     "LLVMOption",
-    "LLVMObjectYAML",
     "LLVMObjCopy",
     "LLVMMCA",
     "LLVMMCDisassembler",
     "LLVMLTO",
+    "LLVMFrontendOpenACC",
+    "LLVMFrontendHLSL",
+    "LLVMFrontendDriver",
+    "LLVMExtensions",
     "LLVMPasses",
     "LLVMHipStdPar",
-    "LLVMCFGuard",
     "LLVMCoroutines",
+    "LLVMCFGuard",
     "LLVMipo",
+    "LLVMInstrumentation",
     "LLVMVectorize",
     "LLVMSandboxIR",
     "LLVMLinker",
-    "LLVMInstrumentation",
     "LLVMFrontendOpenMP",
-    "LLVMFrontendOffloading",
-    "LLVMFrontendOpenACC",
-    "LLVMFrontendHLSL",
-    "LLVMFrontendDriver",
+    "LLVMFrontendDirective",
     "LLVMFrontendAtomic",
-    "LLVMExtensions",
+    "LLVMFrontendOffloading",
+    "LLVMObjectYAML",
     "LLVMDWARFLinkerParallel",
     "LLVMDWARFLinkerClassic",
     "LLVMDWARFLinker",
@@ -1374,7 +1374,9 @@ const llvm_libs = [_][]const u8{
     "LLVMDebugInfoPDB",
     "LLVMDebugInfoMSF",
     "LLVMDebugInfoCodeView",
+    "LLVMDebugInfoGSYM",
     "LLVMDebugInfoDWARF",
+    "LLVMDebugInfoDWARFLowLevel",
     "LLVMObject",
     "LLVMTextAPI",
     "LLVMMCParser",
CMakeLists.txt
@@ -133,9 +133,9 @@ else()
     set(ZIG_SYSTEM_LIBCXX "stdc++" CACHE STRING "system libcxx name for build.zig")
 endif()
 
-find_package(llvm 20)
-find_package(clang 20)
-find_package(lld 20)
+find_package(llvm 21)
+find_package(clang 21)
+find_package(lld 21)
 
 if(ZIG_STATIC_ZLIB)
     if (MSVC)