zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

Findllvm.cmake (15888B) - Raw


      1 # Copyright (c) 2014 Andrew Kelley
      2 # This file is MIT licensed.
      3 # See http://opensource.org/licenses/MIT
      4 
      5 # LLVM_FOUND
      6 # LLVM_INCLUDE_DIRS
      7 # LLVM_LIBRARIES
      8 # LLVM_LIBDIRS
      9 # LLVM_LINK_MODE
     10 
     11 
     12 if(ZIG_USE_LLVM_CONFIG)
     13   set(LLVM_CONFIG_ERROR_MESSAGES "")
     14   while(1)
     15     # If this variable is not unset, the same result is returned even though
     16     # the ignore list has changed, causing the configure process to not
     17     # terminate when the right LLVM version is not found.
     18     unset(LLVM_CONFIG_EXE CACHE)
     19     find_program(LLVM_CONFIG_EXE
     20         NAMES llvm-config-20 llvm-config-20.0 llvm-config200 llvm-config20 llvm-config NAMES_PER_DIR
     21         PATHS
     22             "/mingw64/bin"
     23             "/c/msys64/mingw64/bin"
     24             "c:/msys64/mingw64/bin"
     25             "C:/Libraries/llvm-20.0.0/bin")
     26 
     27     if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
     28       if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "")
     29         list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE)
     30         message(FATAL_ERROR ${LLVM_CONFIG_ERROR_MESSAGE})
     31       else()
     32         message(FATAL_ERROR "unable to find llvm-config")
     33       endif()
     34     endif()
     35 
     36     # Check that this LLVM is the right version
     37     execute_process(
     38       COMMAND ${LLVM_CONFIG_EXE} --version
     39       OUTPUT_VARIABLE LLVM_CONFIG_VERSION
     40       OUTPUT_STRIP_TRAILING_WHITESPACE)
     41 
     42     get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY)
     43     if("${LLVM_CONFIG_VERSION}" VERSION_LESS 20 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 21 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 21)
     44       # Save the error message, in case this is the last llvm-config we find
     45       list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 20.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
     46 
     47       # Ignore this directory and try the search again
     48       list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
     49       continue()
     50     endif()
     51 
     52     # Check that this LLVM supports linking as a shared/static library, if requested
     53     if (ZIG_SHARED_LLVM OR ZIG_STATIC_LLVM)
     54       if (ZIG_SHARED_LLVM)
     55         set(STATIC_OR_SHARED_LINK "--link-shared")
     56       elseif (ZIG_STATIC_LLVM)
     57         set(STATIC_OR_SHARED_LINK "--link-static")
     58       endif()
     59 
     60       execute_process(
     61         COMMAND ${LLVM_CONFIG_EXE} --libs ${STATIC_OR_SHARED_LINK}
     62         OUTPUT_QUIET
     63         ERROR_VARIABLE LLVM_CONFIG_ERROR
     64         ERROR_STRIP_TRAILING_WHITESPACE)
     65 
     66       if (LLVM_CONFIG_ERROR)
     67         # Save the error message, in case this is the last llvm-config we find
     68         if (ZIG_SHARED_LLVM)
     69           list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library")
     70         else()
     71           list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 20.x found at ${LLVM_CONFIG_EXE} does not support linking as a static library")
     72         endif()
     73 
     74         # Ignore this directory and try the search again
     75         list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
     76         continue()
     77       endif()
     78     endif()
     79 
     80     execute_process(
     81       COMMAND ${LLVM_CONFIG_EXE} --targets-built
     82         OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES
     83       OUTPUT_STRIP_TRAILING_WHITESPACE)
     84     string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}")
     85 
     86     set(ZIG_LLVM_REQUIRED_TARGETS "AArch64;AMDGPU;ARM;AVR;BPF;Hexagon;Lanai;Mips;MSP430;NVPTX;PowerPC;RISCV;Sparc;SystemZ;VE;WebAssembly;X86;XCore")
     87 
     88     set(ZIG_LLVM_REQUIRED_TARGETS_ENABLED TRUE)
     89     foreach(TARGET_NAME IN LISTS ZIG_LLVM_REQUIRED_TARGETS)
     90       list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index)
     91       if (${_index} EQUAL -1)
     92         # Save the error message, in case this is the last llvm-config we find
     93         list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM (according to ${LLVM_CONFIG_EXE}) is missing target ${TARGET_NAME}. Zig requires LLVM to be built with all default targets enabled.")
     94 
     95         # Ignore this directory and try the search again
     96         list(APPEND CMAKE_IGNORE_PATH "${LLVM_CONFIG_DIR}")
     97         set(ZIG_LLVM_REQUIRED_TARGETS_ENABLED FALSE)
     98         break()
     99       endif()
    100     endforeach()
    101     if (NOT ZIG_LLVM_REQUIRED_TARGETS_ENABLED)
    102       continue()
    103     endif()
    104 
    105     # Got it!
    106     break()
    107   endwhile()
    108 
    109   if(ZIG_SHARED_LLVM OR ZIG_STATIC_LLVM)
    110     execute_process(
    111         COMMAND ${LLVM_CONFIG_EXE} --libfiles ${STATIC_OR_SHARED_LINK}
    112         OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
    113         OUTPUT_STRIP_TRAILING_WHITESPACE)
    114     string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
    115 
    116     execute_process(
    117         COMMAND ${LLVM_CONFIG_EXE} --libdir ${STATIC_OR_SHARED_LINK}
    118         OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
    119         OUTPUT_STRIP_TRAILING_WHITESPACE)
    120     string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
    121 
    122     execute_process(
    123         COMMAND ${LLVM_CONFIG_EXE} --system-libs ${STATIC_OR_SHARED_LINK}
    124         OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
    125         OUTPUT_STRIP_TRAILING_WHITESPACE)
    126     string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
    127 
    128     execute_process(
    129       COMMAND ${LLVM_CONFIG_EXE} --shared-mode ${STATIC_OR_SHARED_LINK}
    130       OUTPUT_VARIABLE LLVM_LINK_MODE
    131       OUTPUT_STRIP_TRAILING_WHITESPACE)
    132   else()
    133     execute_process(
    134         COMMAND ${LLVM_CONFIG_EXE} --libs
    135         OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
    136         OUTPUT_STRIP_TRAILING_WHITESPACE)
    137     string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
    138 
    139     execute_process(
    140         COMMAND ${LLVM_CONFIG_EXE} --libdir
    141         OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
    142         OUTPUT_STRIP_TRAILING_WHITESPACE)
    143     string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
    144 
    145     execute_process(
    146         COMMAND ${LLVM_CONFIG_EXE} --system-libs
    147         OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
    148         OUTPUT_STRIP_TRAILING_WHITESPACE)
    149     string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
    150 
    151     execute_process(
    152       COMMAND ${LLVM_CONFIG_EXE} --shared-mode
    153       OUTPUT_VARIABLE LLVM_LINK_MODE
    154       OUTPUT_STRIP_TRAILING_WHITESPACE)
    155   endif()
    156 
    157   if (${LLVM_LINK_MODE} STREQUAL "shared")
    158     # We always ask for the system libs corresponding to static linking,
    159     # since on some distros LLD is only available as a static library
    160     # and we need these libraries to link it successfully
    161     execute_process(
    162         COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static
    163         OUTPUT_VARIABLE LLVM_STATIC_SYSTEM_LIBS_SPACES
    164         ERROR_QUIET # Some installations have no static libs, we just ignore the failure
    165         OUTPUT_STRIP_TRAILING_WHITESPACE)
    166     string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}")
    167 
    168     set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
    169   else()
    170     set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
    171   endif()
    172 
    173   execute_process(
    174       COMMAND ${LLVM_CONFIG_EXE} --includedir
    175       OUTPUT_VARIABLE LLVM_INCLUDE_DIRS_SPACES
    176       OUTPUT_STRIP_TRAILING_WHITESPACE)
    177   string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}")
    178 
    179   link_directories("${LLVM_LIBDIRS}")
    180 else()
    181   # Here we assume that we're cross compiling with Zig, of course. No reason
    182   # to support more complicated setups.
    183 
    184   macro(FIND_AND_ADD_LLVM_LIB _libname_)
    185     string(TOUPPER ${_libname_} _prettylibname_)
    186     find_library(LLVM_${_prettylibname_}_LIB
    187       NAMES ${_libname_} NAMES_PER_DIR)
    188     set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_${_prettylibname_}_LIB})
    189   endmacro(FIND_AND_ADD_LLVM_LIB)
    190 
    191   set(LLVM_LINK_MODE "static")
    192 
    193   # This list can be re-generated with `llvm-config --libfiles` and then
    194   # reformatting using your favorite text editor. Note we do not execute
    195   # `llvm-config` here because we are cross compiling.
    196   FIND_AND_ADD_LLVM_LIB(LLVMWindowsManifest)
    197   FIND_AND_ADD_LLVM_LIB(LLVMXRay)
    198   FIND_AND_ADD_LLVM_LIB(LLVMLibDriver)
    199   FIND_AND_ADD_LLVM_LIB(LLVMDlltoolDriver)
    200   FIND_AND_ADD_LLVM_LIB(LLVMTelemetry)
    201   FIND_AND_ADD_LLVM_LIB(LLVMTextAPIBinaryReader)
    202   FIND_AND_ADD_LLVM_LIB(LLVMCoverage)
    203   FIND_AND_ADD_LLVM_LIB(LLVMLineEditor)
    204   FIND_AND_ADD_LLVM_LIB(LLVMXCoreDisassembler)
    205   FIND_AND_ADD_LLVM_LIB(LLVMXCoreCodeGen)
    206   FIND_AND_ADD_LLVM_LIB(LLVMXCoreDesc)
    207   FIND_AND_ADD_LLVM_LIB(LLVMXCoreInfo)
    208   FIND_AND_ADD_LLVM_LIB(LLVMX86TargetMCA)
    209   FIND_AND_ADD_LLVM_LIB(LLVMX86Disassembler)
    210   FIND_AND_ADD_LLVM_LIB(LLVMX86AsmParser)
    211   FIND_AND_ADD_LLVM_LIB(LLVMX86CodeGen)
    212   FIND_AND_ADD_LLVM_LIB(LLVMX86Desc)
    213   FIND_AND_ADD_LLVM_LIB(LLVMX86Info)
    214   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyDisassembler)
    215   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyAsmParser)
    216   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyCodeGen)
    217   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyUtils)
    218   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyDesc)
    219   FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyInfo)
    220   FIND_AND_ADD_LLVM_LIB(LLVMVEDisassembler)
    221   FIND_AND_ADD_LLVM_LIB(LLVMVEAsmParser)
    222   FIND_AND_ADD_LLVM_LIB(LLVMVECodeGen)
    223   FIND_AND_ADD_LLVM_LIB(LLVMVEDesc)
    224   FIND_AND_ADD_LLVM_LIB(LLVMVEInfo)
    225   FIND_AND_ADD_LLVM_LIB(LLVMSystemZDisassembler)
    226   FIND_AND_ADD_LLVM_LIB(LLVMSystemZAsmParser)
    227   FIND_AND_ADD_LLVM_LIB(LLVMSystemZCodeGen)
    228   FIND_AND_ADD_LLVM_LIB(LLVMSystemZDesc)
    229   FIND_AND_ADD_LLVM_LIB(LLVMSystemZInfo)
    230   FIND_AND_ADD_LLVM_LIB(LLVMSPIRVCodeGen)
    231   FIND_AND_ADD_LLVM_LIB(LLVMSPIRVDesc)
    232   FIND_AND_ADD_LLVM_LIB(LLVMSPIRVInfo)
    233   FIND_AND_ADD_LLVM_LIB(LLVMSPIRVAnalysis)
    234   FIND_AND_ADD_LLVM_LIB(LLVMSparcDisassembler)
    235   FIND_AND_ADD_LLVM_LIB(LLVMSparcAsmParser)
    236   FIND_AND_ADD_LLVM_LIB(LLVMSparcCodeGen)
    237   FIND_AND_ADD_LLVM_LIB(LLVMSparcDesc)
    238   FIND_AND_ADD_LLVM_LIB(LLVMSparcInfo)
    239   FIND_AND_ADD_LLVM_LIB(LLVMRISCVTargetMCA)
    240   FIND_AND_ADD_LLVM_LIB(LLVMRISCVDisassembler)
    241   FIND_AND_ADD_LLVM_LIB(LLVMRISCVAsmParser)
    242   FIND_AND_ADD_LLVM_LIB(LLVMRISCVCodeGen)
    243   FIND_AND_ADD_LLVM_LIB(LLVMRISCVDesc)
    244   FIND_AND_ADD_LLVM_LIB(LLVMRISCVInfo)
    245   FIND_AND_ADD_LLVM_LIB(LLVMPowerPCDisassembler)
    246   FIND_AND_ADD_LLVM_LIB(LLVMPowerPCAsmParser)
    247   FIND_AND_ADD_LLVM_LIB(LLVMPowerPCCodeGen)
    248   FIND_AND_ADD_LLVM_LIB(LLVMPowerPCDesc)
    249   FIND_AND_ADD_LLVM_LIB(LLVMPowerPCInfo)
    250   FIND_AND_ADD_LLVM_LIB(LLVMNVPTXCodeGen)
    251   FIND_AND_ADD_LLVM_LIB(LLVMNVPTXDesc)
    252   FIND_AND_ADD_LLVM_LIB(LLVMNVPTXInfo)
    253   FIND_AND_ADD_LLVM_LIB(LLVMMSP430Disassembler)
    254   FIND_AND_ADD_LLVM_LIB(LLVMMSP430AsmParser)
    255   FIND_AND_ADD_LLVM_LIB(LLVMMSP430CodeGen)
    256   FIND_AND_ADD_LLVM_LIB(LLVMMSP430Desc)
    257   FIND_AND_ADD_LLVM_LIB(LLVMMSP430Info)
    258   FIND_AND_ADD_LLVM_LIB(LLVMMipsDisassembler)
    259   FIND_AND_ADD_LLVM_LIB(LLVMMipsAsmParser)
    260   FIND_AND_ADD_LLVM_LIB(LLVMMipsCodeGen)
    261   FIND_AND_ADD_LLVM_LIB(LLVMMipsDesc)
    262   FIND_AND_ADD_LLVM_LIB(LLVMMipsInfo)
    263   FIND_AND_ADD_LLVM_LIB(LLVMLoongArchDisassembler)
    264   FIND_AND_ADD_LLVM_LIB(LLVMLoongArchAsmParser)
    265   FIND_AND_ADD_LLVM_LIB(LLVMLoongArchCodeGen)
    266   FIND_AND_ADD_LLVM_LIB(LLVMLoongArchDesc)
    267   FIND_AND_ADD_LLVM_LIB(LLVMLoongArchInfo)
    268   FIND_AND_ADD_LLVM_LIB(LLVMLanaiDisassembler)
    269   FIND_AND_ADD_LLVM_LIB(LLVMLanaiCodeGen)
    270   FIND_AND_ADD_LLVM_LIB(LLVMLanaiAsmParser)
    271   FIND_AND_ADD_LLVM_LIB(LLVMLanaiDesc)
    272   FIND_AND_ADD_LLVM_LIB(LLVMLanaiInfo)
    273   FIND_AND_ADD_LLVM_LIB(LLVMHexagonDisassembler)
    274   FIND_AND_ADD_LLVM_LIB(LLVMHexagonCodeGen)
    275   FIND_AND_ADD_LLVM_LIB(LLVMHexagonAsmParser)
    276   FIND_AND_ADD_LLVM_LIB(LLVMHexagonDesc)
    277   FIND_AND_ADD_LLVM_LIB(LLVMHexagonInfo)
    278   FIND_AND_ADD_LLVM_LIB(LLVMBPFDisassembler)
    279   FIND_AND_ADD_LLVM_LIB(LLVMBPFAsmParser)
    280   FIND_AND_ADD_LLVM_LIB(LLVMBPFCodeGen)
    281   FIND_AND_ADD_LLVM_LIB(LLVMBPFDesc)
    282   FIND_AND_ADD_LLVM_LIB(LLVMBPFInfo)
    283   FIND_AND_ADD_LLVM_LIB(LLVMAVRDisassembler)
    284   FIND_AND_ADD_LLVM_LIB(LLVMAVRAsmParser)
    285   FIND_AND_ADD_LLVM_LIB(LLVMAVRCodeGen)
    286   FIND_AND_ADD_LLVM_LIB(LLVMAVRDesc)
    287   FIND_AND_ADD_LLVM_LIB(LLVMAVRInfo)
    288   FIND_AND_ADD_LLVM_LIB(LLVMARMDisassembler)
    289   FIND_AND_ADD_LLVM_LIB(LLVMARMAsmParser)
    290   FIND_AND_ADD_LLVM_LIB(LLVMARMCodeGen)
    291   FIND_AND_ADD_LLVM_LIB(LLVMARMDesc)
    292   FIND_AND_ADD_LLVM_LIB(LLVMARMUtils)
    293   FIND_AND_ADD_LLVM_LIB(LLVMARMInfo)
    294   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUTargetMCA)
    295   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUDisassembler)
    296   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUAsmParser)
    297   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUCodeGen)
    298   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUDesc)
    299   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUUtils)
    300   FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUInfo)
    301   FIND_AND_ADD_LLVM_LIB(LLVMAArch64Disassembler)
    302   FIND_AND_ADD_LLVM_LIB(LLVMAArch64AsmParser)
    303   FIND_AND_ADD_LLVM_LIB(LLVMAArch64CodeGen)
    304   FIND_AND_ADD_LLVM_LIB(LLVMAArch64Desc)
    305   FIND_AND_ADD_LLVM_LIB(LLVMAArch64Utils)
    306   FIND_AND_ADD_LLVM_LIB(LLVMAArch64Info)
    307   FIND_AND_ADD_LLVM_LIB(LLVMOrcDebugging)
    308   FIND_AND_ADD_LLVM_LIB(LLVMOrcJIT)
    309   FIND_AND_ADD_LLVM_LIB(LLVMWindowsDriver)
    310   FIND_AND_ADD_LLVM_LIB(LLVMMCJIT)
    311   FIND_AND_ADD_LLVM_LIB(LLVMJITLink)
    312   FIND_AND_ADD_LLVM_LIB(LLVMInterpreter)
    313   FIND_AND_ADD_LLVM_LIB(LLVMExecutionEngine)
    314   FIND_AND_ADD_LLVM_LIB(LLVMRuntimeDyld)
    315   FIND_AND_ADD_LLVM_LIB(LLVMOrcTargetProcess)
    316   FIND_AND_ADD_LLVM_LIB(LLVMOrcShared)
    317   FIND_AND_ADD_LLVM_LIB(LLVMDWP)
    318   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoLogicalView)
    319   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM)
    320   FIND_AND_ADD_LLVM_LIB(LLVMOption)
    321   FIND_AND_ADD_LLVM_LIB(LLVMObjectYAML)
    322   FIND_AND_ADD_LLVM_LIB(LLVMObjCopy)
    323   FIND_AND_ADD_LLVM_LIB(LLVMMCA)
    324   FIND_AND_ADD_LLVM_LIB(LLVMMCDisassembler)
    325   FIND_AND_ADD_LLVM_LIB(LLVMLTO)
    326   FIND_AND_ADD_LLVM_LIB(LLVMPasses)
    327   FIND_AND_ADD_LLVM_LIB(LLVMHipStdPar)
    328   FIND_AND_ADD_LLVM_LIB(LLVMCFGuard)
    329   FIND_AND_ADD_LLVM_LIB(LLVMCoroutines)
    330   FIND_AND_ADD_LLVM_LIB(LLVMipo)
    331   FIND_AND_ADD_LLVM_LIB(LLVMVectorize)
    332   FIND_AND_ADD_LLVM_LIB(LLVMSandboxIR)
    333   FIND_AND_ADD_LLVM_LIB(LLVMLinker)
    334   FIND_AND_ADD_LLVM_LIB(LLVMInstrumentation)
    335   FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenMP)
    336   FIND_AND_ADD_LLVM_LIB(LLVMFrontendOffloading)
    337   FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenACC)
    338   FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL)
    339   FIND_AND_ADD_LLVM_LIB(LLVMFrontendDriver)
    340   FIND_AND_ADD_LLVM_LIB(LLVMFrontendAtomic)
    341   FIND_AND_ADD_LLVM_LIB(LLVMExtensions)
    342   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerParallel)
    343   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerClassic)
    344   FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinker)
    345   FIND_AND_ADD_LLVM_LIB(LLVMGlobalISel)
    346   FIND_AND_ADD_LLVM_LIB(LLVMMIRParser)
    347   FIND_AND_ADD_LLVM_LIB(LLVMAsmPrinter)
    348   FIND_AND_ADD_LLVM_LIB(LLVMSelectionDAG)
    349   FIND_AND_ADD_LLVM_LIB(LLVMCodeGen)
    350   FIND_AND_ADD_LLVM_LIB(LLVMTarget)
    351   FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts)
    352   FIND_AND_ADD_LLVM_LIB(LLVMCodeGenTypes)
    353   FIND_AND_ADD_LLVM_LIB(LLVMCGData)
    354   FIND_AND_ADD_LLVM_LIB(LLVMIRPrinter)
    355   FIND_AND_ADD_LLVM_LIB(LLVMInterfaceStub)
    356   FIND_AND_ADD_LLVM_LIB(LLVMFileCheck)
    357   FIND_AND_ADD_LLVM_LIB(LLVMFuzzMutate)
    358   FIND_AND_ADD_LLVM_LIB(LLVMScalarOpts)
    359   FIND_AND_ADD_LLVM_LIB(LLVMInstCombine)
    360   FIND_AND_ADD_LLVM_LIB(LLVMAggressiveInstCombine)
    361   FIND_AND_ADD_LLVM_LIB(LLVMTransformUtils)
    362   FIND_AND_ADD_LLVM_LIB(LLVMBitWriter)
    363   FIND_AND_ADD_LLVM_LIB(LLVMAnalysis)
    364   FIND_AND_ADD_LLVM_LIB(LLVMProfileData)
    365   FIND_AND_ADD_LLVM_LIB(LLVMSymbolize)
    366   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoBTF)
    367   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB)
    368   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF)
    369   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView)
    370   FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF)
    371   FIND_AND_ADD_LLVM_LIB(LLVMObject)
    372   FIND_AND_ADD_LLVM_LIB(LLVMTextAPI)
    373   FIND_AND_ADD_LLVM_LIB(LLVMMCParser)
    374   FIND_AND_ADD_LLVM_LIB(LLVMIRReader)
    375   FIND_AND_ADD_LLVM_LIB(LLVMAsmParser)
    376   FIND_AND_ADD_LLVM_LIB(LLVMMC)
    377   FIND_AND_ADD_LLVM_LIB(LLVMBitReader)
    378   FIND_AND_ADD_LLVM_LIB(LLVMFuzzerCLI)
    379   FIND_AND_ADD_LLVM_LIB(LLVMCore)
    380   FIND_AND_ADD_LLVM_LIB(LLVMRemarks)
    381   FIND_AND_ADD_LLVM_LIB(LLVMBitstreamReader)
    382   FIND_AND_ADD_LLVM_LIB(LLVMBinaryFormat)
    383   FIND_AND_ADD_LLVM_LIB(LLVMTargetParser)
    384   FIND_AND_ADD_LLVM_LIB(LLVMSupport)
    385   FIND_AND_ADD_LLVM_LIB(LLVMDemangle)
    386 
    387   get_filename_component(LLVM_LIBDIRS "${LLVM_LLVMCORE_LIB}" DIRECTORY)
    388   find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h)
    389 endif()
    390 
    391 include(FindPackageHandleStandardArgs)
    392 find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)
    393 
    394 mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS)