| 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-22 llvm-config-22.0 llvm-config220 llvm-config22 llvm-config NAMES_PER_DIR |
| 21 | PATHS |
| 22 | "/mingw64/bin" |
| 23 | "/c/msys64/mingw64/bin" |
| 24 | "c:/msys64/mingw64/bin" |
| 25 | "C:/Libraries/llvm-22.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 22 OR "${LLVM_CONFIG_VERSION}" VERSION_EQUAL 23 OR "${LLVM_CONFIG_VERSION}" VERSION_GREATER 23) |
| 44 | # Save the error message, in case this is the last llvm-config we find |
| 45 | list(APPEND LLVM_CONFIG_ERROR_MESSAGES "expected LLVM 22.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 22.x found at ${LLVM_CONFIG_EXE} does not support linking as a shared library") |
| 70 | else() |
| 71 | list(APPEND LLVM_CONFIG_ERROR_MESSAGES "LLVM 22.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;LoongArch;Mips;MSP430;NVPTX;PowerPC;RISCV;SPIRV;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(LLVMDWARFCFIChecker) |
| 319 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoLogicalView) |
| 320 | FIND_AND_ADD_LLVM_LIB(LLVMOption) |
| 321 | FIND_AND_ADD_LLVM_LIB(LLVMObjCopy) |
| 322 | FIND_AND_ADD_LLVM_LIB(LLVMMCA) |
| 323 | FIND_AND_ADD_LLVM_LIB(LLVMMCDisassembler) |
| 324 | FIND_AND_ADD_LLVM_LIB(LLVMDTLTO) |
| 325 | FIND_AND_ADD_LLVM_LIB(LLVMLTO) |
| 326 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenACC) |
| 327 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendDriver) |
| 328 | FIND_AND_ADD_LLVM_LIB(LLVMExtensions) |
| 329 | FIND_AND_ADD_LLVM_LIB(LLVMPlugins) |
| 330 | FIND_AND_ADD_LLVM_LIB(LLVMPasses) |
| 331 | FIND_AND_ADD_LLVM_LIB(LLVMHipStdPar) |
| 332 | FIND_AND_ADD_LLVM_LIB(LLVMCoroutines) |
| 333 | FIND_AND_ADD_LLVM_LIB(LLVMCFGuard) |
| 334 | FIND_AND_ADD_LLVM_LIB(LLVMipo) |
| 335 | FIND_AND_ADD_LLVM_LIB(LLVMInstrumentation) |
| 336 | FIND_AND_ADD_LLVM_LIB(LLVMVectorize) |
| 337 | FIND_AND_ADD_LLVM_LIB(LLVMSandboxIR) |
| 338 | FIND_AND_ADD_LLVM_LIB(LLVMLinker) |
| 339 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenMP) |
| 340 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendDirective) |
| 341 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendAtomic) |
| 342 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendOffloading) |
| 343 | FIND_AND_ADD_LLVM_LIB(LLVMObjectYAML) |
| 344 | FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerParallel) |
| 345 | FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinkerClassic) |
| 346 | FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinker) |
| 347 | FIND_AND_ADD_LLVM_LIB(LLVMGlobalISel) |
| 348 | FIND_AND_ADD_LLVM_LIB(LLVMMIRParser) |
| 349 | FIND_AND_ADD_LLVM_LIB(LLVMAsmPrinter) |
| 350 | FIND_AND_ADD_LLVM_LIB(LLVMSelectionDAG) |
| 351 | FIND_AND_ADD_LLVM_LIB(LLVMCodeGen) |
| 352 | FIND_AND_ADD_LLVM_LIB(LLVMTarget) |
| 353 | FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts) |
| 354 | FIND_AND_ADD_LLVM_LIB(LLVMCodeGenTypes) |
| 355 | FIND_AND_ADD_LLVM_LIB(LLVMCGData) |
| 356 | FIND_AND_ADD_LLVM_LIB(LLVMCAS) |
| 357 | FIND_AND_ADD_LLVM_LIB(LLVMIRPrinter) |
| 358 | FIND_AND_ADD_LLVM_LIB(LLVMInterfaceStub) |
| 359 | FIND_AND_ADD_LLVM_LIB(LLVMFileCheck) |
| 360 | FIND_AND_ADD_LLVM_LIB(LLVMFuzzMutate) |
| 361 | FIND_AND_ADD_LLVM_LIB(LLVMScalarOpts) |
| 362 | FIND_AND_ADD_LLVM_LIB(LLVMInstCombine) |
| 363 | FIND_AND_ADD_LLVM_LIB(LLVMAggressiveInstCombine) |
| 364 | FIND_AND_ADD_LLVM_LIB(LLVMTransformUtils) |
| 365 | FIND_AND_ADD_LLVM_LIB(LLVMBitWriter) |
| 366 | FIND_AND_ADD_LLVM_LIB(LLVMAnalysis) |
| 367 | FIND_AND_ADD_LLVM_LIB(LLVMProfileData) |
| 368 | FIND_AND_ADD_LLVM_LIB(LLVMSymbolize) |
| 369 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoBTF) |
| 370 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB) |
| 371 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF) |
| 372 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView) |
| 373 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM) |
| 374 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF) |
| 375 | FIND_AND_ADD_LLVM_LIB(LLVMObject) |
| 376 | FIND_AND_ADD_LLVM_LIB(LLVMTextAPI) |
| 377 | FIND_AND_ADD_LLVM_LIB(LLVMMCParser) |
| 378 | FIND_AND_ADD_LLVM_LIB(LLVMIRReader) |
| 379 | FIND_AND_ADD_LLVM_LIB(LLVMAsmParser) |
| 380 | FIND_AND_ADD_LLVM_LIB(LLVMMC) |
| 381 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARFLowLevel) |
| 382 | FIND_AND_ADD_LLVM_LIB(LLVMBitReader) |
| 383 | FIND_AND_ADD_LLVM_LIB(LLVMFrontendHLSL) |
| 384 | FIND_AND_ADD_LLVM_LIB(LLVMFuzzerCLI) |
| 385 | FIND_AND_ADD_LLVM_LIB(LLVMABI) |
| 386 | FIND_AND_ADD_LLVM_LIB(LLVMCore) |
| 387 | FIND_AND_ADD_LLVM_LIB(LLVMRemarks) |
| 388 | FIND_AND_ADD_LLVM_LIB(LLVMBitstreamReader) |
| 389 | FIND_AND_ADD_LLVM_LIB(LLVMBinaryFormat) |
| 390 | FIND_AND_ADD_LLVM_LIB(LLVMTargetParser) |
| 391 | FIND_AND_ADD_LLVM_LIB(LLVMSupport) |
| 392 | FIND_AND_ADD_LLVM_LIB(LLVMDemangle) |
| 393 | |
| 394 | get_filename_component(LLVM_LIBDIRS "${LLVM_LLVMCORE_LIB}" DIRECTORY) |
| 395 | find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h) |
| 396 | endif() |
| 397 | |
| 398 | include(FindPackageHandleStandardArgs) |
| 399 | find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS) |
| 400 | |
| 401 | mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS) |