void-packages/srcpkgs/clazy/patches/0001-Replace-Find-scripts-with-llvm-clang-provided-cmake-.patch
2025-03-14 23:31:56 +01:00

354 lines
13 KiB
Diff

--- clazy-1.12.orig/CMakeLists.txt 2024-06-30 21:33:30.000000000 +0200
+++ clazy-1.12/CMakeLists.txt 2024-08-04 17:17:37.878433212 +0200
@@ -22,9 +22,9 @@
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake)
if (NOT CLAZY_BUILD_WITH_CLANG)
- find_package(Clang 14.0 MODULE REQUIRED)
+ find_package(Clang CONFIG REQUIRED)
- if (CLANG_CLANG-CPP_LIB AND NOT APPLE)
+ if (TARGET clang-cpp AND NOT APPLE)
set(default_use_clang_cpp ON)
else()
set(default_use_clang_cpp OFF)
@@ -155,6 +155,7 @@
foreach(llvm_system_lib ${LLVM_SYSTEM_LIBS})
target_link_libraries(${name} ${llvm_system_lib})
endforeach()
+ target_link_libraries(${name} LLVM)
if(WIN32)
target_link_libraries(${name} version.lib)
--- a/cmake/FindClang.cmake 2024-12-28 11:58:36.000000000 +0100
+++ /dev/null 2024-11-12 21:28:07.498058254 +0100
@@ -1,124 +0,0 @@
-# Detect Clang libraries
-#
-# Defines the following variables:
-# CLANG_FOUND - True if Clang was found
-# CLANG_INCLUDE_DIRS - Where to find Clang includes
-# CLANG_LIBRARY_DIRS - Where to find Clang libraries
-#
-# CLANG_LIBCLANG_LIB - Libclang C library
-#
-# CLANG_CLANGFRONTEND_LIB - Clang Frontend (C++) Library
-# CLANG_CLANGDRIVER_LIB - Clang Driver (C++) Library
-# ...
-#
-# CLANG_LIBS - All the Clang C++ libraries
-#
-# Uses the same include and library paths detected by FindLLVM.cmake
-#
-# See http://clang.llvm.org/docs/InternalsManual.html for full list of libraries
-
-#=============================================================================
-# SPDX-FileCopyrightText: 2014-2015 Kevin Funk <kfunk@kde.org>
-# SPDX-FileCopyrightText: 2024 Shivan Kunwar <shivam.kunwar@kdab.com>
-#
-# SPDX-License-Identifier: BSD-2-Clause
-#=============================================================================
-
-if (${Clang_FIND_REQUIRED})
- find_package(LLVM ${Clang_FIND_VERSION} REQUIRED)
-else ()
- find_package(LLVM ${Clang_FIND_VERSION})
-endif ()
-
-set(CLANG_FOUND FALSE)
-
-if (LLVM_FOUND AND LLVM_LIBRARY_DIRS)
- macro(FIND_AND_ADD_CLANG_LIB _libname_)
- string(TOUPPER ${_libname_} _prettylibname_)
- find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} HINTS ${LLVM_LIBRARY_DIRS})
- if(CLANG_${_prettylibname_}_LIB)
- set(CLANG_LIBS ${CLANG_LIBS} ${CLANG_${_prettylibname_}_LIB})
- endif()
- endmacro(FIND_AND_ADD_CLANG_LIB)
-
- # note: On Windows there's 'libclang.dll' instead of 'clang.dll' -> search for 'libclang', too
- find_library(CLANG_LIBCLANG_LIB NAMES clang libclang HINTS ${LLVM_LIBRARY_DIRS}) # LibClang: high-level C interface
-
- FIND_AND_ADD_CLANG_LIB(clang-cpp)
- FIND_AND_ADD_CLANG_LIB(clangFrontend)
- FIND_AND_ADD_CLANG_LIB(clangDriver)
- FIND_AND_ADD_CLANG_LIB(clangCodeGen)
- FIND_AND_ADD_CLANG_LIB(clangSema)
- FIND_AND_ADD_CLANG_LIB(clangAnalysis)
- FIND_AND_ADD_CLANG_LIB(clangRewriteFrontend)
- FIND_AND_ADD_CLANG_LIB(clangRewrite)
- FIND_AND_ADD_CLANG_LIB(clangAST)
- FIND_AND_ADD_CLANG_LIB(clangASTMatchers)
- FIND_AND_ADD_CLANG_LIB(clangParse)
- FIND_AND_ADD_CLANG_LIB(clangLex)
- FIND_AND_ADD_CLANG_LIB(clangBasic)
- FIND_AND_ADD_CLANG_LIB(clangARCMigrate)
- FIND_AND_ADD_CLANG_LIB(clangEdit)
- FIND_AND_ADD_CLANG_LIB(clangFrontendTool)
- FIND_AND_ADD_CLANG_LIB(clangSerialization)
- FIND_AND_ADD_CLANG_LIB(clangTooling)
- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCheckers)
- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerCore)
- FIND_AND_ADD_CLANG_LIB(clangStaticAnalyzerFrontend)
- FIND_AND_ADD_CLANG_LIB(clangAPINotes)
-
- if (LLVM_VERSION VERSION_GREATER_EQUAL "15.0")
- FIND_AND_ADD_CLANG_LIB(clangSupport)
- endif()
-
- # LLVM 19 specific libraries
- if (LLVM_VERSION VERSION_GREATER_EQUAL "19.0")
- FIND_AND_ADD_CLANG_LIB(clangASTMatchers)
- FIND_AND_ADD_CLANG_LIB(clangTransformer)
- FIND_AND_ADD_CLANG_LIB(clangToolingCore)
- FIND_AND_ADD_CLANG_LIB(clangToolingInclusions)
- FIND_AND_ADD_CLANG_LIB(clangToolingRefactoring)
- FIND_AND_ADD_CLANG_LIB(clangToolingSyntax)
- FIND_AND_ADD_CLANG_LIB(clangDependencyScanning)
- endif()
-endif()
-
-if(CLANG_LIBS OR CLANG_LIBCLANG_LIB OR CLANG_CLANG-CPP_LIB)
- set(CLANG_FOUND TRUE)
-else()
- message(STATUS "Could not find any Clang libraries in ${LLVM_LIBRARY_DIRS}")
-endif()
-
-if(CLANG_FOUND)
- set(CLANG_LIBRARY_DIRS ${LLVM_LIBRARY_DIRS})
- set(CLANG_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
-
- # check whether llvm-config comes from an install prefix
- set(LLVM_CONFIG_INCLUDE_FLAG "--src-root")
- if (${LLVM_VERSION} VERSION_GREATER_EQUAL 16)
- set(LLVM_CONFIG_INCLUDE_FLAG "--includedir")
- endif()
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} ${LLVM_CONFIG_INCLUDE_FLAG}
- OUTPUT_VARIABLE _llvmSourceRoot
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(FIND "${LLVM_INCLUDE_DIRS}" "${_llvmSourceRoot}" _llvmIsInstalled)
- if (NOT _llvmIsInstalled)
- message(STATUS "Detected that llvm-config comes from a build-tree, adding more include directories for Clang")
- list(APPEND CLANG_INCLUDE_DIRS
- "${LLVM_INSTALL_PREFIX}/tools/clang/include" # build dir
- "${_llvmSourceRoot}/../../clang/include" # source dir
- )
- endif()
-
- message(STATUS "Found Clang (LLVM version: ${LLVM_VERSION})")
- message(STATUS " Include dirs: ${CLANG_INCLUDE_DIRS}")
- message(STATUS " Clang libraries: ${CLANG_LIBS}")
- message(STATUS " Libclang C library: ${CLANG_LIBCLANG_LIB}")
- message(STATUS " Clang dynamic library: ${CLANG_CLANG-CPP_LIB}")
-else()
- if(Clang_FIND_REQUIRED)
- message(FATAL_ERROR "Could NOT find Clang")
- endif()
-endif()
--- a/cmake/FindLLVM.cmake 2024-12-28 11:58:36.000000000 +0100
+++ /dev/null 2024-11-12 21:28:07.498058254 +0100
@@ -1,202 +0,0 @@
-# Find the native LLVM includes and libraries
-#
-# Defines the following variables
-# LLVM_INCLUDE_DIRS - where to find llvm include files
-# LLVM_LIBRARY_DIRS - where to find llvm libs
-# LLVM_CFLAGS - llvm compiler flags
-# LLVM_LFLAGS - llvm linker flags
-# LLVM_MODULE_LIBS - list of llvm libs for working with modules.
-# LLVM_INSTALL_PREFIX - LLVM installation prefix
-# LLVM_FOUND - True if llvm found.
-# LLVM_VERSION - Version string ("llvm-config --version")
-#
-# This module reads hints about search locations from variables
-# LLVM_ROOT - Preferred LLVM installation prefix (containing bin/, lib/, ...)
-#
-# Note: One may specify these as environment variables if they are not specified as
-# CMake variables or cache entries.
-
-#=============================================================================
-# SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org>
-# SPDX-FileCopyrightText: 2024 Shivan Kunwar <shivam.kunwar@kdab.com>
-#
-# SPDX-License-Identifier: BSD-2-Clause
-#=============================================================================
-
-if (NOT LLVM_ROOT AND DEFINED ENV{LLVM_ROOT})
- file(TO_CMAKE_PATH "$ENV{LLVM_ROOT}" LLVM_ROOT)
-endif()
-
-# if the user specified LLVM_ROOT, use that and fail otherwise
-if (LLVM_ROOT)
- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config HINTS ${LLVM_ROOT}/bin DOC "llvm-config executable" NO_DEFAULT_PATH)
-else()
- # find llvm-config, prefer the one with a version suffix, e.g. llvm-config-14
- string(REPLACE "." "" LLVM_FIND_VERSION_CONCAT ${LLVM_FIND_VERSION})
- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config-${LLVM_FIND_VERSION} llvm-config${LLVM_FIND_VERSION_CONCAT} llvm-config-14 llvm-config-15 llvm-config-16 llvm-config-17 llvm-config-18 llvm-config-19 llvm-config DOC "llvm-config executable")
-
- if (NOT LLVM_CONFIG_EXECUTABLE)
- find_program(_llvmNmExecutable llvm-nm)
- if (_llvmNmExecutable)
- execute_process(COMMAND ${_llvmNmExecutable} --version OUTPUT_VARIABLE _out)
- string(REGEX REPLACE ".*LLVM version ([^ \n]+).*" "\\1" _versionString "${_out}")
- find_program(LLVM_CONFIG_EXECUTABLE NAMES llvm-config-${_versionString} DOC "llvm-config executable")
- endif()
- endif()
-endif()
-
-set(LLVM_FOUND FALSE)
-
-if (LLVM_CONFIG_EXECUTABLE)
- # verify that we've found the correct version of llvm-config
- execute_process(COMMAND ${LLVM_CONFIG_EXECUTABLE} --version
- OUTPUT_VARIABLE LLVM_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- if (NOT LLVM_VERSION)
- set(_LLVM_ERROR_MESSAGE "Failed to parse version from llvm-config")
- elseif (LLVM_VERSION VERSION_LESS "14.0")
- set(_LLVM_ERROR_MESSAGE "LLVM version too old: ${LLVM_VERSION}")
- else()
- set(LLVM_FOUND TRUE)
- endif()
-else()
- set(_LLVM_ERROR_MESSAGE "Could NOT find 'llvm-config' executable")
-endif()
-
-if (LLVM_FOUND)
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --includedir
- OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libdir
- OUTPUT_VARIABLE LLVM_LIBRARY_DIRS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --cppflags
- OUTPUT_VARIABLE LLVM_CFLAGS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --ldflags
- OUTPUT_VARIABLE LLVM_LFLAGS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libs core bitreader asmparser analysis
- OUTPUT_VARIABLE LLVM_MODULE_LIBS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libfiles
- OUTPUT_VARIABLE LLVM_LIBS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(REPLACE " " ";" LLVM_LIBS ${LLVM_LIBS})
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --system-libs
- OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --prefix
- OUTPUT_VARIABLE LLVM_INSTALL_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --bindir
- OUTPUT_VARIABLE LLVM_BIN_DIR
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- set(CLANG_EXECUTABLE_PATH "${LLVM_BIN_DIR}/clang")
- if(EXISTS ${CLANG_EXECUTABLE_PATH})
- message(STATUS "Clang found: ${CLANG_EXECUTABLE_PATH}")
- set(CLANG_EXECUTABLE ${CLANG_EXECUTABLE_PATH})
- else()
- message(WARNING "Clang not found in LLVM bin directory: ${LLVM_BIN_DIR}")
- endif()
-
- # potentially add include dir from binary dir for non-installed LLVM
- set(LLVM_CONFIG_INCLUDE_FLAG "--src-root")
- if (${LLVM_VERSION} VERSION_GREATER_EQUAL 16)
- set(LLVM_CONFIG_INCLUDE_FLAG "--includedir")
- endif()
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} ${LLVM_CONFIG_INCLUDE_FLAG}
- OUTPUT_VARIABLE _llvmSourceRoot
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(FIND "${LLVM_INCLUDE_DIRS}" "${_llvmSourceRoot}" _llvmIsInstalled)
- if (NOT _llvmIsInstalled)
- list(APPEND LLVM_INCLUDE_DIRS "${LLVM_INSTALL_PREFIX}/include")
- endif()
-
- # LLVM 19 specific handling
- if (LLVM_VERSION VERSION_GREATER_EQUAL "19.0")
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --libs all
- OUTPUT_VARIABLE LLVM_LIBS_19
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(REPLACE " " ";" LLVM_LIBS_19 ${LLVM_LIBS_19})
- list(APPEND LLVM_LIBS ${LLVM_LIBS_19})
- endif()
-endif()
-
-if (LLVM_FIND_REQUIRED AND NOT LLVM_FOUND)
- message(FATAL_ERROR "Could not find LLVM: ${_LLVM_ERROR_MESSAGE}")
-elseif(_LLVM_ERROR_MESSAGE)
- message(STATUS "Could not find LLVM: ${_LLVM_ERROR_MESSAGE}")
-endif()
-
-if (LLVM_FOUND)
- message(STATUS "Found LLVM (version: ${LLVM_VERSION}): (using ${LLVM_CONFIG_EXECUTABLE})")
- message(STATUS " Include dirs: ${LLVM_INCLUDE_DIRS}")
- message(STATUS " LLVM libraries: ${LLVM_LIBS}")
- message(STATUS " LLVM System libraries: ${LLVM_SYSTEM_LIBS}")
-
- if (LLVM_VERSION VERSION_GREATER_EQUAL "19.0")
- message(STATUS " LLVM 19+ detected, additional libraries may be available")
- endif()
-endif()
-
-execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --cxxflags
- OUTPUT_VARIABLE LLVM_DEFINITIONS
- OUTPUT_STRIP_TRAILING_WHITESPACE
-)
-string(REGEX REPLACE "[ \t]+" ";" LLVM_DEFINITIONS "${LLVM_DEFINITIONS}")
-
-if(LLVM_FIND_COMPONENTS)
- foreach(component ${LLVM_FIND_COMPONENTS})
- string(TOUPPER ${component} component_upcase)
- set(LLVM_${component_upcase}_FOUND TRUE)
- set(LLVM_${component_upcase}_LIBRARY ${component})
- endforeach()
-endif()
-
-if (LLVM_VERSION VERSION_GREATER_EQUAL "14.0")
- execute_process(
- COMMAND ${LLVM_CONFIG_EXECUTABLE} --has-rtti
- OUTPUT_VARIABLE LLVM_HAS_RTTI
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if (LLVM_HAS_RTTI)
- message(STATUS " LLVM built with RTTI: ${LLVM_HAS_RTTI}")
- endif()
-endif()
-
-set(LLVM_VERSION "${LLVM_VERSION}" CACHE STRING "LLVM version")
-
-mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIRS LLVM_CFLAGS LLVM_LFLAGS LLVM_MODULE_LIBS LLVM_LIBS LLVM_DEFINITIONS)