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