From c712f18d7421b04f12a90841bbda5d6336f2286b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 5 Feb 2025 10:15:15 +0100 Subject: [PATCH] build: Update to LLVM/Clang 20. --- CMakeLists.txt | 6 +++--- build.zig | 12 +++++++++--- cmake/Findclang.cmake | 8 ++++---- cmake/Findlld.cmake | 32 ++++++++++++++++---------------- cmake/Findllvm.cmake | 24 +++++++++++++++--------- 5 files changed, 47 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea25212fec..e692027173 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,9 +132,9 @@ else() set(ZIG_SYSTEM_LIBCXX "stdc++" CACHE STRING "system libcxx name for build.zig") endif() -find_package(llvm 19) -find_package(clang 19) -find_package(lld 19) +find_package(llvm 20) +find_package(clang 20) +find_package(lld 20) if(ZIG_STATIC_ZLIB) if (MSVC) diff --git a/build.zig b/build.zig index 375cb6df09..1f9dde0b29 100644 --- a/build.zig +++ b/build.zig @@ -1166,10 +1166,10 @@ const llvm_libs = [_][]const u8{ "LLVMXRay", "LLVMLibDriver", "LLVMDlltoolDriver", + "LLVMTelemetry", "LLVMTextAPIBinaryReader", "LLVMCoverage", "LLVMLineEditor", - "LLVMSandboxIR", "LLVMXCoreDisassembler", "LLVMXCoreCodeGen", "LLVMXCoreDesc", @@ -1196,6 +1196,10 @@ const llvm_libs = [_][]const u8{ "LLVMSystemZCodeGen", "LLVMSystemZDesc", "LLVMSystemZInfo", + "LLVMSPIRVCodeGen", + "LLVMSPIRVDesc", + "LLVMSPIRVInfo", + "LLVMSPIRVAnalysis", "LLVMSparcDisassembler", "LLVMSparcAsmParser", "LLVMSparcCodeGen", @@ -1294,6 +1298,7 @@ const llvm_libs = [_][]const u8{ "LLVMCoroutines", "LLVMipo", "LLVMVectorize", + "LLVMSandboxIR", "LLVMLinker", "LLVMInstrumentation", "LLVMFrontendOpenMP", @@ -1301,11 +1306,11 @@ const llvm_libs = [_][]const u8{ "LLVMFrontendOpenACC", "LLVMFrontendHLSL", "LLVMFrontendDriver", + "LLVMFrontendAtomic", "LLVMExtensions", "LLVMDWARFLinkerParallel", "LLVMDWARFLinkerClassic", "LLVMDWARFLinker", - "LLVMCodeGenData", "LLVMGlobalISel", "LLVMMIRParser", "LLVMAsmPrinter", @@ -1314,6 +1319,7 @@ const llvm_libs = [_][]const u8{ "LLVMTarget", "LLVMObjCARCOpts", "LLVMCodeGenTypes", + "LLVMCGData", "LLVMIRPrinter", "LLVMInterfaceStub", "LLVMFileCheck", @@ -1329,6 +1335,7 @@ const llvm_libs = [_][]const u8{ "LLVMDebugInfoBTF", "LLVMDebugInfoPDB", "LLVMDebugInfoMSF", + "LLVMDebugInfoCodeView", "LLVMDebugInfoDWARF", "LLVMObject", "LLVMTextAPI", @@ -1336,7 +1343,6 @@ const llvm_libs = [_][]const u8{ "LLVMIRReader", "LLVMAsmParser", "LLVMMC", - "LLVMDebugInfoCodeView", "LLVMBitReader", "LLVMFuzzerCLI", "LLVMCore", diff --git a/cmake/Findclang.cmake b/cmake/Findclang.cmake index a95a8c903b..e47d9a0b48 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.19 - libclang-cpp.so.19.1 - clang-cpp-19.0 - clang-cpp190 + libclang-cpp.so.20 + libclang-cpp.so.20.1 + clang-cpp-20.0 + clang-cpp200 clang-cpp NAMES_PER_DIR HINTS "${LLVM_LIBDIRS}" diff --git a/cmake/Findlld.cmake b/cmake/Findlld.cmake index c3de9d4117..a16ab1bb7b 100644 --- a/cmake/Findlld.cmake +++ b/cmake/Findlld.cmake @@ -9,21 +9,21 @@ find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h HINTS ${LLVM_INCLUDE_DIRS} PATHS - /usr/lib/llvm-19/include - /usr/local/llvm190/include - /usr/local/llvm19/include - /usr/local/opt/lld@19/include - /opt/homebrew/opt/lld@19/include + /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 /mingw64/include) -find_library(LLD_LIBRARY NAMES lld-19.0 lld190 lld NAMES_PER_DIR +find_library(LLD_LIBRARY NAMES lld-20.0 lld200 lld NAMES_PER_DIR HINTS ${LLVM_LIBDIRS} PATHS - /usr/lib/llvm-19/lib - /usr/local/llvm190/lib - /usr/local/llvm19/lib - /usr/local/opt/lld@19/lib - /opt/homebrew/opt/lld@19/lib + /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 ) if(EXISTS ${LLD_LIBRARY}) set(LLD_LIBRARIES ${LLD_LIBRARY}) @@ -34,11 +34,11 @@ else() HINTS ${LLVM_LIBDIRS} PATHS ${LLD_LIBDIRS} - /usr/lib/llvm-19/lib - /usr/local/llvm190/lib - /usr/local/llvm19/lib - /usr/local/opt/lld@19/lib - /opt/homebrew/opt/lld@19/lib + /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 /mingw64/lib /c/msys64/mingw64/lib c:/msys64/mingw64/lib) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index 5bc874ec42..5ff5de869c 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-19 llvm-config-19.0 llvm-config190 llvm-config19 llvm-config NAMES_PER_DIR + NAMES llvm-config-20 llvm-config-20.0 llvm-config200 llvm-config20 llvm-config NAMES_PER_DIR PATHS "/mingw64/bin" "/c/msys64/mingw64/bin" "c:/msys64/mingw64/bin" - "C:/Libraries/llvm-19.0.0/bin") + "C:/Libraries/llvm-20.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 19 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 20 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 20) + if("${LLVM_CONFIG_VERSION}" VERSION_LESS 20 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 21 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 21) # Save the error message, in case this is the last llvm-config we find - list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 19.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 20.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 19.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library") else() - list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 19.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library") + list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library") endif() # Ignore this directory and try the search again @@ -197,10 +197,10 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMXRay) FIND_AND_ADD_LLVM_LIB(LLVMLibDriver) FIND_AND_ADD_LLVM_LIB(LLVMDlltoolDriver) + FIND_AND_ADD_LLVM_LIB(LLVMTelemetry) FIND_AND_ADD_LLVM_LIB(LLVMTextAPIBinaryReader) FIND_AND_ADD_LLVM_LIB(LLVMCoverage) FIND_AND_ADD_LLVM_LIB(LLVMLineEditor) - FIND_AND_ADD_LLVM_LIB(LLVMSandboxIR) FIND_AND_ADD_LLVM_LIB(LLVMXCoreDisassembler) FIND_AND_ADD_LLVM_LIB(LLVMXCoreCodeGen) FIND_AND_ADD_LLVM_LIB(LLVMXCoreDesc) @@ -227,6 +227,10 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMSystemZCodeGen) FIND_AND_ADD_LLVM_LIB(LLVMSystemZDesc) FIND_AND_ADD_LLVM_LIB(LLVMSystemZInfo) + FIND_AND_ADD_LLVM_LIB(LLVMSPIRVCodeGen) + FIND_AND_ADD_LLVM_LIB(LLVMSPIRVDesc) + FIND_AND_ADD_LLVM_LIB(LLVMSPIRVInfo) + FIND_AND_ADD_LLVM_LIB(LLVMSPIRVAnalysis) FIND_AND_ADD_LLVM_LIB(LLVMSparcDisassembler) FIND_AND_ADD_LLVM_LIB(LLVMSparcAsmParser) FIND_AND_ADD_LLVM_LIB(LLVMSparcCodeGen) @@ -325,6 +329,7 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMCoroutines) FIND_AND_ADD_LLVM_LIB(LLVMipo) 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) @@ -332,11 +337,11 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenACC) FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL) FIND_AND_ADD_LLVM_LIB(LLVMFrontendDriver) + FIND_AND_ADD_LLVM_LIB(LLVMFrontendAtomic) FIND_AND_ADD_LLVM_LIB(LLVMExtensions) FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerParallel) FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerClassic) FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinker) - FIND_AND_ADD_LLVM_LIB(LLVMCodeGenData) FIND_AND_ADD_LLVM_LIB(LLVMGlobalISel) FIND_AND_ADD_LLVM_LIB(LLVMMIRParser) FIND_AND_ADD_LLVM_LIB(LLVMAsmPrinter) @@ -345,6 +350,7 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMTarget) FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts) FIND_AND_ADD_LLVM_LIB(LLVMCodeGenTypes) + FIND_AND_ADD_LLVM_LIB(LLVMCGData) FIND_AND_ADD_LLVM_LIB(LLVMIRPrinter) FIND_AND_ADD_LLVM_LIB(LLVMInterfaceStub) FIND_AND_ADD_LLVM_LIB(LLVMFileCheck) @@ -360,6 +366,7 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoBTF) FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB) FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF) + FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView) FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF) FIND_AND_ADD_LLVM_LIB(LLVMObject) FIND_AND_ADD_LLVM_LIB(LLVMTextAPI) @@ -367,7 +374,6 @@ else() FIND_AND_ADD_LLVM_LIB(LLVMIRReader) FIND_AND_ADD_LLVM_LIB(LLVMAsmParser) FIND_AND_ADD_LLVM_LIB(LLVMMC) - FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView) FIND_AND_ADD_LLVM_LIB(LLVMBitReader) FIND_AND_ADD_LLVM_LIB(LLVMFuzzerCLI) FIND_AND_ADD_LLVM_LIB(LLVMCore)