OSDN Git Service

Disable surface and swapchain support for Android
[android-x86/external-swiftshader.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 project(SwiftShader C CXX)
4
5 # On Windows we use custom solution and project files, except for certain third-
6 # party projects which use CMake-generated ones. They are manually (re)generated
7 # and made path relative using build/cmake.sh, so they can be checked into the
8 # repository. Therefore they should not be auto-regenerated and left using
9 # absolute paths by CMake's ZERO_CHECK.
10 if(WIN32)
11     # Disable automatically regenerating project files on CMakeLists.txt changes.
12     set(CMAKE_SUPPRESS_REGENERATION true)
13 endif()
14
15 ###########################################################
16 # Detect system
17 ###########################################################
18
19 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
20     set(LINUX ON)
21 elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
22     set(ANDROID ON)
23     set(CMAKE_CXX_FLAGS "-DANDROID_NDK_BUILD")
24 elseif(WIN32)
25 elseif(APPLE)
26 else()
27     message(FATAL_ERROR "Platform is not supported")
28 endif()
29
30 if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch")
31     if(CMAKE_SIZEOF_VOID_P EQUAL 8)
32         set(ARCH "aarch64")
33     else()
34         set(ARCH "arm")
35     endif()
36 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips*")
37     if(CMAKE_SIZEOF_VOID_P EQUAL 8)
38         set(ARCH "mips64el")
39     else()
40         set(ARCH "mipsel")
41     endif()
42 else()
43     if(CMAKE_SIZEOF_VOID_P EQUAL 8)
44         set(ARCH "x86_64")
45     else()
46         set(ARCH "x86")
47     endif()
48 endif()
49
50 set(CMAKE_MACOSX_RPATH ON)
51
52 if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (CMAKE_GENERATOR_TOOLSET STREQUAL ""))
53   message(WARNING "Visual Studio generators use the x86 host compiler by "
54                   "default, even for 64-bit targets. This can result in linker "
55                   "instability and out of memory errors. To use the 64-bit "
56                   "host compiler, pass -Thost=x64 on the CMake command line.")
57 endif()
58
59 ###########################################################
60 # Options
61 ###########################################################
62
63 if(NOT CMAKE_BUILD_TYPE)
64     set(CMAKE_BUILD_TYPE "Release" CACHE STRING "The type of build: Debug Release MinSizeRel RelWithDebInfo." FORCE)
65 endif()
66 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release MinSizeRel RelWithDebInfo)
67
68 option(BUILD_EGL "Build the EGL library" 1)
69 option(BUILD_GLESv2 "Build the OpenGL ES 2 library" 1)
70 option(BUILD_GLES_CM "Build the OpenGL ES 1.1 library" 1)
71 option(BUILD_VULKAN "Build the Vulkan library" 1)
72
73 option(USE_GROUP_SOURCES "Group the source files in a folder tree for Visual Studio" 1)
74
75 option(BUILD_SAMPLES "Build sample programs" 1)
76 option(BUILD_TESTS "Build test programs" 1)
77
78 option (MSAN "Build with memory sanitizer" 0)
79 option (ASAN "Build with address sanitizer" 0)
80 option (TSAN "Build with thread sanitizer" 0)
81 option (UBSAN "Build with undefined behavior sanitizer" 0)
82 option (WARNINGS_AS_ERRORS "Treat all warnings as errors" 0)
83 option (DCHECK_ALWAYS_ON "Check validation macros even in release builds" 0)
84
85 if(ARCH STREQUAL "arm")
86     set(DEFAULT_REACTOR_BACKEND "Subzero")
87 else()
88     set(DEFAULT_REACTOR_BACKEND "LLVM")
89 endif()
90
91 set(REACTOR_BACKEND ${DEFAULT_REACTOR_BACKEND} CACHE STRING "JIT compiler back-end used by Reactor")
92 set_property(CACHE REACTOR_BACKEND PROPERTY STRINGS LLVM Subzero)
93
94 set(REACTOR_LLVM_VERSION "7" CACHE STRING "LLVM version used by Reactor")
95
96 # LLVM disallows calling cmake . from the main LLVM dir, the reason is that
97 # it builds header files that could overwrite the orignal ones. Here we
98 # want to include LLVM as a subdirectory and even though it wouldn't cause
99 # the problem, if cmake . is called from the main dir, the condition that
100 # LLVM checkes, "CMAKE_CURRENT_SOURCE_DIR == CMAKE_CURRENT_BINARY_DIR" will be true. So we
101 # disallow it ourselves too to. In addition if there are remining CMakeFiles
102 # and CMakeCache in the directory, cmake .. from a subdirectory will still
103 # try to build from the main directory so we instruct users to delete these
104 # files when they get the error.
105 if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
106     message(FATAL_ERROR "In source builds are not allowed by LLVM, please create a build/ directory and build from there. You may have to delete the CMakeCache.txt file and CMakeFiles directory that are next to the CMakeLists.txt.")
107 endif()
108
109 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
110
111 ###########################################################
112 # Initialize submodules
113 ###########################################################
114
115 if (NOT TARGET gtest)
116     if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
117         message(WARNING "
118       third_party/googletest submodule missing.
119       Running 'git submodule update --init' to download it:
120         ")
121
122         execute_process(COMMAND git submodule update --init)
123     endif()
124 endif()
125
126 ###########################################################
127 # Convenience macros
128 ###########################################################
129
130 # Recursively calls source_group on the files of the directory
131 # so that Visual Studio has the files in a folder tree
132 macro(group_all_sources directory)
133     file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${directory} ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/*)
134     foreach(file ${files})
135         if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
136             group_all_sources(${directory}/${file})
137         else()
138             string(REPLACE "/" "\\" groupname ${directory})
139             source_group(${groupname} FILES ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
140         endif()
141     endforeach()
142 endmacro()
143
144 # Takes target library and a directory where the export map is
145 # and add the linker options so that only the API symbols are
146 # exported.
147 macro(set_shared_library_export_map TARGET DIR)
148     if(MSVC)
149         set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"")
150     elseif(LINUX)
151         # The version script only exports the API functions and
152         # hides all the others.
153         set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${DIR}/${TARGET}.lds")
154         set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.lds;")
155
156         # Don't allow symbols to be overridden by another module.
157         set_property(TARGET ${TARGET} APPEND_STRING PROPERTY COMPILE_FLAGS " -fvisibility=protected")
158
159         if(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
160           # MIPS supports sysv hash-style only.
161           set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=sysv")
162         else()
163           # Both hash-style are needed, because we want both gold and
164           # GNU ld to be able to read our libraries.
165           set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=both")
166         endif()
167
168         # Gc sections is used in combination with each functions being
169         # in its own section, to reduce the binary size.
170         set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--gc-sections")
171
172         # Don't allow undefined symbols, unless it's a Sanitizer build.
173         if(NOT MSAN AND NOT ASAN AND NOT TSAN AND NOT UBSAN)
174             set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
175         endif()
176     endif()
177 endmacro()
178
179 if(USE_GROUP_SOURCES)
180     group_all_sources(src)
181 endif()
182
183 ###########################################################
184 # Directories
185 ###########################################################
186
187 set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
188 set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
189 set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
190 set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
191 if(REACTOR_LLVM_VERSION EQUAL 3)
192     set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/LLVM)
193 else()
194     set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/llvm)
195     set(LLVM_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/configs)
196 endif()
197 set(SUBZERO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/subzero)
198 set(SUBZERO_LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-subzero)
199 set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
200 set(HELLO2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
201
202 ###########################################################
203 # Compile flags
204 ###########################################################
205
206 macro(set_cpp_flag FLAG)
207     if(${ARGC} GREATER 1)
208         set(CMAKE_CXX_FLAGS_${ARGV1} "${CMAKE_CXX_FLAGS_${ARGV1}} ${FLAG}")
209     else()
210         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
211     endif()
212 endmacro()
213
214 if(MSVC)
215     set_cpp_flag("/MP")
216     add_definitions(-D_CRT_SECURE_NO_WARNINGS)
217     add_definitions(-D_SBCS)  # Single Byte Character Set (ASCII)
218 else()
219     set_cpp_flag("--std=c++11")
220     set_cpp_flag("-Wall")
221     set_cpp_flag("-Werror=reorder")
222     set_cpp_flag("-Werror=sign-compare")
223     set_cpp_flag("-Werror=missing-braces")
224     set_cpp_flag("-fno-exceptions")
225
226     if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
227        CLANG_VERSION_STRING VERSION_GREATER_EQUAL 5)
228         set_cpp_flag("-Werror=unused-lambda-capture")
229     endif()
230
231     # Remove xor, and, or and friends from the list of keywords, they are used
232     # by Reactor
233     set_cpp_flag("-fno-operator-names")
234
235     # LLVM headers requires these flags to be set
236     set_cpp_flag("-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
237
238     if(ARCH STREQUAL "x86")
239         set_cpp_flag("-m32")
240         set_cpp_flag("-msse2")
241         set_cpp_flag("-mfpmath=sse")
242         set_cpp_flag("-march=pentium4")
243         set_cpp_flag("-mtune=generic")
244     endif()
245     if(ARCH STREQUAL "x86_64")
246         set_cpp_flag("-m64")
247         set_cpp_flag("-fPIC")
248         set_cpp_flag("-march=x86-64")
249         set_cpp_flag("-mtune=generic")
250     endif()
251     if(ARCH STREQUAL "mipsel")
252         set_cpp_flag("-march=mips32r2")
253         set_cpp_flag("-fPIC")
254         set_cpp_flag("-mhard-float")
255         set_cpp_flag("-mfp32")
256     endif()
257     if(ARCH STREQUAL "mips64el")
258         set_cpp_flag("-march=mips64r2")
259         set_cpp_flag("-mabi=64")
260         set_cpp_flag("-fPIC")
261     endif()
262
263     if(LINUX)
264         set_cpp_flag("-DUSE_X11=1")
265         set_cpp_flag("-DVK_USE_PLATFORM_XLIB_KHR")
266     endif()
267
268     # Use -g3 to have even more debug info
269     set_cpp_flag("-g -g3" DEBUG)
270     set_cpp_flag("-g -g3" RELWITHDEBINFO)
271     if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
272         # Treated as an unused argument with clang
273         set_cpp_flag("-s" RELEASE)
274     endif()
275
276     if(WARNINGS_AS_ERRORS)
277         set_cpp_flag("-Werror") # Treat all warnings as errors
278     endif()
279
280     if(DCHECK_ALWAYS_ON)
281         set_cpp_flag("-DDCHECK_ALWAYS_ON")
282     endif()
283
284     # Disable pedanitc warnings
285     if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
286         set_cpp_flag("-Wno-ignored-attributes")  # ignoring attributes on template argument 'X'
287         set_cpp_flag("-Wno-attributes")          # 'X' attribute ignored
288         set_cpp_flag("-Wno-strict-aliasing")     # dereferencing type-punned pointer will break strict-aliasing rules
289     elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
290         set_cpp_flag("-Wno-unneeded-internal-declaration") # function 'X' is not needed and will not be emitted
291         set_cpp_flag("-Wno-unused-private-field")          # private field 'offset' is not used - TODO: Consider enabling this once Vulkan is further implemented.
292     endif()
293
294     # For distribution it is more important to be slim than super optimized
295     set_cpp_flag("-Os" RELEASE)
296     set_cpp_flag("-Os" RELWITHDEBINFO)
297
298     set_cpp_flag("-DNDEBUG" RELEASE)
299     set_cpp_flag("-DNDEBUG" RELWITHDEBINFO)
300     set_cpp_flag("-DANGLE_DISABLE_TRACE" RELEASE)
301     set_cpp_flag("-DANGLE_DISABLE_TRACE" RELWITHDEBINFO)
302
303     # Put each variable and function in its own section so that when linking
304     # with -gc-sections unused functions and variables are removed.
305     set_cpp_flag("-ffunction-sections" RELEASE)
306     set_cpp_flag("-fdata-sections" RELEASE)
307     set_cpp_flag("-fomit-frame-pointer" RELEASE)
308
309     if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
310         if(MSAN)
311             set_cpp_flag("-fsanitize=memory")
312         elseif(ASAN)
313             set_cpp_flag("-fsanitize=address")
314         elseif(TSAN)
315             set_cpp_flag("-fsanitize=thread")
316         elseif(UBSAN)
317             set_cpp_flag("-fsanitize=undefined -fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/third_party/LLVM/ubsan_blacklist.txt")
318         endif()
319     endif()
320 endif()
321
322 if(WIN32)
323     add_definitions(-DWINVER=0x501 -DNOMINMAX -DSTRICT)
324     set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "" "lib")
325 endif()
326
327 ###########################################################
328 # LLVM
329 ###########################################################
330
331 add_definitions(-DREACTOR_LLVM_VERSION=${REACTOR_LLVM_VERSION})
332
333 if(REACTOR_LLVM_VERSION EQUAL 3)
334
335 set(LLVM_LIST
336     ${LLVM_DIR}/lib/Analysis/AliasAnalysis.cpp
337     ${LLVM_DIR}/lib/Analysis/AliasSetTracker.cpp
338     ${LLVM_DIR}/lib/Analysis/BasicAliasAnalysis.cpp
339     ${LLVM_DIR}/lib/Analysis/BranchProbabilityInfo.cpp
340     ${LLVM_DIR}/lib/Analysis/CaptureTracking.cpp
341     ${LLVM_DIR}/lib/Analysis/ConstantFolding.cpp
342     ${LLVM_DIR}/lib/Analysis/DIBuilder.cpp
343     ${LLVM_DIR}/lib/Analysis/DebugInfo.cpp
344     ${LLVM_DIR}/lib/Analysis/IVUsers.cpp
345     ${LLVM_DIR}/lib/Analysis/InstructionSimplify.cpp
346     ${LLVM_DIR}/lib/Analysis/Loads.cpp
347     ${LLVM_DIR}/lib/Analysis/LoopInfo.cpp
348     ${LLVM_DIR}/lib/Analysis/LoopPass.cpp
349     ${LLVM_DIR}/lib/Analysis/MemoryBuiltins.cpp
350     ${LLVM_DIR}/lib/Analysis/MemoryDependenceAnalysis.cpp
351     ${LLVM_DIR}/lib/Analysis/NoAliasAnalysis.cpp
352     ${LLVM_DIR}/lib/Analysis/PHITransAddr.cpp
353     ${LLVM_DIR}/lib/Analysis/PathNumbering.cpp
354     ${LLVM_DIR}/lib/Analysis/ProfileInfo.cpp
355     ${LLVM_DIR}/lib/Analysis/ScalarEvolution.cpp
356     ${LLVM_DIR}/lib/Analysis/ScalarEvolutionExpander.cpp
357     ${LLVM_DIR}/lib/Analysis/ScalarEvolutionNormalization.cpp
358     ${LLVM_DIR}/lib/Analysis/TypeBasedAliasAnalysis.cpp
359     ${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
360     ${LLVM_DIR}/lib/CodeGen/AggressiveAntiDepBreaker.cpp
361     ${LLVM_DIR}/lib/CodeGen/AllocationOrder.cpp
362     ${LLVM_DIR}/lib/CodeGen/Analysis.cpp
363     ${LLVM_DIR}/lib/CodeGen/BranchFolding.cpp
364     ${LLVM_DIR}/lib/CodeGen/CalcSpillWeights.cpp
365     ${LLVM_DIR}/lib/CodeGen/CallingConvLower.cpp
366     ${LLVM_DIR}/lib/CodeGen/CodePlacementOpt.cpp
367     ${LLVM_DIR}/lib/CodeGen/CriticalAntiDepBreaker.cpp
368     ${LLVM_DIR}/lib/CodeGen/DeadMachineInstructionElim.cpp
369     ${LLVM_DIR}/lib/CodeGen/DwarfEHPrepare.cpp
370     ${LLVM_DIR}/lib/CodeGen/ELFCodeEmitter.cpp
371     ${LLVM_DIR}/lib/CodeGen/ELFWriter.cpp
372     ${LLVM_DIR}/lib/CodeGen/EdgeBundles.cpp
373     ${LLVM_DIR}/lib/CodeGen/ExecutionDepsFix.cpp
374     ${LLVM_DIR}/lib/CodeGen/ExpandISelPseudos.cpp
375     ${LLVM_DIR}/lib/CodeGen/ExpandPostRAPseudos.cpp
376     ${LLVM_DIR}/lib/CodeGen/GCMetadata.cpp
377     ${LLVM_DIR}/lib/CodeGen/GCStrategy.cpp
378     ${LLVM_DIR}/lib/CodeGen/InlineSpiller.cpp
379     ${LLVM_DIR}/lib/CodeGen/InterferenceCache.cpp
380     ${LLVM_DIR}/lib/CodeGen/IntrinsicLowering.cpp
381     ${LLVM_DIR}/lib/CodeGen/LLVMTargetMachine.cpp
382     ${LLVM_DIR}/lib/CodeGen/LatencyPriorityQueue.cpp
383     ${LLVM_DIR}/lib/CodeGen/LexicalScopes.cpp
384     ${LLVM_DIR}/lib/CodeGen/LiveDebugVariables.cpp
385     ${LLVM_DIR}/lib/CodeGen/LiveInterval.cpp
386     ${LLVM_DIR}/lib/CodeGen/LiveIntervalAnalysis.cpp
387     ${LLVM_DIR}/lib/CodeGen/LiveIntervalUnion.cpp
388     ${LLVM_DIR}/lib/CodeGen/LiveRangeCalc.cpp
389     ${LLVM_DIR}/lib/CodeGen/LiveRangeEdit.cpp
390     ${LLVM_DIR}/lib/CodeGen/LiveStackAnalysis.cpp
391     ${LLVM_DIR}/lib/CodeGen/LiveVariables.cpp
392     ${LLVM_DIR}/lib/CodeGen/LocalStackSlotAllocation.cpp
393     ${LLVM_DIR}/lib/CodeGen/MachineBasicBlock.cpp
394     ${LLVM_DIR}/lib/CodeGen/MachineCSE.cpp
395     ${LLVM_DIR}/lib/CodeGen/MachineDominators.cpp
396     ${LLVM_DIR}/lib/CodeGen/MachineFunction.cpp
397     ${LLVM_DIR}/lib/CodeGen/MachineFunctionAnalysis.cpp
398     ${LLVM_DIR}/lib/CodeGen/MachineFunctionPass.cpp
399     ${LLVM_DIR}/lib/CodeGen/MachineFunctionPrinterPass.cpp
400     ${LLVM_DIR}/lib/CodeGen/MachineInstr.cpp
401     ${LLVM_DIR}/lib/CodeGen/MachineLICM.cpp
402     ${LLVM_DIR}/lib/CodeGen/MachineLoopInfo.cpp
403     ${LLVM_DIR}/lib/CodeGen/MachineModuleInfo.cpp
404     ${LLVM_DIR}/lib/CodeGen/MachineModuleInfoImpls.cpp
405     ${LLVM_DIR}/lib/CodeGen/MachinePassRegistry.cpp
406     ${LLVM_DIR}/lib/CodeGen/MachineRegisterInfo.cpp
407     ${LLVM_DIR}/lib/CodeGen/MachineSSAUpdater.cpp
408     ${LLVM_DIR}/lib/CodeGen/MachineSink.cpp
409     ${LLVM_DIR}/lib/CodeGen/MachineVerifier.cpp
410     ${LLVM_DIR}/lib/CodeGen/ObjectCodeEmitter.cpp
411     ${LLVM_DIR}/lib/CodeGen/OptimizePHIs.cpp
412     ${LLVM_DIR}/lib/CodeGen/PHIElimination.cpp
413     ${LLVM_DIR}/lib/CodeGen/PHIEliminationUtils.cpp
414     ${LLVM_DIR}/lib/CodeGen/Passes.cpp
415     ${LLVM_DIR}/lib/CodeGen/PeepholeOptimizer.cpp
416     ${LLVM_DIR}/lib/CodeGen/PostRASchedulerList.cpp
417     ${LLVM_DIR}/lib/CodeGen/ProcessImplicitDefs.cpp
418     ${LLVM_DIR}/lib/CodeGen/PrologEpilogInserter.cpp
419     ${LLVM_DIR}/lib/CodeGen/PseudoSourceValue.cpp
420     ${LLVM_DIR}/lib/CodeGen/RegAllocBasic.cpp
421     ${LLVM_DIR}/lib/CodeGen/RegAllocFast.cpp
422     ${LLVM_DIR}/lib/CodeGen/RegAllocGreedy.cpp
423     ${LLVM_DIR}/lib/CodeGen/RegAllocLinearScan.cpp
424     ${LLVM_DIR}/lib/CodeGen/RegisterClassInfo.cpp
425     ${LLVM_DIR}/lib/CodeGen/RegisterCoalescer.cpp
426     ${LLVM_DIR}/lib/CodeGen/RegisterScavenging.cpp
427     ${LLVM_DIR}/lib/CodeGen/RenderMachineFunction.cpp
428     ${LLVM_DIR}/lib/CodeGen/ScheduleDAG.cpp
429     ${LLVM_DIR}/lib/CodeGen/ScheduleDAGEmit.cpp
430     ${LLVM_DIR}/lib/CodeGen/ScheduleDAGInstrs.cpp
431     ${LLVM_DIR}/lib/CodeGen/ScheduleDAGPrinter.cpp
432     ${LLVM_DIR}/lib/CodeGen/ScoreboardHazardRecognizer.cpp
433     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
434     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FastISel.cpp
435     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
436     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
437     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
438     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
439     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
440     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
441     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
442     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
443     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
444     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
445     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
446     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
447     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
448     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
449     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
450     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
451     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
452     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetLowering.cpp
453     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetSelectionDAGInfo.cpp
454     ${LLVM_DIR}/lib/CodeGen/ShrinkWrapping.cpp
455     ${LLVM_DIR}/lib/CodeGen/SjLjEHPrepare.cpp
456     ${LLVM_DIR}/lib/CodeGen/SlotIndexes.cpp
457     ${LLVM_DIR}/lib/CodeGen/SpillPlacement.cpp
458     ${LLVM_DIR}/lib/CodeGen/Spiller.cpp
459     ${LLVM_DIR}/lib/CodeGen/SplitKit.cpp
460     ${LLVM_DIR}/lib/CodeGen/StackProtector.cpp
461     ${LLVM_DIR}/lib/CodeGen/StackSlotColoring.cpp
462     ${LLVM_DIR}/lib/CodeGen/StrongPHIElimination.cpp
463     ${LLVM_DIR}/lib/CodeGen/TailDuplication.cpp
464     ${LLVM_DIR}/lib/CodeGen/TargetInstrInfoImpl.cpp
465     ${LLVM_DIR}/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
466     ${LLVM_DIR}/lib/CodeGen/TwoAddressInstructionPass.cpp
467     ${LLVM_DIR}/lib/CodeGen/UnreachableBlockElim.cpp
468     ${LLVM_DIR}/lib/CodeGen/VirtRegMap.cpp
469     ${LLVM_DIR}/lib/CodeGen/VirtRegRewriter.cpp
470     ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngine.cpp
471     ${LLVM_DIR}/lib/ExecutionEngine/JIT/Intercept.cpp
472     ${LLVM_DIR}/lib/ExecutionEngine/JIT/JIT.cpp
473     ${LLVM_DIR}/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp
474     ${LLVM_DIR}/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp
475     ${LLVM_DIR}/lib/ExecutionEngine/JIT/JITEmitter.cpp
476     ${LLVM_DIR}/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
477     ${LLVM_DIR}/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp
478     ${LLVM_DIR}/lib/ExecutionEngine/TargetSelect.cpp
479     ${LLVM_DIR}/lib/MC/ELFObjectWriter.cpp
480     ${LLVM_DIR}/lib/MC/MCAsmBackend.cpp
481     ${LLVM_DIR}/lib/MC/MCAsmInfo.cpp
482     ${LLVM_DIR}/lib/MC/MCAsmInfoCOFF.cpp
483     ${LLVM_DIR}/lib/MC/MCAsmInfoDarwin.cpp
484     ${LLVM_DIR}/lib/MC/MCAsmStreamer.cpp
485     ${LLVM_DIR}/lib/MC/MCAssembler.cpp
486     ${LLVM_DIR}/lib/MC/MCCodeEmitter.cpp
487     ${LLVM_DIR}/lib/MC/MCCodeGenInfo.cpp
488     ${LLVM_DIR}/lib/MC/MCContext.cpp
489     ${LLVM_DIR}/lib/MC/MCDwarf.cpp
490     ${LLVM_DIR}/lib/MC/MCELF.cpp
491     ${LLVM_DIR}/lib/MC/MCELFObjectTargetWriter.cpp
492     ${LLVM_DIR}/lib/MC/MCELFStreamer.cpp
493     ${LLVM_DIR}/lib/MC/MCExpr.cpp
494     ${LLVM_DIR}/lib/MC/MCInst.cpp
495     ${LLVM_DIR}/lib/MC/MCInstPrinter.cpp
496     ${LLVM_DIR}/lib/MC/MCInstrAnalysis.cpp
497     ${LLVM_DIR}/lib/MC/MCLoggingStreamer.cpp
498     ${LLVM_DIR}/lib/MC/MCMachOStreamer.cpp
499     ${LLVM_DIR}/lib/MC/MCMachObjectTargetWriter.cpp
500     ${LLVM_DIR}/lib/MC/MCNullStreamer.cpp
501     ${LLVM_DIR}/lib/MC/MCObjectFileInfo.cpp
502     ${LLVM_DIR}/lib/MC/MCObjectStreamer.cpp
503     ${LLVM_DIR}/lib/MC/MCObjectWriter.cpp
504     ${LLVM_DIR}/lib/MC/MCSection.cpp
505     ${LLVM_DIR}/lib/MC/MCSectionCOFF.cpp
506     ${LLVM_DIR}/lib/MC/MCSectionELF.cpp
507     ${LLVM_DIR}/lib/MC/MCSectionMachO.cpp
508     ${LLVM_DIR}/lib/MC/MCStreamer.cpp
509     ${LLVM_DIR}/lib/MC/MCSubtargetInfo.cpp
510     ${LLVM_DIR}/lib/MC/MCSymbol.cpp
511     ${LLVM_DIR}/lib/MC/MCWin64EH.cpp
512     ${LLVM_DIR}/lib/MC/MachObjectWriter.cpp
513     ${LLVM_DIR}/lib/MC/SubtargetFeature.cpp
514     ${LLVM_DIR}/lib/MC/WinCOFFObjectWriter.cpp
515     ${LLVM_DIR}/lib/MC/WinCOFFStreamer.cpp
516     ${LLVM_DIR}/lib/Support/APFloat.cpp
517     ${LLVM_DIR}/lib/Support/APInt.cpp
518     ${LLVM_DIR}/lib/Support/Allocator.cpp
519     ${LLVM_DIR}/lib/Support/Atomic.cpp
520     ${LLVM_DIR}/lib/Support/BlockFrequency.cpp
521     ${LLVM_DIR}/lib/Support/BranchProbability.cpp
522     ${LLVM_DIR}/lib/Support/CommandLine.cpp
523     ${LLVM_DIR}/lib/Support/ConstantRange.cpp
524     ${LLVM_DIR}/lib/Support/CrashRecoveryContext.cpp
525     ${LLVM_DIR}/lib/Support/DAGDeltaAlgorithm.cpp
526     ${LLVM_DIR}/lib/Support/DataExtractor.cpp
527     ${LLVM_DIR}/lib/Support/Debug.cpp
528     ${LLVM_DIR}/lib/Support/DeltaAlgorithm.cpp
529     ${LLVM_DIR}/lib/Support/Disassembler.cpp
530     ${LLVM_DIR}/lib/Support/Dwarf.cpp
531     ${LLVM_DIR}/lib/Support/DynamicLibrary.cpp
532     ${LLVM_DIR}/lib/Support/Errno.cpp
533     ${LLVM_DIR}/lib/Support/ErrorHandling.cpp
534     ${LLVM_DIR}/lib/Support/FileUtilities.cpp
535     ${LLVM_DIR}/lib/Support/FoldingSet.cpp
536     ${LLVM_DIR}/lib/Support/FormattedStream.cpp
537     ${LLVM_DIR}/lib/Support/GraphWriter.cpp
538     ${LLVM_DIR}/lib/Support/Host.cpp
539     ${LLVM_DIR}/lib/Support/IncludeFile.cpp
540     ${LLVM_DIR}/lib/Support/IntEqClasses.cpp
541     ${LLVM_DIR}/lib/Support/IntervalMap.cpp
542     ${LLVM_DIR}/lib/Support/IsInf.cpp
543     ${LLVM_DIR}/lib/Support/IsNAN.cpp
544     ${LLVM_DIR}/lib/Support/ManagedStatic.cpp
545     ${LLVM_DIR}/lib/Support/Memory.cpp
546     ${LLVM_DIR}/lib/Support/MemoryBuffer.cpp
547     ${LLVM_DIR}/lib/Support/MemoryObject.cpp
548     ${LLVM_DIR}/lib/Support/Mutex.cpp
549     ${LLVM_DIR}/lib/Support/Path.cpp
550     ${LLVM_DIR}/lib/Support/PathV2.cpp
551     ${LLVM_DIR}/lib/Support/PrettyStackTrace.cpp
552     ${LLVM_DIR}/lib/Support/Process.cpp
553     ${LLVM_DIR}/lib/Support/Program.cpp
554     ${LLVM_DIR}/lib/Support/RWMutex.cpp
555     ${LLVM_DIR}/lib/Support/SearchForAddressOfSpecialSymbol.cpp
556     ${LLVM_DIR}/lib/Support/Signals.cpp
557     ${LLVM_DIR}/lib/Support/SmallPtrSet.cpp
558     ${LLVM_DIR}/lib/Support/SmallVector.cpp
559     ${LLVM_DIR}/lib/Support/SourceMgr.cpp
560     ${LLVM_DIR}/lib/Support/Statistic.cpp
561     ${LLVM_DIR}/lib/Support/StringExtras.cpp
562     ${LLVM_DIR}/lib/Support/StringMap.cpp
563     ${LLVM_DIR}/lib/Support/StringPool.cpp
564     ${LLVM_DIR}/lib/Support/StringRef.cpp
565     ${LLVM_DIR}/lib/Support/SystemUtils.cpp
566     ${LLVM_DIR}/lib/Support/TargetRegistry.cpp
567     ${LLVM_DIR}/lib/Support/ThreadLocal.cpp
568     ${LLVM_DIR}/lib/Support/Threading.cpp
569     ${LLVM_DIR}/lib/Support/TimeValue.cpp
570     ${LLVM_DIR}/lib/Support/Timer.cpp
571     ${LLVM_DIR}/lib/Support/ToolOutputFile.cpp
572     ${LLVM_DIR}/lib/Support/Triple.cpp
573     ${LLVM_DIR}/lib/Support/Twine.cpp
574     ${LLVM_DIR}/lib/Support/Valgrind.cpp
575     ${LLVM_DIR}/lib/Support/circular_raw_ostream.cpp
576     ${LLVM_DIR}/lib/Support/raw_os_ostream.cpp
577     ${LLVM_DIR}/lib/Support/raw_ostream.cpp
578     ${LLVM_DIR}/lib/Support/system_error.cpp
579     ${LLVM_DIR}/lib/Target/Mangler.cpp
580     ${LLVM_DIR}/lib/Target/TargetData.cpp
581     ${LLVM_DIR}/lib/Target/TargetELFWriterInfo.cpp
582     ${LLVM_DIR}/lib/Target/TargetFrameLowering.cpp
583     ${LLVM_DIR}/lib/Target/TargetInstrInfo.cpp
584     ${LLVM_DIR}/lib/Target/TargetLibraryInfo.cpp
585     ${LLVM_DIR}/lib/Target/TargetLoweringObjectFile.cpp
586     ${LLVM_DIR}/lib/Target/TargetMachine.cpp
587     ${LLVM_DIR}/lib/Target/TargetRegisterInfo.cpp
588     ${LLVM_DIR}/lib/Target/TargetSubtargetInfo.cpp
589     ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
590     ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstComments.cpp
591     ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
592     ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
593     ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
594     ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
595     ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
596     ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
597     ${LLVM_DIR}/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
598     ${LLVM_DIR}/lib/Target/X86/Utils/X86ShuffleDecode.cpp
599     ${LLVM_DIR}/lib/Target/X86/X86CodeEmitter.cpp
600     ${LLVM_DIR}/lib/Target/X86/X86ELFWriterInfo.cpp
601     ${LLVM_DIR}/lib/Target/X86/X86FastISel.cpp
602     ${LLVM_DIR}/lib/Target/X86/X86FloatingPoint.cpp
603     ${LLVM_DIR}/lib/Target/X86/X86FrameLowering.cpp
604     ${LLVM_DIR}/lib/Target/X86/X86ISelDAGToDAG.cpp
605     ${LLVM_DIR}/lib/Target/X86/X86ISelLowering.cpp
606     ${LLVM_DIR}/lib/Target/X86/X86InstrInfo.cpp
607     ${LLVM_DIR}/lib/Target/X86/X86JITInfo.cpp
608     ${LLVM_DIR}/lib/Target/X86/X86RegisterInfo.cpp
609     ${LLVM_DIR}/lib/Target/X86/X86SelectionDAGInfo.cpp
610     ${LLVM_DIR}/lib/Target/X86/X86Subtarget.cpp
611     ${LLVM_DIR}/lib/Target/X86/X86TargetMachine.cpp
612     ${LLVM_DIR}/lib/Target/X86/X86TargetObjectFile.cpp
613     ${LLVM_DIR}/lib/Target/X86/X86VZeroUpper.cpp
614     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAddSub.cpp
615     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
616     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCalls.cpp
617     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCasts.cpp
618     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCompares.cpp
619     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
620     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
621     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombinePHI.cpp
622     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSelect.cpp
623     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineShifts.cpp
624     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
625     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
626     ${LLVM_DIR}/lib/Transforms/InstCombine/InstructionCombining.cpp
627     ${LLVM_DIR}/lib/Transforms/Scalar/ADCE.cpp
628     ${LLVM_DIR}/lib/Transforms/Scalar/CodeGenPrepare.cpp
629     ${LLVM_DIR}/lib/Transforms/Scalar/DeadStoreElimination.cpp
630     ${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
631     ${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
632     ${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
633     ${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
634     ${LLVM_DIR}/lib/Transforms/Scalar/Reg2Mem.cpp
635     ${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
636     ${LLVM_DIR}/lib/Transforms/Scalar/ScalarReplAggregates.cpp
637     ${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
638     ${LLVM_DIR}/lib/Transforms/Utils/AddrModeMatcher.cpp
639     ${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
640     ${LLVM_DIR}/lib/Transforms/Utils/BreakCriticalEdges.cpp
641     ${LLVM_DIR}/lib/Transforms/Utils/BuildLibCalls.cpp
642     ${LLVM_DIR}/lib/Transforms/Utils/DemoteRegToStack.cpp
643     ${LLVM_DIR}/lib/Transforms/Utils/InstructionNamer.cpp
644     ${LLVM_DIR}/lib/Transforms/Utils/LCSSA.cpp
645     ${LLVM_DIR}/lib/Transforms/Utils/Local.cpp
646     ${LLVM_DIR}/lib/Transforms/Utils/LoopSimplify.cpp
647     ${LLVM_DIR}/lib/Transforms/Utils/LowerInvoke.cpp
648     ${LLVM_DIR}/lib/Transforms/Utils/LowerSwitch.cpp
649     ${LLVM_DIR}/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
650     ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdater.cpp
651     ${LLVM_DIR}/lib/Transforms/Utils/SimplifyCFG.cpp
652     ${LLVM_DIR}/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
653     ${LLVM_DIR}/lib/VMCore/AsmWriter.cpp
654     ${LLVM_DIR}/lib/VMCore/Attributes.cpp
655     ${LLVM_DIR}/lib/VMCore/BasicBlock.cpp
656     ${LLVM_DIR}/lib/VMCore/ConstantFold.cpp
657     ${LLVM_DIR}/lib/VMCore/Constants.cpp
658     ${LLVM_DIR}/lib/VMCore/DebugInfoProbe.cpp
659     ${LLVM_DIR}/lib/VMCore/DebugLoc.cpp
660     ${LLVM_DIR}/lib/VMCore/Dominators.cpp
661     ${LLVM_DIR}/lib/VMCore/Function.cpp
662     ${LLVM_DIR}/lib/VMCore/Globals.cpp
663     ${LLVM_DIR}/lib/VMCore/IRBuilder.cpp
664     ${LLVM_DIR}/lib/VMCore/InlineAsm.cpp
665     ${LLVM_DIR}/lib/VMCore/Instruction.cpp
666     ${LLVM_DIR}/lib/VMCore/Instructions.cpp
667     ${LLVM_DIR}/lib/VMCore/IntrinsicInst.cpp
668     ${LLVM_DIR}/lib/VMCore/LLVMContext.cpp
669     ${LLVM_DIR}/lib/VMCore/LLVMContextImpl.cpp
670     ${LLVM_DIR}/lib/VMCore/LeakDetector.cpp
671     ${LLVM_DIR}/lib/VMCore/Metadata.cpp
672     ${LLVM_DIR}/lib/VMCore/Module.cpp
673     ${LLVM_DIR}/lib/VMCore/Pass.cpp
674     ${LLVM_DIR}/lib/VMCore/PassManager.cpp
675     ${LLVM_DIR}/lib/VMCore/PassRegistry.cpp
676     ${LLVM_DIR}/lib/VMCore/PrintModulePass.cpp
677     ${LLVM_DIR}/lib/VMCore/Type.cpp
678     ${LLVM_DIR}/lib/VMCore/Use.cpp
679     ${LLVM_DIR}/lib/VMCore/User.cpp
680     ${LLVM_DIR}/lib/VMCore/Value.cpp
681     ${LLVM_DIR}/lib/VMCore/ValueSymbolTable.cpp
682     ${LLVM_DIR}/lib/VMCore/ValueTypes.cpp
683     ${LLVM_DIR}/lib/VMCore/Verifier.cpp
684 )
685
686 if(WIN32)
687     set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include)
688 elseif(LINUX)
689     set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-linux)
690 elseif(APPLE)
691     set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-osx)
692 elseif(ANDROID)
693     set(LLVM_INCLUDE_DIR ${LLVM_DIR}/include-android)
694 endif()
695
696 list(APPEND LLVM_INCLUDE_DIR
697     ${LLVM_DIR}/include
698     ${LLVM_DIR}/lib/Target/X86
699 )
700
701 elseif(REACTOR_LLVM_VERSION EQUAL 7)
702
703 set(LLVM_LIST
704     ${LLVM_DIR}/lib/Analysis/AliasAnalysis.cpp
705     ${LLVM_DIR}/lib/Analysis/AliasAnalysisEvaluator.cpp
706     ${LLVM_DIR}/lib/Analysis/AliasAnalysisSummary.cpp
707     ${LLVM_DIR}/lib/Analysis/AliasSetTracker.cpp
708     ${LLVM_DIR}/lib/Analysis/Analysis.cpp
709     ${LLVM_DIR}/lib/Analysis/AssumptionCache.cpp
710     ${LLVM_DIR}/lib/Analysis/BasicAliasAnalysis.cpp
711     ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfo.cpp
712     ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfoImpl.cpp
713     ${LLVM_DIR}/lib/Analysis/BranchProbabilityInfo.cpp
714     ${LLVM_DIR}/lib/Analysis/CFG.cpp
715     ${LLVM_DIR}/lib/Analysis/CFGPrinter.cpp
716     ${LLVM_DIR}/lib/Analysis/CFLAndersAliasAnalysis.cpp
717     ${LLVM_DIR}/lib/Analysis/CFLSteensAliasAnalysis.cpp
718     ${LLVM_DIR}/lib/Analysis/CGSCCPassManager.cpp
719     ${LLVM_DIR}/lib/Analysis/CallGraph.cpp
720     ${LLVM_DIR}/lib/Analysis/CallGraphSCCPass.cpp
721     ${LLVM_DIR}/lib/Analysis/CallPrinter.cpp
722     ${LLVM_DIR}/lib/Analysis/CaptureTracking.cpp
723     ${LLVM_DIR}/lib/Analysis/CmpInstAnalysis.cpp
724     ${LLVM_DIR}/lib/Analysis/CodeMetrics.cpp
725     ${LLVM_DIR}/lib/Analysis/ConstantFolding.cpp
726     ${LLVM_DIR}/lib/Analysis/CostModel.cpp
727     ${LLVM_DIR}/lib/Analysis/Delinearization.cpp
728     ${LLVM_DIR}/lib/Analysis/DemandedBits.cpp
729     ${LLVM_DIR}/lib/Analysis/DependenceAnalysis.cpp
730     ${LLVM_DIR}/lib/Analysis/DivergenceAnalysis.cpp
731     ${LLVM_DIR}/lib/Analysis/DomPrinter.cpp
732     ${LLVM_DIR}/lib/Analysis/DominanceFrontier.cpp
733     ${LLVM_DIR}/lib/Analysis/EHPersonalities.cpp
734     ${LLVM_DIR}/lib/Analysis/GlobalsModRef.cpp
735     ${LLVM_DIR}/lib/Analysis/IVUsers.cpp
736     ${LLVM_DIR}/lib/Analysis/IndirectCallPromotionAnalysis.cpp
737     ${LLVM_DIR}/lib/Analysis/InlineCost.cpp
738     ${LLVM_DIR}/lib/Analysis/InstCount.cpp
739     ${LLVM_DIR}/lib/Analysis/InstructionSimplify.cpp
740     ${LLVM_DIR}/lib/Analysis/Interval.cpp
741     ${LLVM_DIR}/lib/Analysis/IntervalPartition.cpp
742     ${LLVM_DIR}/lib/Analysis/IteratedDominanceFrontier.cpp
743     ${LLVM_DIR}/lib/Analysis/LazyBlockFrequencyInfo.cpp
744     ${LLVM_DIR}/lib/Analysis/LazyBranchProbabilityInfo.cpp
745     ${LLVM_DIR}/lib/Analysis/LazyCallGraph.cpp
746     ${LLVM_DIR}/lib/Analysis/LazyValueInfo.cpp
747     ${LLVM_DIR}/lib/Analysis/Lint.cpp
748     ${LLVM_DIR}/lib/Analysis/Loads.cpp
749     ${LLVM_DIR}/lib/Analysis/LoopAccessAnalysis.cpp
750     ${LLVM_DIR}/lib/Analysis/LoopAnalysisManager.cpp
751     ${LLVM_DIR}/lib/Analysis/LoopInfo.cpp
752     ${LLVM_DIR}/lib/Analysis/LoopPass.cpp
753     ${LLVM_DIR}/lib/Analysis/LoopUnrollAnalyzer.cpp
754     ${LLVM_DIR}/lib/Analysis/MemDepPrinter.cpp
755     ${LLVM_DIR}/lib/Analysis/MemDerefPrinter.cpp
756     ${LLVM_DIR}/lib/Analysis/MemoryBuiltins.cpp
757     ${LLVM_DIR}/lib/Analysis/MemoryDependenceAnalysis.cpp
758     ${LLVM_DIR}/lib/Analysis/MemoryLocation.cpp
759     ${LLVM_DIR}/lib/Analysis/MemorySSA.cpp
760     ${LLVM_DIR}/lib/Analysis/MemorySSAUpdater.cpp
761     ${LLVM_DIR}/lib/Analysis/ModuleDebugInfoPrinter.cpp
762     ${LLVM_DIR}/lib/Analysis/ModuleSummaryAnalysis.cpp
763     ${LLVM_DIR}/lib/Analysis/MustExecute.cpp
764     ${LLVM_DIR}/lib/Analysis/ObjCARCAliasAnalysis.cpp
765     ${LLVM_DIR}/lib/Analysis/ObjCARCAnalysisUtils.cpp
766     ${LLVM_DIR}/lib/Analysis/ObjCARCInstKind.cpp
767     ${LLVM_DIR}/lib/Analysis/OptimizationRemarkEmitter.cpp
768     ${LLVM_DIR}/lib/Analysis/OrderedBasicBlock.cpp
769     ${LLVM_DIR}/lib/Analysis/PHITransAddr.cpp
770     ${LLVM_DIR}/lib/Analysis/PhiValues.cpp
771     ${LLVM_DIR}/lib/Analysis/PostDominators.cpp
772     ${LLVM_DIR}/lib/Analysis/ProfileSummaryInfo.cpp
773     ${LLVM_DIR}/lib/Analysis/PtrUseVisitor.cpp
774     ${LLVM_DIR}/lib/Analysis/RegionInfo.cpp
775     ${LLVM_DIR}/lib/Analysis/RegionPass.cpp
776     ${LLVM_DIR}/lib/Analysis/RegionPrinter.cpp
777     ${LLVM_DIR}/lib/Analysis/ScalarEvolution.cpp
778     ${LLVM_DIR}/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
779     ${LLVM_DIR}/lib/Analysis/ScalarEvolutionExpander.cpp
780     ${LLVM_DIR}/lib/Analysis/ScalarEvolutionNormalization.cpp
781     ${LLVM_DIR}/lib/Analysis/ScopedNoAliasAA.cpp
782     ${LLVM_DIR}/lib/Analysis/SyntheticCountsUtils.cpp
783     ${LLVM_DIR}/lib/Analysis/TargetLibraryInfo.cpp
784     ${LLVM_DIR}/lib/Analysis/TargetTransformInfo.cpp
785     ${LLVM_DIR}/lib/Analysis/Trace.cpp
786     ${LLVM_DIR}/lib/Analysis/TypeBasedAliasAnalysis.cpp
787     ${LLVM_DIR}/lib/Analysis/TypeMetadataUtils.cpp
788     ${LLVM_DIR}/lib/Analysis/ValueLattice.cpp
789     ${LLVM_DIR}/lib/Analysis/ValueLatticeUtils.cpp
790     ${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
791     ${LLVM_DIR}/lib/Analysis/VectorUtils.cpp
792     ${LLVM_DIR}/lib/AsmParser/LLLexer.cpp
793     ${LLVM_DIR}/lib/AsmParser/LLParser.cpp
794     ${LLVM_DIR}/lib/AsmParser/Parser.cpp
795     ${LLVM_DIR}/lib/BinaryFormat/Dwarf.cpp
796     ${LLVM_DIR}/lib/BinaryFormat/Magic.cpp
797     ${LLVM_DIR}/lib/BinaryFormat/Wasm.cpp
798     ${LLVM_DIR}/lib/Bitcode/Reader/BitReader.cpp
799     ${LLVM_DIR}/lib/Bitcode/Reader/BitcodeReader.cpp
800     ${LLVM_DIR}/lib/Bitcode/Reader/BitstreamReader.cpp
801     ${LLVM_DIR}/lib/Bitcode/Reader/MetadataLoader.cpp
802     ${LLVM_DIR}/lib/Bitcode/Reader/ValueList.cpp
803     ${LLVM_DIR}/lib/Bitcode/Writer/BitWriter.cpp
804     ${LLVM_DIR}/lib/Bitcode/Writer/BitcodeWriter.cpp
805     ${LLVM_DIR}/lib/Bitcode/Writer/BitcodeWriterPass.cpp
806     ${LLVM_DIR}/lib/Bitcode/Writer/ValueEnumerator.cpp
807     ${LLVM_DIR}/lib/CodeGen/AggressiveAntiDepBreaker.cpp
808     ${LLVM_DIR}/lib/CodeGen/AllocationOrder.cpp
809     ${LLVM_DIR}/lib/CodeGen/Analysis.cpp
810     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/ARMException.cpp
811     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AccelTable.cpp
812     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AddressPool.cpp
813     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
814     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
815     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
816     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
817     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIE.cpp
818     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIEHash.cpp
819     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp
820     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
821     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugLocStream.cpp
822     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
823     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
824     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
825     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
826     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfFile.cpp
827     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
828     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
829     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/EHStreamer.cpp
830     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/ErlangGCPrinter.cpp
831     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp
832     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinCFGuard.cpp
833     ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinException.cpp
834     ${LLVM_DIR}/lib/CodeGen/AtomicExpandPass.cpp
835     ${LLVM_DIR}/lib/CodeGen/BasicTargetTransformInfo.cpp
836     ${LLVM_DIR}/lib/CodeGen/BranchFolding.cpp
837     ${LLVM_DIR}/lib/CodeGen/BranchRelaxation.cpp
838     ${LLVM_DIR}/lib/CodeGen/BreakFalseDeps.cpp
839     ${LLVM_DIR}/lib/CodeGen/BuiltinGCs.cpp
840     ${LLVM_DIR}/lib/CodeGen/CFIInstrInserter.cpp
841     ${LLVM_DIR}/lib/CodeGen/CalcSpillWeights.cpp
842     ${LLVM_DIR}/lib/CodeGen/CallingConvLower.cpp
843     ${LLVM_DIR}/lib/CodeGen/CodeGen.cpp
844     ${LLVM_DIR}/lib/CodeGen/CodeGenPrepare.cpp
845     ${LLVM_DIR}/lib/CodeGen/CriticalAntiDepBreaker.cpp
846     ${LLVM_DIR}/lib/CodeGen/DFAPacketizer.cpp
847     ${LLVM_DIR}/lib/CodeGen/DeadMachineInstructionElim.cpp
848     ${LLVM_DIR}/lib/CodeGen/DetectDeadLanes.cpp
849     ${LLVM_DIR}/lib/CodeGen/DwarfEHPrepare.cpp
850     ${LLVM_DIR}/lib/CodeGen/EarlyIfConversion.cpp
851     ${LLVM_DIR}/lib/CodeGen/EdgeBundles.cpp
852     ${LLVM_DIR}/lib/CodeGen/ExecutionDomainFix.cpp
853     ${LLVM_DIR}/lib/CodeGen/ExpandISelPseudos.cpp
854     ${LLVM_DIR}/lib/CodeGen/ExpandMemCmp.cpp
855     ${LLVM_DIR}/lib/CodeGen/ExpandPostRAPseudos.cpp
856     ${LLVM_DIR}/lib/CodeGen/ExpandReductions.cpp
857     ${LLVM_DIR}/lib/CodeGen/FEntryInserter.cpp
858     ${LLVM_DIR}/lib/CodeGen/FaultMaps.cpp
859     ${LLVM_DIR}/lib/CodeGen/FuncletLayout.cpp
860     ${LLVM_DIR}/lib/CodeGen/GCMetadata.cpp
861     ${LLVM_DIR}/lib/CodeGen/GCMetadataPrinter.cpp
862     ${LLVM_DIR}/lib/CodeGen/GCRootLowering.cpp
863     ${LLVM_DIR}/lib/CodeGen/GCStrategy.cpp
864     ${LLVM_DIR}/lib/CodeGen/GlobalISel/CallLowering.cpp
865     ${LLVM_DIR}/lib/CodeGen/GlobalISel/Combiner.cpp
866     ${LLVM_DIR}/lib/CodeGen/GlobalISel/CombinerHelper.cpp
867     ${LLVM_DIR}/lib/CodeGen/GlobalISel/GlobalISel.cpp
868     ${LLVM_DIR}/lib/CodeGen/GlobalISel/IRTranslator.cpp
869     ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelect.cpp
870     ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelector.cpp
871     ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalityPredicates.cpp
872     ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
873     ${LLVM_DIR}/lib/CodeGen/GlobalISel/Legalizer.cpp
874     ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
875     ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
876     ${LLVM_DIR}/lib/CodeGen/GlobalISel/Localizer.cpp
877     ${LLVM_DIR}/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
878     ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegBankSelect.cpp
879     ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBank.cpp
880     ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
881     ${LLVM_DIR}/lib/CodeGen/GlobalISel/Utils.cpp
882     ${LLVM_DIR}/lib/CodeGen/GlobalMerge.cpp
883     ${LLVM_DIR}/lib/CodeGen/IfConversion.cpp
884     ${LLVM_DIR}/lib/CodeGen/ImplicitNullChecks.cpp
885     ${LLVM_DIR}/lib/CodeGen/IndirectBrExpandPass.cpp
886     ${LLVM_DIR}/lib/CodeGen/InlineSpiller.cpp
887     ${LLVM_DIR}/lib/CodeGen/InterferenceCache.cpp
888     ${LLVM_DIR}/lib/CodeGen/InterleavedAccessPass.cpp
889     ${LLVM_DIR}/lib/CodeGen/IntrinsicLowering.cpp
890     ${LLVM_DIR}/lib/CodeGen/LLVMTargetMachine.cpp
891     ${LLVM_DIR}/lib/CodeGen/LatencyPriorityQueue.cpp
892     ${LLVM_DIR}/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp
893     ${LLVM_DIR}/lib/CodeGen/LexicalScopes.cpp
894     ${LLVM_DIR}/lib/CodeGen/LiveDebugValues.cpp
895     ${LLVM_DIR}/lib/CodeGen/LiveDebugVariables.cpp
896     ${LLVM_DIR}/lib/CodeGen/LiveInterval.cpp
897     ${LLVM_DIR}/lib/CodeGen/LiveIntervalUnion.cpp
898     ${LLVM_DIR}/lib/CodeGen/LiveIntervals.cpp
899     ${LLVM_DIR}/lib/CodeGen/LivePhysRegs.cpp
900     ${LLVM_DIR}/lib/CodeGen/LiveRangeCalc.cpp
901     ${LLVM_DIR}/lib/CodeGen/LiveRangeEdit.cpp
902     ${LLVM_DIR}/lib/CodeGen/LiveRangeShrink.cpp
903     ${LLVM_DIR}/lib/CodeGen/LiveRegMatrix.cpp
904     ${LLVM_DIR}/lib/CodeGen/LiveRegUnits.cpp
905     ${LLVM_DIR}/lib/CodeGen/LiveStacks.cpp
906     ${LLVM_DIR}/lib/CodeGen/LiveVariables.cpp
907     ${LLVM_DIR}/lib/CodeGen/LocalStackSlotAllocation.cpp
908     ${LLVM_DIR}/lib/CodeGen/LoopTraversal.cpp
909     ${LLVM_DIR}/lib/CodeGen/LowLevelType.cpp
910     ${LLVM_DIR}/lib/CodeGen/LowerEmuTLS.cpp
911     ${LLVM_DIR}/lib/CodeGen/MIRCanonicalizerPass.cpp
912     ${LLVM_DIR}/lib/CodeGen/MIRPrinter.cpp
913     ${LLVM_DIR}/lib/CodeGen/MIRPrintingPass.cpp
914     ${LLVM_DIR}/lib/CodeGen/MachineBasicBlock.cpp
915     ${LLVM_DIR}/lib/CodeGen/MachineBlockFrequencyInfo.cpp
916     ${LLVM_DIR}/lib/CodeGen/MachineBlockPlacement.cpp
917     ${LLVM_DIR}/lib/CodeGen/MachineBranchProbabilityInfo.cpp
918     ${LLVM_DIR}/lib/CodeGen/MachineCSE.cpp
919     ${LLVM_DIR}/lib/CodeGen/MachineCombiner.cpp
920     ${LLVM_DIR}/lib/CodeGen/MachineCopyPropagation.cpp
921     ${LLVM_DIR}/lib/CodeGen/MachineDominanceFrontier.cpp
922     ${LLVM_DIR}/lib/CodeGen/MachineDominators.cpp
923     ${LLVM_DIR}/lib/CodeGen/MachineFrameInfo.cpp
924     ${LLVM_DIR}/lib/CodeGen/MachineFunction.cpp
925     ${LLVM_DIR}/lib/CodeGen/MachineFunctionPass.cpp
926     ${LLVM_DIR}/lib/CodeGen/MachineFunctionPrinterPass.cpp
927     ${LLVM_DIR}/lib/CodeGen/MachineInstr.cpp
928     ${LLVM_DIR}/lib/CodeGen/MachineInstrBundle.cpp
929     ${LLVM_DIR}/lib/CodeGen/MachineLICM.cpp
930     ${LLVM_DIR}/lib/CodeGen/MachineLoopInfo.cpp
931     ${LLVM_DIR}/lib/CodeGen/MachineModuleInfo.cpp
932     ${LLVM_DIR}/lib/CodeGen/MachineModuleInfoImpls.cpp
933     ${LLVM_DIR}/lib/CodeGen/MachineOperand.cpp
934     ${LLVM_DIR}/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
935     ${LLVM_DIR}/lib/CodeGen/MachineOutliner.cpp
936     ${LLVM_DIR}/lib/CodeGen/MachinePassRegistry.cpp
937     ${LLVM_DIR}/lib/CodeGen/MachinePipeliner.cpp
938     ${LLVM_DIR}/lib/CodeGen/MachinePostDominators.cpp
939     ${LLVM_DIR}/lib/CodeGen/MachineRegionInfo.cpp
940     ${LLVM_DIR}/lib/CodeGen/MachineRegisterInfo.cpp
941     ${LLVM_DIR}/lib/CodeGen/MachineSSAUpdater.cpp
942     ${LLVM_DIR}/lib/CodeGen/MachineScheduler.cpp
943     ${LLVM_DIR}/lib/CodeGen/MachineSink.cpp
944     ${LLVM_DIR}/lib/CodeGen/MachineTraceMetrics.cpp
945     ${LLVM_DIR}/lib/CodeGen/MachineVerifier.cpp
946     ${LLVM_DIR}/lib/CodeGen/MacroFusion.cpp
947     ${LLVM_DIR}/lib/CodeGen/OptimizePHIs.cpp
948     ${LLVM_DIR}/lib/CodeGen/PHIElimination.cpp
949     ${LLVM_DIR}/lib/CodeGen/PHIEliminationUtils.cpp
950     ${LLVM_DIR}/lib/CodeGen/ParallelCG.cpp
951     ${LLVM_DIR}/lib/CodeGen/PatchableFunction.cpp
952     ${LLVM_DIR}/lib/CodeGen/PeepholeOptimizer.cpp
953     ${LLVM_DIR}/lib/CodeGen/PostRAHazardRecognizer.cpp
954     ${LLVM_DIR}/lib/CodeGen/PostRASchedulerList.cpp
955     ${LLVM_DIR}/lib/CodeGen/PreISelIntrinsicLowering.cpp
956     ${LLVM_DIR}/lib/CodeGen/ProcessImplicitDefs.cpp
957     ${LLVM_DIR}/lib/CodeGen/PrologEpilogInserter.cpp
958     ${LLVM_DIR}/lib/CodeGen/PseudoSourceValue.cpp
959     ${LLVM_DIR}/lib/CodeGen/ReachingDefAnalysis.cpp
960     ${LLVM_DIR}/lib/CodeGen/RegAllocBase.cpp
961     ${LLVM_DIR}/lib/CodeGen/RegAllocBasic.cpp
962     ${LLVM_DIR}/lib/CodeGen/RegAllocFast.cpp
963     ${LLVM_DIR}/lib/CodeGen/RegAllocGreedy.cpp
964     ${LLVM_DIR}/lib/CodeGen/RegAllocPBQP.cpp
965     ${LLVM_DIR}/lib/CodeGen/RegUsageInfoCollector.cpp
966     ${LLVM_DIR}/lib/CodeGen/RegUsageInfoPropagate.cpp
967     ${LLVM_DIR}/lib/CodeGen/RegisterClassInfo.cpp
968     ${LLVM_DIR}/lib/CodeGen/RegisterCoalescer.cpp
969     ${LLVM_DIR}/lib/CodeGen/RegisterPressure.cpp
970     ${LLVM_DIR}/lib/CodeGen/RegisterScavenging.cpp
971     ${LLVM_DIR}/lib/CodeGen/RegisterUsageInfo.cpp
972     ${LLVM_DIR}/lib/CodeGen/RenameIndependentSubregs.cpp
973     ${LLVM_DIR}/lib/CodeGen/ResetMachineFunctionPass.cpp
974     ${LLVM_DIR}/lib/CodeGen/SafeStack.cpp
975     ${LLVM_DIR}/lib/CodeGen/SafeStackColoring.cpp
976     ${LLVM_DIR}/lib/CodeGen/SafeStackLayout.cpp
977     ${LLVM_DIR}/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
978     ${LLVM_DIR}/lib/CodeGen/ScheduleDAG.cpp
979     ${LLVM_DIR}/lib/CodeGen/ScheduleDAGInstrs.cpp
980     ${LLVM_DIR}/lib/CodeGen/ScheduleDAGPrinter.cpp
981     ${LLVM_DIR}/lib/CodeGen/ScoreboardHazardRecognizer.cpp
982     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
983     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FastISel.cpp
984     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
985     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
986     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
987     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
988     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
989     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
990     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
991     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
992     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
993     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp
994     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
995     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
996     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
997     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
998     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
999     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
1000     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
1001     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
1002     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
1003     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
1004     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGTargetInfo.cpp
1005     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
1006     ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetLowering.cpp
1007     ${LLVM_DIR}/lib/CodeGen/ShadowStackGCLowering.cpp
1008     ${LLVM_DIR}/lib/CodeGen/ShrinkWrap.cpp
1009     ${LLVM_DIR}/lib/CodeGen/SjLjEHPrepare.cpp
1010     ${LLVM_DIR}/lib/CodeGen/SlotIndexes.cpp
1011     ${LLVM_DIR}/lib/CodeGen/SpillPlacement.cpp
1012     ${LLVM_DIR}/lib/CodeGen/SplitKit.cpp
1013     ${LLVM_DIR}/lib/CodeGen/StackColoring.cpp
1014     ${LLVM_DIR}/lib/CodeGen/StackMapLivenessAnalysis.cpp
1015     ${LLVM_DIR}/lib/CodeGen/StackMaps.cpp
1016     ${LLVM_DIR}/lib/CodeGen/StackProtector.cpp
1017     ${LLVM_DIR}/lib/CodeGen/StackSlotColoring.cpp
1018     ${LLVM_DIR}/lib/CodeGen/TailDuplication.cpp
1019     ${LLVM_DIR}/lib/CodeGen/TailDuplicator.cpp
1020     ${LLVM_DIR}/lib/CodeGen/TargetFrameLoweringImpl.cpp
1021     ${LLVM_DIR}/lib/CodeGen/TargetInstrInfo.cpp
1022     ${LLVM_DIR}/lib/CodeGen/TargetLoweringBase.cpp
1023     ${LLVM_DIR}/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
1024     ${LLVM_DIR}/lib/CodeGen/TargetOptionsImpl.cpp
1025     ${LLVM_DIR}/lib/CodeGen/TargetPassConfig.cpp
1026     ${LLVM_DIR}/lib/CodeGen/TargetRegisterInfo.cpp
1027     ${LLVM_DIR}/lib/CodeGen/TargetSchedule.cpp
1028     ${LLVM_DIR}/lib/CodeGen/TargetSubtargetInfo.cpp
1029     ${LLVM_DIR}/lib/CodeGen/TwoAddressInstructionPass.cpp
1030     ${LLVM_DIR}/lib/CodeGen/UnreachableBlockElim.cpp
1031     ${LLVM_DIR}/lib/CodeGen/ValueTypes.cpp
1032     ${LLVM_DIR}/lib/CodeGen/VirtRegMap.cpp
1033     ${LLVM_DIR}/lib/CodeGen/WasmEHPrepare.cpp
1034     ${LLVM_DIR}/lib/CodeGen/WinEHPrepare.cpp
1035     ${LLVM_DIR}/lib/CodeGen/XRayInstrumentation.cpp
1036     ${LLVM_DIR}/lib/DebugInfo/CodeView/AppendingTypeTableBuilder.cpp
1037     ${LLVM_DIR}/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
1038     ${LLVM_DIR}/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
1039     ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewError.cpp
1040     ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
1041     ${LLVM_DIR}/lib/DebugInfo/CodeView/ContinuationRecordBuilder.cpp
1042     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugChecksumsSubsection.cpp
1043     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugCrossExSubsection.cpp
1044     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp
1045     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugFrameDataSubsection.cpp
1046     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugInlineeLinesSubsection.cpp
1047     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugLinesSubsection.cpp
1048     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp
1049     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugSubsection.cpp
1050     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugSubsectionRecord.cpp
1051     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugSubsectionVisitor.cpp
1052     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugSymbolRVASubsection.cpp
1053     ${LLVM_DIR}/lib/DebugInfo/CodeView/DebugSymbolsSubsection.cpp
1054     ${LLVM_DIR}/lib/DebugInfo/CodeView/EnumTables.cpp
1055     ${LLVM_DIR}/lib/DebugInfo/CodeView/Formatters.cpp
1056     ${LLVM_DIR}/lib/DebugInfo/CodeView/GlobalTypeTableBuilder.cpp
1057     ${LLVM_DIR}/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
1058     ${LLVM_DIR}/lib/DebugInfo/CodeView/Line.cpp
1059     ${LLVM_DIR}/lib/DebugInfo/CodeView/MergingTypeTableBuilder.cpp
1060     ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordName.cpp
1061     ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordSerialization.cpp
1062     ${LLVM_DIR}/lib/DebugInfo/CodeView/SimpleTypeSerializer.cpp
1063     ${LLVM_DIR}/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
1064     ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolDumper.cpp
1065     ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
1066     ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolSerializer.cpp
1067     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
1068     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeHashing.cpp
1069     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndex.cpp
1070     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
1071     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeRecordMapping.cpp
1072     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeStreamMerger.cpp
1073     ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeTableCollection.cpp
1074     ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngine.cpp
1075     ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngineBindings.cpp
1076     ${LLVM_DIR}/lib/ExecutionEngine/GDBRegistrationListener.cpp
1077     ${LLVM_DIR}/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp
1078     ${LLVM_DIR}/lib/ExecutionEngine/Orc/Core.cpp
1079     ${LLVM_DIR}/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
1080     ${LLVM_DIR}/lib/ExecutionEngine/Orc/IRCompileLayer.cpp
1081     ${LLVM_DIR}/lib/ExecutionEngine/Orc/IRTransformLayer.cpp
1082     ${LLVM_DIR}/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
1083     ${LLVM_DIR}/lib/ExecutionEngine/Orc/LLJIT.cpp
1084     ${LLVM_DIR}/lib/ExecutionEngine/Orc/Layer.cpp
1085     ${LLVM_DIR}/lib/ExecutionEngine/Orc/Legacy.cpp
1086     ${LLVM_DIR}/lib/ExecutionEngine/Orc/NullResolver.cpp
1087     ${LLVM_DIR}/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp
1088     ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcABISupport.cpp
1089     ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcCBindings.cpp
1090     ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcError.cpp
1091     ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp
1092     ${LLVM_DIR}/lib/ExecutionEngine/Orc/RPCUtils.cpp
1093     ${LLVM_DIR}/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
1094     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp
1095     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
1096     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
1097     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp
1098     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
1099     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
1100     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
1101     ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldELFMips.cpp
1102     ${LLVM_DIR}/lib/ExecutionEngine/SectionMemoryManager.cpp
1103     ${LLVM_DIR}/lib/ExecutionEngine/TargetSelect.cpp
1104     ${LLVM_DIR}/lib/IR/AsmWriter.cpp
1105     ${LLVM_DIR}/lib/IR/Attributes.cpp
1106     ${LLVM_DIR}/lib/IR/AutoUpgrade.cpp
1107     ${LLVM_DIR}/lib/IR/BasicBlock.cpp
1108     ${LLVM_DIR}/lib/IR/Comdat.cpp
1109     ${LLVM_DIR}/lib/IR/ConstantFold.cpp
1110     ${LLVM_DIR}/lib/IR/ConstantRange.cpp
1111     ${LLVM_DIR}/lib/IR/Constants.cpp
1112     ${LLVM_DIR}/lib/IR/Core.cpp
1113     ${LLVM_DIR}/lib/IR/DIBuilder.cpp
1114     ${LLVM_DIR}/lib/IR/DataLayout.cpp
1115     ${LLVM_DIR}/lib/IR/DebugInfo.cpp
1116     ${LLVM_DIR}/lib/IR/DebugInfoMetadata.cpp
1117     ${LLVM_DIR}/lib/IR/DebugLoc.cpp
1118     ${LLVM_DIR}/lib/IR/DiagnosticHandler.cpp
1119     ${LLVM_DIR}/lib/IR/DiagnosticInfo.cpp
1120     ${LLVM_DIR}/lib/IR/DiagnosticPrinter.cpp
1121     ${LLVM_DIR}/lib/IR/DomTreeUpdater.cpp
1122     ${LLVM_DIR}/lib/IR/Dominators.cpp
1123     ${LLVM_DIR}/lib/IR/Function.cpp
1124     ${LLVM_DIR}/lib/IR/GVMaterializer.cpp
1125     ${LLVM_DIR}/lib/IR/Globals.cpp
1126     ${LLVM_DIR}/lib/IR/IRBuilder.cpp
1127     ${LLVM_DIR}/lib/IR/IRPrintingPasses.cpp
1128     ${LLVM_DIR}/lib/IR/InlineAsm.cpp
1129     ${LLVM_DIR}/lib/IR/Instruction.cpp
1130     ${LLVM_DIR}/lib/IR/Instructions.cpp
1131     ${LLVM_DIR}/lib/IR/IntrinsicInst.cpp
1132     ${LLVM_DIR}/lib/IR/LLVMContext.cpp
1133     ${LLVM_DIR}/lib/IR/LLVMContextImpl.cpp
1134     ${LLVM_DIR}/lib/IR/LegacyPassManager.cpp
1135     ${LLVM_DIR}/lib/IR/MDBuilder.cpp
1136     ${LLVM_DIR}/lib/IR/Mangler.cpp
1137     ${LLVM_DIR}/lib/IR/Metadata.cpp
1138     ${LLVM_DIR}/lib/IR/Module.cpp
1139     ${LLVM_DIR}/lib/IR/ModuleSummaryIndex.cpp
1140     ${LLVM_DIR}/lib/IR/Operator.cpp
1141     ${LLVM_DIR}/lib/IR/OptBisect.cpp
1142     ${LLVM_DIR}/lib/IR/Pass.cpp
1143     ${LLVM_DIR}/lib/IR/PassManager.cpp
1144     ${LLVM_DIR}/lib/IR/PassRegistry.cpp
1145     ${LLVM_DIR}/lib/IR/ProfileSummary.cpp
1146     ${LLVM_DIR}/lib/IR/SafepointIRVerifier.cpp
1147     ${LLVM_DIR}/lib/IR/Statepoint.cpp
1148     ${LLVM_DIR}/lib/IR/Type.cpp
1149     ${LLVM_DIR}/lib/IR/TypeFinder.cpp
1150     ${LLVM_DIR}/lib/IR/Use.cpp
1151     ${LLVM_DIR}/lib/IR/User.cpp
1152     ${LLVM_DIR}/lib/IR/Value.cpp
1153     ${LLVM_DIR}/lib/IR/ValueSymbolTable.cpp
1154     ${LLVM_DIR}/lib/IR/Verifier.cpp
1155     ${LLVM_DIR}/lib/IRReader/IRReader.cpp
1156     ${LLVM_DIR}/lib/MC/ConstantPools.cpp
1157     ${LLVM_DIR}/lib/MC/ELFObjectWriter.cpp
1158     ${LLVM_DIR}/lib/MC/MCAsmBackend.cpp
1159     ${LLVM_DIR}/lib/MC/MCAsmInfo.cpp
1160     ${LLVM_DIR}/lib/MC/MCAsmInfoCOFF.cpp
1161     ${LLVM_DIR}/lib/MC/MCAsmInfoDarwin.cpp
1162     ${LLVM_DIR}/lib/MC/MCAsmInfoELF.cpp
1163     ${LLVM_DIR}/lib/MC/MCAsmInfoWasm.cpp
1164     ${LLVM_DIR}/lib/MC/MCAsmMacro.cpp
1165     ${LLVM_DIR}/lib/MC/MCAsmStreamer.cpp
1166     ${LLVM_DIR}/lib/MC/MCAssembler.cpp
1167     ${LLVM_DIR}/lib/MC/MCCodeEmitter.cpp
1168     ${LLVM_DIR}/lib/MC/MCCodePadder.cpp
1169     ${LLVM_DIR}/lib/MC/MCCodeView.cpp
1170     ${LLVM_DIR}/lib/MC/MCContext.cpp
1171     ${LLVM_DIR}/lib/MC/MCDisassembler/Disassembler.cpp
1172     ${LLVM_DIR}/lib/MC/MCDisassembler/MCDisassembler.cpp
1173     ${LLVM_DIR}/lib/MC/MCDisassembler/MCExternalSymbolizer.cpp
1174     ${LLVM_DIR}/lib/MC/MCDisassembler/MCRelocationInfo.cpp
1175     ${LLVM_DIR}/lib/MC/MCDisassembler/MCSymbolizer.cpp
1176     ${LLVM_DIR}/lib/MC/MCDwarf.cpp
1177     ${LLVM_DIR}/lib/MC/MCELFObjectTargetWriter.cpp
1178     ${LLVM_DIR}/lib/MC/MCELFStreamer.cpp
1179     ${LLVM_DIR}/lib/MC/MCExpr.cpp
1180     ${LLVM_DIR}/lib/MC/MCFragment.cpp
1181     ${LLVM_DIR}/lib/MC/MCInst.cpp
1182     ${LLVM_DIR}/lib/MC/MCInstPrinter.cpp
1183     ${LLVM_DIR}/lib/MC/MCInstrAnalysis.cpp
1184     ${LLVM_DIR}/lib/MC/MCInstrDesc.cpp
1185     ${LLVM_DIR}/lib/MC/MCLabel.cpp
1186     ${LLVM_DIR}/lib/MC/MCLinkerOptimizationHint.cpp
1187     ${LLVM_DIR}/lib/MC/MCMachOStreamer.cpp
1188     ${LLVM_DIR}/lib/MC/MCMachObjectTargetWriter.cpp
1189     ${LLVM_DIR}/lib/MC/MCNullStreamer.cpp
1190     ${LLVM_DIR}/lib/MC/MCObjectFileInfo.cpp
1191     ${LLVM_DIR}/lib/MC/MCObjectStreamer.cpp
1192     ${LLVM_DIR}/lib/MC/MCObjectWriter.cpp
1193     ${LLVM_DIR}/lib/MC/MCParser/AsmLexer.cpp
1194     ${LLVM_DIR}/lib/MC/MCParser/AsmParser.cpp
1195     ${LLVM_DIR}/lib/MC/MCParser/COFFAsmParser.cpp
1196     ${LLVM_DIR}/lib/MC/MCParser/DarwinAsmParser.cpp
1197     ${LLVM_DIR}/lib/MC/MCParser/ELFAsmParser.cpp
1198     ${LLVM_DIR}/lib/MC/MCParser/MCAsmLexer.cpp
1199     ${LLVM_DIR}/lib/MC/MCParser/MCAsmParser.cpp
1200     ${LLVM_DIR}/lib/MC/MCParser/MCAsmParserExtension.cpp
1201     ${LLVM_DIR}/lib/MC/MCParser/MCTargetAsmParser.cpp
1202     ${LLVM_DIR}/lib/MC/MCRegisterInfo.cpp
1203     ${LLVM_DIR}/lib/MC/MCSchedule.cpp
1204     ${LLVM_DIR}/lib/MC/MCSection.cpp
1205     ${LLVM_DIR}/lib/MC/MCSectionCOFF.cpp
1206     ${LLVM_DIR}/lib/MC/MCSectionELF.cpp
1207     ${LLVM_DIR}/lib/MC/MCSectionMachO.cpp
1208     ${LLVM_DIR}/lib/MC/MCSectionWasm.cpp
1209     ${LLVM_DIR}/lib/MC/MCStreamer.cpp
1210     ${LLVM_DIR}/lib/MC/MCSubtargetInfo.cpp
1211     ${LLVM_DIR}/lib/MC/MCSymbol.cpp
1212     ${LLVM_DIR}/lib/MC/MCSymbolELF.cpp
1213     ${LLVM_DIR}/lib/MC/MCTargetOptions.cpp
1214     ${LLVM_DIR}/lib/MC/MCValue.cpp
1215     ${LLVM_DIR}/lib/MC/MCWasmObjectTargetWriter.cpp
1216     ${LLVM_DIR}/lib/MC/MCWasmStreamer.cpp
1217     ${LLVM_DIR}/lib/MC/MCWin64EH.cpp
1218     ${LLVM_DIR}/lib/MC/MCWinCOFFStreamer.cpp
1219     ${LLVM_DIR}/lib/MC/MCWinEH.cpp
1220     ${LLVM_DIR}/lib/MC/MachObjectWriter.cpp
1221     ${LLVM_DIR}/lib/MC/StringTableBuilder.cpp
1222     ${LLVM_DIR}/lib/MC/SubtargetFeature.cpp
1223     ${LLVM_DIR}/lib/MC/WasmObjectWriter.cpp
1224     ${LLVM_DIR}/lib/MC/WinCOFFObjectWriter.cpp
1225     ${LLVM_DIR}/lib/Object/Archive.cpp
1226     ${LLVM_DIR}/lib/Object/ArchiveWriter.cpp
1227     ${LLVM_DIR}/lib/Object/Binary.cpp
1228     ${LLVM_DIR}/lib/Object/COFFImportFile.cpp
1229     ${LLVM_DIR}/lib/Object/COFFModuleDefinition.cpp
1230     ${LLVM_DIR}/lib/Object/COFFObjectFile.cpp
1231     ${LLVM_DIR}/lib/Object/Decompressor.cpp
1232     ${LLVM_DIR}/lib/Object/ELF.cpp
1233     ${LLVM_DIR}/lib/Object/ELFObjectFile.cpp
1234     ${LLVM_DIR}/lib/Object/Error.cpp
1235     ${LLVM_DIR}/lib/Object/IRObjectFile.cpp
1236     ${LLVM_DIR}/lib/Object/IRSymtab.cpp
1237     ${LLVM_DIR}/lib/Object/MachOObjectFile.cpp
1238     ${LLVM_DIR}/lib/Object/MachOUniversal.cpp
1239     ${LLVM_DIR}/lib/Object/ModuleSymbolTable.cpp
1240     ${LLVM_DIR}/lib/Object/Object.cpp
1241     ${LLVM_DIR}/lib/Object/ObjectFile.cpp
1242     ${LLVM_DIR}/lib/Object/RecordStreamer.cpp
1243     ${LLVM_DIR}/lib/Object/SymbolSize.cpp
1244     ${LLVM_DIR}/lib/Object/SymbolicFile.cpp
1245     ${LLVM_DIR}/lib/Object/WasmObjectFile.cpp
1246     ${LLVM_DIR}/lib/Object/WindowsResource.cpp
1247     ${LLVM_DIR}/lib/ProfileData/GCOV.cpp
1248     ${LLVM_DIR}/lib/ProfileData/InstrProf.cpp
1249     ${LLVM_DIR}/lib/ProfileData/InstrProfReader.cpp
1250     ${LLVM_DIR}/lib/ProfileData/InstrProfWriter.cpp
1251     ${LLVM_DIR}/lib/ProfileData/ProfileSummaryBuilder.cpp
1252     ${LLVM_DIR}/lib/ProfileData/SampleProf.cpp
1253     ${LLVM_DIR}/lib/ProfileData/SampleProfReader.cpp
1254     ${LLVM_DIR}/lib/ProfileData/SampleProfWriter.cpp
1255     ${LLVM_DIR}/lib/Support/AMDGPUMetadata.cpp
1256     ${LLVM_DIR}/lib/Support/APFloat.cpp
1257     ${LLVM_DIR}/lib/Support/APInt.cpp
1258     ${LLVM_DIR}/lib/Support/APSInt.cpp
1259     ${LLVM_DIR}/lib/Support/ARMAttributeParser.cpp
1260     ${LLVM_DIR}/lib/Support/ARMBuildAttrs.cpp
1261     ${LLVM_DIR}/lib/Support/ARMWinEH.cpp
1262     ${LLVM_DIR}/lib/Support/Allocator.cpp
1263     ${LLVM_DIR}/lib/Support/Atomic.cpp
1264     ${LLVM_DIR}/lib/Support/BinaryStreamError.cpp
1265     ${LLVM_DIR}/lib/Support/BinaryStreamReader.cpp
1266     ${LLVM_DIR}/lib/Support/BinaryStreamRef.cpp
1267     ${LLVM_DIR}/lib/Support/BinaryStreamWriter.cpp
1268     ${LLVM_DIR}/lib/Support/BlockFrequency.cpp
1269     ${LLVM_DIR}/lib/Support/BranchProbability.cpp
1270     ${LLVM_DIR}/lib/Support/COM.cpp
1271     ${LLVM_DIR}/lib/Support/CachePruning.cpp
1272     ${LLVM_DIR}/lib/Support/Chrono.cpp
1273     ${LLVM_DIR}/lib/Support/CodeGenCoverage.cpp
1274     ${LLVM_DIR}/lib/Support/CommandLine.cpp
1275     ${LLVM_DIR}/lib/Support/Compression.cpp
1276     ${LLVM_DIR}/lib/Support/ConvertUTF.cpp
1277     ${LLVM_DIR}/lib/Support/ConvertUTFWrapper.cpp
1278     ${LLVM_DIR}/lib/Support/CrashRecoveryContext.cpp
1279     ${LLVM_DIR}/lib/Support/DAGDeltaAlgorithm.cpp
1280     ${LLVM_DIR}/lib/Support/DJB.cpp
1281     ${LLVM_DIR}/lib/Support/DataExtractor.cpp
1282     ${LLVM_DIR}/lib/Support/Debug.cpp
1283     ${LLVM_DIR}/lib/Support/DebugCounter.cpp
1284     ${LLVM_DIR}/lib/Support/DeltaAlgorithm.cpp
1285     ${LLVM_DIR}/lib/Support/DynamicLibrary.cpp
1286     ${LLVM_DIR}/lib/Support/Errno.cpp
1287     ${LLVM_DIR}/lib/Support/Error.cpp
1288     ${LLVM_DIR}/lib/Support/ErrorHandling.cpp
1289     ${LLVM_DIR}/lib/Support/FileOutputBuffer.cpp
1290     ${LLVM_DIR}/lib/Support/FileUtilities.cpp
1291     ${LLVM_DIR}/lib/Support/FoldingSet.cpp
1292     ${LLVM_DIR}/lib/Support/FormatVariadic.cpp
1293     ${LLVM_DIR}/lib/Support/FormattedStream.cpp
1294     ${LLVM_DIR}/lib/Support/GlobPattern.cpp
1295     ${LLVM_DIR}/lib/Support/GraphWriter.cpp
1296     ${LLVM_DIR}/lib/Support/Hashing.cpp
1297     ${LLVM_DIR}/lib/Support/Host.cpp
1298     ${LLVM_DIR}/lib/Support/InitLLVM.cpp
1299     ${LLVM_DIR}/lib/Support/IntEqClasses.cpp
1300     ${LLVM_DIR}/lib/Support/IntervalMap.cpp
1301     ${LLVM_DIR}/lib/Support/JSON.cpp
1302     ${LLVM_DIR}/lib/Support/JamCRC.cpp
1303     ${LLVM_DIR}/lib/Support/KnownBits.cpp
1304     ${LLVM_DIR}/lib/Support/LEB128.cpp
1305     ${LLVM_DIR}/lib/Support/LineIterator.cpp
1306     ${LLVM_DIR}/lib/Support/Locale.cpp
1307     ${LLVM_DIR}/lib/Support/LockFileManager.cpp
1308     ${LLVM_DIR}/lib/Support/LowLevelType.cpp
1309     ${LLVM_DIR}/lib/Support/MD5.cpp
1310     ${LLVM_DIR}/lib/Support/ManagedStatic.cpp
1311     ${LLVM_DIR}/lib/Support/MathExtras.cpp
1312     ${LLVM_DIR}/lib/Support/Memory.cpp
1313     ${LLVM_DIR}/lib/Support/MemoryBuffer.cpp
1314     ${LLVM_DIR}/lib/Support/Mutex.cpp
1315     ${LLVM_DIR}/lib/Support/NativeFormatting.cpp
1316     ${LLVM_DIR}/lib/Support/Options.cpp
1317     ${LLVM_DIR}/lib/Support/Parallel.cpp
1318     ${LLVM_DIR}/lib/Support/Path.cpp
1319     ${LLVM_DIR}/lib/Support/PluginLoader.cpp
1320     ${LLVM_DIR}/lib/Support/PrettyStackTrace.cpp
1321     ${LLVM_DIR}/lib/Support/Process.cpp
1322     ${LLVM_DIR}/lib/Support/Program.cpp
1323     ${LLVM_DIR}/lib/Support/RWMutex.cpp
1324     ${LLVM_DIR}/lib/Support/RandomNumberGenerator.cpp
1325     ${LLVM_DIR}/lib/Support/Regex.cpp
1326     ${LLVM_DIR}/lib/Support/SHA1.cpp
1327     ${LLVM_DIR}/lib/Support/ScaledNumber.cpp
1328     ${LLVM_DIR}/lib/Support/ScopedPrinter.cpp
1329     ${LLVM_DIR}/lib/Support/Signals.cpp
1330     ${LLVM_DIR}/lib/Support/SmallPtrSet.cpp
1331     ${LLVM_DIR}/lib/Support/SmallVector.cpp
1332     ${LLVM_DIR}/lib/Support/SourceMgr.cpp
1333     ${LLVM_DIR}/lib/Support/SpecialCaseList.cpp
1334     ${LLVM_DIR}/lib/Support/Statistic.cpp
1335     ${LLVM_DIR}/lib/Support/StringExtras.cpp
1336     ${LLVM_DIR}/lib/Support/StringMap.cpp
1337     ${LLVM_DIR}/lib/Support/StringPool.cpp
1338     ${LLVM_DIR}/lib/Support/StringRef.cpp
1339     ${LLVM_DIR}/lib/Support/StringSaver.cpp
1340     ${LLVM_DIR}/lib/Support/SystemUtils.cpp
1341     ${LLVM_DIR}/lib/Support/TarWriter.cpp
1342     ${LLVM_DIR}/lib/Support/TargetParser.cpp
1343     ${LLVM_DIR}/lib/Support/TargetRegistry.cpp
1344     ${LLVM_DIR}/lib/Support/ThreadLocal.cpp
1345     ${LLVM_DIR}/lib/Support/ThreadPool.cpp
1346     ${LLVM_DIR}/lib/Support/Threading.cpp
1347     ${LLVM_DIR}/lib/Support/Timer.cpp
1348     ${LLVM_DIR}/lib/Support/ToolOutputFile.cpp
1349     ${LLVM_DIR}/lib/Support/TrigramIndex.cpp
1350     ${LLVM_DIR}/lib/Support/Triple.cpp
1351     ${LLVM_DIR}/lib/Support/Twine.cpp
1352     ${LLVM_DIR}/lib/Support/Unicode.cpp
1353     ${LLVM_DIR}/lib/Support/UnicodeCaseFold.cpp
1354     ${LLVM_DIR}/lib/Support/Valgrind.cpp
1355     ${LLVM_DIR}/lib/Support/VersionTuple.cpp
1356     ${LLVM_DIR}/lib/Support/Watchdog.cpp
1357     ${LLVM_DIR}/lib/Support/WithColor.cpp
1358     ${LLVM_DIR}/lib/Support/YAMLParser.cpp
1359     ${LLVM_DIR}/lib/Support/YAMLTraits.cpp
1360     ${LLVM_DIR}/lib/Support/circular_raw_ostream.cpp
1361     ${LLVM_DIR}/lib/Support/raw_os_ostream.cpp
1362     ${LLVM_DIR}/lib/Support/raw_ostream.cpp
1363     ${LLVM_DIR}/lib/Support/regcomp.c
1364     ${LLVM_DIR}/lib/Support/regerror.c
1365     ${LLVM_DIR}/lib/Support/regexec.c
1366     ${LLVM_DIR}/lib/Support/regfree.c
1367     ${LLVM_DIR}/lib/Support/regstrlcpy.c
1368     ${LLVM_DIR}/lib/Support/xxhash.cpp
1369     ${LLVM_DIR}/lib/Target/Target.cpp
1370     ${LLVM_DIR}/lib/Target/TargetIntrinsicInfo.cpp
1371     ${LLVM_DIR}/lib/Target/TargetLoweringObjectFile.cpp
1372     ${LLVM_DIR}/lib/Target/TargetMachine.cpp
1373     ${LLVM_DIR}/lib/Target/TargetMachineC.cpp
1374     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAddSub.cpp
1375     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
1376     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCalls.cpp
1377     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCasts.cpp
1378     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCompares.cpp
1379     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
1380     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
1381     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombinePHI.cpp
1382     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSelect.cpp
1383     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineShifts.cpp
1384     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
1385     ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
1386     ${LLVM_DIR}/lib/Transforms/InstCombine/InstructionCombining.cpp
1387     ${LLVM_DIR}/lib/Transforms/Scalar/ADCE.cpp
1388     ${LLVM_DIR}/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp
1389     ${LLVM_DIR}/lib/Transforms/Scalar/BDCE.cpp
1390     ${LLVM_DIR}/lib/Transforms/Scalar/CallSiteSplitting.cpp
1391     ${LLVM_DIR}/lib/Transforms/Scalar/ConstantHoisting.cpp
1392     ${LLVM_DIR}/lib/Transforms/Scalar/ConstantProp.cpp
1393     ${LLVM_DIR}/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
1394     ${LLVM_DIR}/lib/Transforms/Scalar/DCE.cpp
1395     ${LLVM_DIR}/lib/Transforms/Scalar/DeadStoreElimination.cpp
1396     ${LLVM_DIR}/lib/Transforms/Scalar/DivRemPairs.cpp
1397     ${LLVM_DIR}/lib/Transforms/Scalar/EarlyCSE.cpp
1398     ${LLVM_DIR}/lib/Transforms/Scalar/FlattenCFGPass.cpp
1399     ${LLVM_DIR}/lib/Transforms/Scalar/Float2Int.cpp
1400     ${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
1401     ${LLVM_DIR}/lib/Transforms/Scalar/GVNHoist.cpp
1402     ${LLVM_DIR}/lib/Transforms/Scalar/GVNSink.cpp
1403     ${LLVM_DIR}/lib/Transforms/Scalar/GuardWidening.cpp
1404     ${LLVM_DIR}/lib/Transforms/Scalar/IVUsersPrinter.cpp
1405     ${LLVM_DIR}/lib/Transforms/Scalar/IndVarSimplify.cpp
1406     ${LLVM_DIR}/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
1407     ${LLVM_DIR}/lib/Transforms/Scalar/InferAddressSpaces.cpp
1408     ${LLVM_DIR}/lib/Transforms/Scalar/InstSimplifyPass.cpp
1409     ${LLVM_DIR}/lib/Transforms/Scalar/JumpThreading.cpp
1410     ${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
1411     ${LLVM_DIR}/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp
1412     ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
1413     ${LLVM_DIR}/lib/Transforms/Scalar/LoopDeletion.cpp
1414     ${LLVM_DIR}/lib/Transforms/Scalar/LoopDistribute.cpp
1415     ${LLVM_DIR}/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
1416     ${LLVM_DIR}/lib/Transforms/Scalar/LoopInstSimplify.cpp
1417     ${LLVM_DIR}/lib/Transforms/Scalar/LoopInterchange.cpp
1418     ${LLVM_DIR}/lib/Transforms/Scalar/LoopLoadElimination.cpp
1419     ${LLVM_DIR}/lib/Transforms/Scalar/LoopPassManager.cpp
1420     ${LLVM_DIR}/lib/Transforms/Scalar/LoopPredication.cpp
1421     ${LLVM_DIR}/lib/Transforms/Scalar/LoopRerollPass.cpp
1422     ${LLVM_DIR}/lib/Transforms/Scalar/LoopRotation.cpp
1423     ${LLVM_DIR}/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
1424     ${LLVM_DIR}/lib/Transforms/Scalar/LoopSink.cpp
1425     ${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
1426     ${LLVM_DIR}/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp
1427     ${LLVM_DIR}/lib/Transforms/Scalar/LoopUnrollPass.cpp
1428     ${LLVM_DIR}/lib/Transforms/Scalar/LoopUnswitch.cpp
1429     ${LLVM_DIR}/lib/Transforms/Scalar/LoopVersioningLICM.cpp
1430     ${LLVM_DIR}/lib/Transforms/Scalar/LowerAtomic.cpp
1431     ${LLVM_DIR}/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp
1432     ${LLVM_DIR}/lib/Transforms/Scalar/LowerGuardIntrinsic.cpp
1433     ${LLVM_DIR}/lib/Transforms/Scalar/MemCpyOptimizer.cpp
1434     ${LLVM_DIR}/lib/Transforms/Scalar/MergeICmps.cpp
1435     ${LLVM_DIR}/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
1436     ${LLVM_DIR}/lib/Transforms/Scalar/NaryReassociate.cpp
1437     ${LLVM_DIR}/lib/Transforms/Scalar/NewGVN.cpp
1438     ${LLVM_DIR}/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp
1439     ${LLVM_DIR}/lib/Transforms/Scalar/PlaceSafepoints.cpp
1440     ${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
1441     ${LLVM_DIR}/lib/Transforms/Scalar/Reg2Mem.cpp
1442     ${LLVM_DIR}/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
1443     ${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
1444     ${LLVM_DIR}/lib/Transforms/Scalar/SROA.cpp
1445     ${LLVM_DIR}/lib/Transforms/Scalar/Scalar.cpp
1446     ${LLVM_DIR}/lib/Transforms/Scalar/Scalarizer.cpp
1447     ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
1448     ${LLVM_DIR}/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
1449     ${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
1450     ${LLVM_DIR}/lib/Transforms/Scalar/Sink.cpp
1451     ${LLVM_DIR}/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp
1452     ${LLVM_DIR}/lib/Transforms/Scalar/SpeculativeExecution.cpp
1453     ${LLVM_DIR}/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
1454     ${LLVM_DIR}/lib/Transforms/Scalar/StructurizeCFG.cpp
1455     ${LLVM_DIR}/lib/Transforms/Scalar/TailRecursionElimination.cpp
1456     ${LLVM_DIR}/lib/Transforms/Utils/ASanStackFrameLayout.cpp
1457     ${LLVM_DIR}/lib/Transforms/Utils/AddDiscriminators.cpp
1458     ${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
1459     ${LLVM_DIR}/lib/Transforms/Utils/BreakCriticalEdges.cpp
1460     ${LLVM_DIR}/lib/Transforms/Utils/BuildLibCalls.cpp
1461     ${LLVM_DIR}/lib/Transforms/Utils/BypassSlowDivision.cpp
1462     ${LLVM_DIR}/lib/Transforms/Utils/CallPromotionUtils.cpp
1463     ${LLVM_DIR}/lib/Transforms/Utils/CloneFunction.cpp
1464     ${LLVM_DIR}/lib/Transforms/Utils/CloneModule.cpp
1465     ${LLVM_DIR}/lib/Transforms/Utils/CodeExtractor.cpp
1466     ${LLVM_DIR}/lib/Transforms/Utils/CtorUtils.cpp
1467     ${LLVM_DIR}/lib/Transforms/Utils/DemoteRegToStack.cpp
1468     ${LLVM_DIR}/lib/Transforms/Utils/EntryExitInstrumenter.cpp
1469     ${LLVM_DIR}/lib/Transforms/Utils/EscapeEnumerator.cpp
1470     ${LLVM_DIR}/lib/Transforms/Utils/Evaluator.cpp
1471     ${LLVM_DIR}/lib/Transforms/Utils/FlattenCFG.cpp
1472     ${LLVM_DIR}/lib/Transforms/Utils/FunctionComparator.cpp
1473     ${LLVM_DIR}/lib/Transforms/Utils/FunctionImportUtils.cpp
1474     ${LLVM_DIR}/lib/Transforms/Utils/GlobalStatus.cpp
1475     ${LLVM_DIR}/lib/Transforms/Utils/ImportedFunctionsInliningStatistics.cpp
1476     ${LLVM_DIR}/lib/Transforms/Utils/InlineFunction.cpp
1477     ${LLVM_DIR}/lib/Transforms/Utils/InstructionNamer.cpp
1478     ${LLVM_DIR}/lib/Transforms/Utils/IntegerDivision.cpp
1479     ${LLVM_DIR}/lib/Transforms/Utils/LCSSA.cpp
1480     ${LLVM_DIR}/lib/Transforms/Utils/LibCallsShrinkWrap.cpp
1481     ${LLVM_DIR}/lib/Transforms/Utils/Local.cpp
1482     ${LLVM_DIR}/lib/Transforms/Utils/LoopRotationUtils.cpp
1483     ${LLVM_DIR}/lib/Transforms/Utils/LoopSimplify.cpp
1484     ${LLVM_DIR}/lib/Transforms/Utils/LoopUnroll.cpp
1485     ${LLVM_DIR}/lib/Transforms/Utils/LoopUnrollAndJam.cpp
1486     ${LLVM_DIR}/lib/Transforms/Utils/LoopUnrollPeel.cpp
1487     ${LLVM_DIR}/lib/Transforms/Utils/LoopUnrollRuntime.cpp
1488     ${LLVM_DIR}/lib/Transforms/Utils/LoopUtils.cpp
1489     ${LLVM_DIR}/lib/Transforms/Utils/LoopVersioning.cpp
1490     ${LLVM_DIR}/lib/Transforms/Utils/LowerInvoke.cpp
1491     ${LLVM_DIR}/lib/Transforms/Utils/LowerMemIntrinsics.cpp
1492     ${LLVM_DIR}/lib/Transforms/Utils/LowerSwitch.cpp
1493     ${LLVM_DIR}/lib/Transforms/Utils/Mem2Reg.cpp
1494     ${LLVM_DIR}/lib/Transforms/Utils/MetaRenamer.cpp
1495     ${LLVM_DIR}/lib/Transforms/Utils/ModuleUtils.cpp
1496     ${LLVM_DIR}/lib/Transforms/Utils/NameAnonGlobals.cpp
1497     ${LLVM_DIR}/lib/Transforms/Utils/OrderedInstructions.cpp
1498     ${LLVM_DIR}/lib/Transforms/Utils/PredicateInfo.cpp
1499     ${LLVM_DIR}/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
1500     ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdater.cpp
1501     ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdaterBulk.cpp
1502     ${LLVM_DIR}/lib/Transforms/Utils/SanitizerStats.cpp
1503     ${LLVM_DIR}/lib/Transforms/Utils/SimplifyCFG.cpp
1504     ${LLVM_DIR}/lib/Transforms/Utils/SimplifyIndVar.cpp
1505     ${LLVM_DIR}/lib/Transforms/Utils/SimplifyLibCalls.cpp
1506     ${LLVM_DIR}/lib/Transforms/Utils/SplitModule.cpp
1507     ${LLVM_DIR}/lib/Transforms/Utils/StripGCRelocates.cpp
1508     ${LLVM_DIR}/lib/Transforms/Utils/StripNonLineTableDebugInfo.cpp
1509     ${LLVM_DIR}/lib/Transforms/Utils/SymbolRewriter.cpp
1510     ${LLVM_DIR}/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
1511     ${LLVM_DIR}/lib/Transforms/Utils/Utils.cpp
1512     ${LLVM_DIR}/lib/Transforms/Utils/VNCoercion.cpp
1513     ${LLVM_DIR}/lib/Transforms/Utils/ValueMapper.cpp
1514 )
1515
1516 if(ARCH STREQUAL "x86" OR ARCH STREQUAL "x86_64")
1517     list(APPEND LLVM_LIST
1518         ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
1519         ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmParser.cpp
1520         ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
1521         ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstComments.cpp
1522         ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp
1523         ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
1524         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
1525         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
1526         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
1527         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
1528         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
1529         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
1530         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
1531         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
1532         ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFTargetStreamer.cpp
1533         ${LLVM_DIR}/lib/Target/X86/ShadowCallStack.cpp
1534         ${LLVM_DIR}/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
1535         ${LLVM_DIR}/lib/Target/X86/Utils/X86ShuffleDecode.cpp
1536         ${LLVM_DIR}/lib/Target/X86/X86AsmPrinter.cpp
1537         ${LLVM_DIR}/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
1538         ${LLVM_DIR}/lib/Target/X86/X86CallFrameOptimization.cpp
1539         ${LLVM_DIR}/lib/Target/X86/X86CallLowering.cpp
1540         ${LLVM_DIR}/lib/Target/X86/X86CallingConv.cpp
1541         ${LLVM_DIR}/lib/Target/X86/X86CmovConversion.cpp
1542         ${LLVM_DIR}/lib/Target/X86/X86DomainReassignment.cpp
1543         ${LLVM_DIR}/lib/Target/X86/X86EvexToVex.cpp
1544         ${LLVM_DIR}/lib/Target/X86/X86ExpandPseudo.cpp
1545         ${LLVM_DIR}/lib/Target/X86/X86FastISel.cpp
1546         ${LLVM_DIR}/lib/Target/X86/X86FixupBWInsts.cpp
1547         ${LLVM_DIR}/lib/Target/X86/X86FixupLEAs.cpp
1548         ${LLVM_DIR}/lib/Target/X86/X86FixupSetCC.cpp
1549         ${LLVM_DIR}/lib/Target/X86/X86FlagsCopyLowering.cpp
1550         ${LLVM_DIR}/lib/Target/X86/X86FloatingPoint.cpp
1551         ${LLVM_DIR}/lib/Target/X86/X86FrameLowering.cpp
1552         ${LLVM_DIR}/lib/Target/X86/X86ISelDAGToDAG.cpp
1553         ${LLVM_DIR}/lib/Target/X86/X86ISelLowering.cpp
1554         ${LLVM_DIR}/lib/Target/X86/X86IndirectBranchTracking.cpp
1555         ${LLVM_DIR}/lib/Target/X86/X86InstrFMA3Info.cpp
1556         ${LLVM_DIR}/lib/Target/X86/X86InstrFoldTables.cpp
1557         ${LLVM_DIR}/lib/Target/X86/X86InstrInfo.cpp
1558         ${LLVM_DIR}/lib/Target/X86/X86InstructionSelector.cpp
1559         ${LLVM_DIR}/lib/Target/X86/X86InterleavedAccess.cpp
1560         ${LLVM_DIR}/lib/Target/X86/X86LegalizerInfo.cpp
1561         ${LLVM_DIR}/lib/Target/X86/X86MCInstLower.cpp
1562         ${LLVM_DIR}/lib/Target/X86/X86MachineFunctionInfo.cpp
1563         ${LLVM_DIR}/lib/Target/X86/X86MacroFusion.cpp
1564         ${LLVM_DIR}/lib/Target/X86/X86OptimizeLEAs.cpp
1565         ${LLVM_DIR}/lib/Target/X86/X86PadShortFunction.cpp
1566         ${LLVM_DIR}/lib/Target/X86/X86RegisterBankInfo.cpp
1567         ${LLVM_DIR}/lib/Target/X86/X86RegisterInfo.cpp
1568         ${LLVM_DIR}/lib/Target/X86/X86RetpolineThunks.cpp
1569         ${LLVM_DIR}/lib/Target/X86/X86SelectionDAGInfo.cpp
1570         ${LLVM_DIR}/lib/Target/X86/X86ShuffleDecodeConstantPool.cpp
1571         ${LLVM_DIR}/lib/Target/X86/X86SpeculativeLoadHardening.cpp
1572         ${LLVM_DIR}/lib/Target/X86/X86Subtarget.cpp
1573         ${LLVM_DIR}/lib/Target/X86/X86TargetMachine.cpp
1574         ${LLVM_DIR}/lib/Target/X86/X86TargetObjectFile.cpp
1575         ${LLVM_DIR}/lib/Target/X86/X86TargetTransformInfo.cpp
1576         ${LLVM_DIR}/lib/Target/X86/X86VZeroUpper.cpp
1577         ${LLVM_DIR}/lib/Target/X86/X86WinAllocaExpander.cpp
1578         ${LLVM_DIR}/lib/Target/X86/X86WinEHState.cpp
1579     )
1580 elseif(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
1581     list(APPEND LLVM_LIST
1582         ${LLVM_DIR}/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
1583         ${LLVM_DIR}/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
1584         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp
1585         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
1586         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
1587         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
1588         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
1589         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
1590         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
1591         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp
1592         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
1593         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
1594         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
1595         ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
1596         ${LLVM_DIR}/lib/Target/Mips/Mips16FrameLowering.cpp
1597         ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloat.cpp
1598         ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloatInfo.cpp
1599         ${LLVM_DIR}/lib/Target/Mips/Mips16InstrInfo.cpp
1600         ${LLVM_DIR}/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
1601         ${LLVM_DIR}/lib/Target/Mips/Mips16ISelLowering.cpp
1602         ${LLVM_DIR}/lib/Target/Mips/Mips16RegisterInfo.cpp
1603         ${LLVM_DIR}/lib/Target/Mips/MipsAnalyzeImmediate.cpp
1604         ${LLVM_DIR}/lib/Target/Mips/MipsAsmPrinter.cpp
1605         ${LLVM_DIR}/lib/Target/Mips/MipsCallLowering.cpp
1606         ${LLVM_DIR}/lib/Target/Mips/MipsCCState.cpp
1607         ${LLVM_DIR}/lib/Target/Mips/MipsConstantIslandPass.cpp
1608         ${LLVM_DIR}/lib/Target/Mips/MipsDelaySlotFiller.cpp
1609         ${LLVM_DIR}/lib/Target/Mips/MipsExpandPseudo.cpp
1610         ${LLVM_DIR}/lib/Target/Mips/MipsFastISel.cpp
1611         ${LLVM_DIR}/lib/Target/Mips/MipsInstrInfo.cpp
1612         ${LLVM_DIR}/lib/Target/Mips/MipsInstructionSelector.cpp
1613         ${LLVM_DIR}/lib/Target/Mips/MipsISelDAGToDAG.cpp
1614         ${LLVM_DIR}/lib/Target/Mips/MipsISelLowering.cpp
1615         ${LLVM_DIR}/lib/Target/Mips/MipsFrameLowering.cpp
1616         ${LLVM_DIR}/lib/Target/Mips/MipsLegalizerInfo.cpp
1617         ${LLVM_DIR}/lib/Target/Mips/MipsBranchExpansion.cpp
1618         ${LLVM_DIR}/lib/Target/Mips/MipsMCInstLower.cpp
1619         ${LLVM_DIR}/lib/Target/Mips/MipsMachineFunction.cpp
1620         ${LLVM_DIR}/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
1621         ${LLVM_DIR}/lib/Target/Mips/MipsOptimizePICCall.cpp
1622         ${LLVM_DIR}/lib/Target/Mips/MipsOs16.cpp
1623         ${LLVM_DIR}/lib/Target/Mips/MipsRegisterBankInfo.cpp
1624         ${LLVM_DIR}/lib/Target/Mips/MipsRegisterInfo.cpp
1625         ${LLVM_DIR}/lib/Target/Mips/MipsSEFrameLowering.cpp
1626         ${LLVM_DIR}/lib/Target/Mips/MipsSEInstrInfo.cpp
1627         ${LLVM_DIR}/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
1628         ${LLVM_DIR}/lib/Target/Mips/MipsSEISelLowering.cpp
1629         ${LLVM_DIR}/lib/Target/Mips/MipsSERegisterInfo.cpp
1630         ${LLVM_DIR}/lib/Target/Mips/MipsSubtarget.cpp
1631         ${LLVM_DIR}/lib/Target/Mips/MipsTargetMachine.cpp
1632         ${LLVM_DIR}/lib/Target/Mips/MipsTargetObjectFile.cpp
1633         ${LLVM_DIR}/lib/Target/Mips/MicroMipsSizeReduction.cpp
1634         ${LLVM_DIR}/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
1635     )
1636 elseif(ARCH STREQUAL "aarch64")
1637     list(APPEND LLVM_LIST
1638         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
1639         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
1640         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
1641         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
1642         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
1643         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
1644         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
1645         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
1646         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
1647         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
1648         ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
1649         ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelLowering.cpp
1650         ${LLVM_DIR}/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp
1651         ${LLVM_DIR}/lib/Target/AArch64/AArch64FastISel.cpp
1652         ${LLVM_DIR}/lib/Target/AArch64/AArch64InstrInfo.cpp
1653         ${LLVM_DIR}/lib/Target/AArch64/AArch64PromoteConstant.cpp
1654         ${LLVM_DIR}/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp
1655         ${LLVM_DIR}/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
1656         ${LLVM_DIR}/lib/Target/AArch64/AArch64InstructionSelector.cpp
1657         ${LLVM_DIR}/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
1658         ${LLVM_DIR}/lib/Target/AArch64/AArch64A53Fix835769.cpp
1659         ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetMachine.cpp
1660         ${LLVM_DIR}/lib/Target/AArch64/AArch64CallLowering.cpp
1661         ${LLVM_DIR}/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp
1662         ${LLVM_DIR}/lib/Target/AArch64/AArch64Subtarget.cpp
1663         ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetObjectFile.cpp
1664         ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterInfo.cpp
1665         ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
1666         ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
1667         ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
1668         ${LLVM_DIR}/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
1669         ${LLVM_DIR}/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
1670         ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionalCompares.cpp
1671         ${LLVM_DIR}/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
1672         ${LLVM_DIR}/lib/Target/AArch64/AArch64LegalizerInfo.cpp
1673         ${LLVM_DIR}/lib/Target/AArch64/AArch64StorePairSuppress.cpp
1674         ${LLVM_DIR}/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
1675         ${LLVM_DIR}/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp
1676         ${LLVM_DIR}/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
1677         ${LLVM_DIR}/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
1678         ${LLVM_DIR}/lib/Target/AArch64/AArch64MCInstLower.cpp
1679         ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
1680         ${LLVM_DIR}/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
1681         ${LLVM_DIR}/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
1682         ${LLVM_DIR}/lib/Target/AArch64/AArch64CollectLOH.cpp
1683         ${LLVM_DIR}/lib/Target/AArch64/AArch64AsmPrinter.cpp
1684         ${LLVM_DIR}/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
1685         ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
1686         ${LLVM_DIR}/lib/Target/AArch64/AArch64CondBrTuning.cpp
1687         ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
1688         ${LLVM_DIR}/lib/Target/AArch64/AArch64FrameLowering.cpp
1689         ${LLVM_DIR}/lib/Target/AArch64/AArch64MacroFusion.cpp
1690     )
1691 elseif(ARCH STREQUAL "arm")
1692     list(APPEND LLVM_LIST
1693         ${LLVM_DIR}/lib/Target/ARM/ARMConstantIslandPass.cpp
1694         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
1695         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
1696         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
1697         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
1698         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
1699         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp
1700         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
1701         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
1702         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
1703         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
1704         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
1705         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
1706         ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp
1707         ${LLVM_DIR}/lib/Target/ARM/ThumbRegisterInfo.cpp
1708         ${LLVM_DIR}/lib/Target/ARM/ARMMachineFunctionInfo.cpp
1709         ${LLVM_DIR}/lib/Target/ARM/ARMFrameLowering.cpp
1710         ${LLVM_DIR}/lib/Target/ARM/ARMBaseRegisterInfo.cpp
1711         ${LLVM_DIR}/lib/Target/ARM/ARMCallLowering.cpp
1712         ${LLVM_DIR}/lib/Target/ARM/ARMTargetMachine.cpp
1713         ${LLVM_DIR}/lib/Target/ARM/ARMBaseInstrInfo.cpp
1714         ${LLVM_DIR}/lib/Target/ARM/Thumb1FrameLowering.cpp
1715         ${LLVM_DIR}/lib/Target/ARM/ARMRegisterBankInfo.cpp
1716         ${LLVM_DIR}/lib/Target/ARM/Utils/ARMBaseInfo.cpp
1717         ${LLVM_DIR}/lib/Target/ARM/ARMComputeBlockSize.cpp
1718         ${LLVM_DIR}/lib/Target/ARM/ARMSelectionDAGInfo.cpp
1719         ${LLVM_DIR}/lib/Target/ARM/ARMInstructionSelector.cpp
1720         ${LLVM_DIR}/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
1721         ${LLVM_DIR}/lib/Target/ARM/ARMTargetObjectFile.cpp
1722         ${LLVM_DIR}/lib/Target/ARM/ARMISelLowering.cpp
1723         ${LLVM_DIR}/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
1724         ${LLVM_DIR}/lib/Target/ARM/ARMExpandPseudoInsts.cpp
1725         ${LLVM_DIR}/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
1726         ${LLVM_DIR}/lib/Target/ARM/ARMInstrInfo.cpp
1727         ${LLVM_DIR}/lib/Target/ARM/MLxExpansionPass.cpp
1728         ${LLVM_DIR}/lib/Target/ARM/Thumb2SizeReduction.cpp
1729         ${LLVM_DIR}/lib/Target/ARM/ARMConstantPoolValue.cpp
1730         ${LLVM_DIR}/lib/Target/ARM/Thumb2InstrInfo.cpp
1731         ${LLVM_DIR}/lib/Target/ARM/ARMRegisterInfo.cpp
1732         ${LLVM_DIR}/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
1733         ${LLVM_DIR}/lib/Target/ARM/ARMSubtarget.cpp
1734         ${LLVM_DIR}/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
1735         ${LLVM_DIR}/lib/Target/ARM/ARMParallelDSP.cpp
1736         ${LLVM_DIR}/lib/Target/ARM/ARMISelDAGToDAG.cpp
1737         ${LLVM_DIR}/lib/Target/ARM/A15SDOptimizer.cpp
1738         ${LLVM_DIR}/lib/Target/ARM/Thumb2ITBlockPass.cpp
1739         ${LLVM_DIR}/lib/Target/ARM/ARMFastISel.cpp
1740         ${LLVM_DIR}/lib/Target/ARM/ARMMacroFusion.cpp
1741         ${LLVM_DIR}/lib/Target/ARM/ARMAsmPrinter.cpp
1742         ${LLVM_DIR}/lib/Target/ARM/ARMMCInstLower.cpp
1743         ${LLVM_DIR}/lib/Target/ARM/ARMHazardRecognizer.cpp
1744         ${LLVM_DIR}/lib/Target/ARM/ARMCodeGenPrepare.cpp
1745         ${LLVM_DIR}/lib/Target/ARM/ARMTargetTransformInfo.cpp
1746         ${LLVM_DIR}/lib/Target/ARM/Thumb1InstrInfo.cpp
1747         ${LLVM_DIR}/lib/Target/ARM/ARMLegalizerInfo.cpp
1748         ${LLVM_DIR}/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
1749     )
1750  endif()
1751
1752 set(LLVM_INCLUDE_DIR "")
1753
1754 if(WIN32)
1755     list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/windows/include)
1756 elseif(LINUX)
1757     list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/linux/include)
1758 elseif(APPLE)
1759     list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/darwin/include)
1760 elseif(ANDROID)
1761     list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/android/include)
1762 endif()
1763
1764 list(APPEND LLVM_INCLUDE_DIR
1765     ${LLVM_DIR}/include
1766     ${LLVM_DIR}/lib/Target/AArch64
1767     ${LLVM_DIR}/lib/Target/ARM
1768     ${LLVM_DIR}/lib/Target/Mips
1769     ${LLVM_DIR}/lib/Target/X86
1770     ${LLVM_CONFIG_DIR}/common/include
1771     ${LLVM_CONFIG_DIR}/common/lib/IR
1772     ${LLVM_CONFIG_DIR}/common/lib/Target/AArch64
1773     ${LLVM_CONFIG_DIR}/common/lib/Target/ARM
1774     ${LLVM_CONFIG_DIR}/common/lib/Target/Mips
1775     ${LLVM_CONFIG_DIR}/common/lib/Target/X86
1776     ${LLVM_CONFIG_DIR}/common/lib/Transforms/InstCombine
1777 )
1778
1779 endif()  # REACTOR_LLVM_VERSION
1780
1781 # Suppress known LLVM warnings
1782 set(LLVM_COMPILE_FLAGS)
1783 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
1784     list(APPEND LLVM_COMPILE_FLAGS
1785         "-Wno-comment"                 # multi-line comment
1786         "-Wno-noexcept-type"           # mangled name for â€˜X’ will change in C++17 because the exception specification is part of a function type
1787         "-Wno-maybe-uninitialized"     # â€˜X’ may be used uninitialized in this function
1788         "-Wno-unused-but-set-variable" # variable â€˜X’ set but not used
1789     )
1790 endif()
1791 string (REPLACE ";" " " LLVM_COMPILE_FLAGS "${LLVM_COMPILE_FLAGS}")
1792
1793 add_library(llvm STATIC ${LLVM_LIST})
1794 set_target_properties(llvm PROPERTIES
1795     POSITION_INDEPENDENT_CODE 1
1796     INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIR}"
1797     COMPILE_FLAGS "${LLVM_COMPILE_FLAGS}"
1798     COMPILE_DEFINITIONS "__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;"
1799     FOLDER "LLVM"
1800 )
1801
1802 # Add required libraries for LLVM
1803 if(LINUX)
1804     target_link_libraries(llvm dl)
1805 endif(LINUX)
1806
1807 ###########################################################
1808 # Subzero
1809 ###########################################################
1810
1811 if(${REACTOR_BACKEND} STREQUAL "Subzero")
1812     set(SUBZERO_LIST
1813         ${SUBZERO_DIR}/src/IceAssembler.cpp
1814         ${SUBZERO_DIR}/src/IceCfg.cpp
1815         ${SUBZERO_DIR}/src/IceCfgNode.cpp
1816         ${SUBZERO_DIR}/src/IceClFlags.cpp
1817         ${SUBZERO_DIR}/src/IceELFObjectWriter.cpp
1818         ${SUBZERO_DIR}/src/IceELFSection.cpp
1819         ${SUBZERO_DIR}/src/IceFixups.cpp
1820         ${SUBZERO_DIR}/src/IceGlobalContext.cpp
1821         ${SUBZERO_DIR}/src/IceGlobalInits.cpp
1822         ${SUBZERO_DIR}/src/IceInst.cpp
1823         ${SUBZERO_DIR}/src/IceInstrumentation.cpp
1824         ${SUBZERO_DIR}/src/IceIntrinsics.cpp
1825         ${SUBZERO_DIR}/src/IceLiveness.cpp
1826         ${SUBZERO_DIR}/src/IceLoopAnalyzer.cpp
1827         ${SUBZERO_DIR}/src/IceMangling.cpp
1828         ${SUBZERO_DIR}/src/IceMemory.cpp
1829         ${SUBZERO_DIR}/src/IceOperand.cpp
1830         ${SUBZERO_DIR}/src/IceRangeSpec.cpp
1831         ${SUBZERO_DIR}/src/IceRegAlloc.cpp
1832         ${SUBZERO_DIR}/src/IceRevision.cpp
1833         ${SUBZERO_DIR}/src/IceRNG.cpp
1834         ${SUBZERO_DIR}/src/IceSwitchLowering.cpp
1835         ${SUBZERO_DIR}/src/IceTargetLowering.cpp
1836         ${SUBZERO_DIR}/src/IceThreading.cpp
1837         ${SUBZERO_DIR}/src/IceTimerTree.cpp
1838         ${SUBZERO_DIR}/src/IceTypes.cpp
1839         ${SUBZERO_DIR}/src/IceVariableSplitting.cpp
1840     )
1841
1842     # FIXME: Shouldn't depend on external source files directly.
1843     list(APPEND SUBZERO_LIST
1844         ${SOURCE_DIR}/Common/Memory.cpp
1845     )
1846
1847     if(ARCH STREQUAL "x86_64")
1848         list(APPEND SUBZERO_LIST
1849             ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
1850             ${SUBZERO_DIR}/src/IceInstX8664.cpp
1851             ${SUBZERO_DIR}/src/IceTargetLoweringX8664.cpp
1852         )
1853         set(SUBZERO_TARGET X8664)
1854     elseif(ARCH STREQUAL "x86")
1855         list(APPEND SUBZERO_LIST
1856             ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
1857             ${SUBZERO_DIR}/src/IceInstX8632.cpp
1858             ${SUBZERO_DIR}/src/IceTargetLoweringX8632.cpp
1859         )
1860         set(SUBZERO_TARGET X8632)
1861     elseif(ARCH STREQUAL "arm")
1862         list(APPEND SUBZERO_LIST
1863             ${SUBZERO_DIR}/src/IceAssemblerARM32.cpp
1864             ${SUBZERO_DIR}/src/IceInstARM32.cpp
1865             ${SUBZERO_DIR}/src/IceTargetLoweringARM32.cpp
1866         )
1867         set(SUBZERO_TARGET ARM32)
1868     elseif(ARCH STREQUAL "mipsel")
1869         list(APPEND SUBZERO_LIST
1870             ${SUBZERO_DIR}/src/IceAssemblerMIPS32.cpp
1871             ${SUBZERO_DIR}/src/IceInstMIPS32.cpp
1872             ${SUBZERO_DIR}/src/IceTargetLoweringMIPS32.cpp
1873         )
1874         set(SUBZERO_TARGET MIPS32)
1875     else()
1876         message(FATAL_ERROR "Architecture '${ARCH}' not supported by Subzero")
1877     endif()
1878
1879     file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
1880         ${SUBZERO_LLVM_DIR}/*.cpp
1881         ${SUBZERO_LLVM_DIR}/*.c
1882         ${SUBZERO_LLVM_DIR}/*.h
1883     )
1884
1885     set(SUBZERO_REACTOR_LIST
1886         ${SOURCE_DIR}/Reactor/Reactor.cpp
1887         ${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
1888         ${SOURCE_DIR}/Reactor/Routine.cpp
1889         ${SOURCE_DIR}/Reactor/Optimizer.cpp
1890         ${SOURCE_DIR}/Reactor/Nucleus.hpp
1891         ${SOURCE_DIR}/Reactor/Routine.hpp
1892         ${SOURCE_DIR}/Reactor/Debug.cpp
1893         ${SOURCE_DIR}/Reactor/Debug.hpp
1894         ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1895         ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
1896     )
1897
1898     set(SUBZERO_INCLUDE_DIR
1899         ${SUBZERO_DIR}/
1900         ${SUBZERO_LLVM_DIR}/include/
1901         ${SUBZERO_DIR}/pnacl-llvm/include/
1902     )
1903
1904     if(WIN32)
1905         list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Windows/include/)
1906     elseif(LINUX)
1907         list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Linux/include/)
1908     elseif(APPLE)
1909         list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/MacOS/include/)
1910     endif()
1911
1912     add_library(ReactorSubzero STATIC
1913         ${SUBZERO_LIST}
1914         ${SUBZERO_DEPENDENCIES_LIST}
1915         ${SUBZERO_REACTOR_LIST}
1916     )
1917
1918     set_target_properties(ReactorSubzero PROPERTIES
1919         POSITION_INDEPENDENT_CODE 1
1920         INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
1921         COMPILE_DEFINITIONS "SZTARGET=${SUBZERO_TARGET}; ALLOW_DUMP=0; ALLOW_TIMERS=0; ALLOW_LLVM_CL=0; ALLOW_LLVM_IR=0; ALLOW_LLVM_IR_AS_INPUT=0; ALLOW_MINIMAL_BUILD=0; ALLOW_WASM=0; ICE_THREAD_LOCAL_HACK=0;"
1922         FOLDER "Subzero"
1923     )
1924
1925     if(WIN32)
1926         target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
1927     endif()
1928 endif()
1929
1930 ###########################################################
1931 # Include Directories
1932 ###########################################################
1933
1934 set(COMMON_INCLUDE_DIR
1935     ${SOURCE_DIR}
1936     ${CMAKE_CURRENT_SOURCE_DIR}/include
1937     ${LLVM_INCLUDE_DIR}
1938 )
1939 set(OPENGL_INCLUDE_DIR
1940     ${OPENGL_DIR}
1941     ${COMMON_INCLUDE_DIR}
1942 )
1943
1944 set(VULKAN_INCLUDE_DIR
1945     ${COMMON_INCLUDE_DIR}
1946 )
1947
1948 ###########################################################
1949 # File Lists
1950 ###########################################################
1951
1952 file(GLOB_RECURSE SWIFTSHADER_LIST
1953     ${SOURCE_DIR}/Common/*.cpp
1954     ${SOURCE_DIR}/Common/*.h
1955     ${SOURCE_DIR}/Common/*.hpp
1956     ${SOURCE_DIR}/Renderer/*.cpp
1957     ${SOURCE_DIR}/Renderer/*.h
1958     ${SOURCE_DIR}/Renderer/*.hpp
1959     ${SOURCE_DIR}/Shader/*.cpp
1960     ${SOURCE_DIR}/Shader/*.h
1961     ${SOURCE_DIR}/Shader/*.hpp
1962 )
1963 list(APPEND SWIFTSHADER_LIST
1964     ${SOURCE_DIR}/Main/Config.cpp
1965     ${SOURCE_DIR}/Main/Config.hpp
1966     ${SOURCE_DIR}/Main/FrameBuffer.cpp
1967     ${SOURCE_DIR}/Main/FrameBuffer.hpp
1968     ${SOURCE_DIR}/Main/SwiftConfig.cpp
1969     ${SOURCE_DIR}/Main/SwiftConfig.hpp
1970 )
1971 list(REMOVE_ITEM SWIFTSHADER_LIST
1972     ${SOURCE_DIR}/Common/DebugAndroid.cpp
1973     ${SOURCE_DIR}/Common/DebugAndroid.hpp
1974     ${SOURCE_DIR}/Common/GrallocAndroid.cpp
1975     ${SOURCE_DIR}/Common/GrallocAndroid.hpp
1976 )
1977
1978 set(REACTOR_LLVM_LIST
1979     ${SOURCE_DIR}/Reactor/Reactor.cpp
1980     ${SOURCE_DIR}/Reactor/LLVMReactor.cpp
1981     ${SOURCE_DIR}/Reactor/Nucleus.hpp
1982     ${SOURCE_DIR}/Reactor/Routine.cpp
1983     ${SOURCE_DIR}/Reactor/Routine.hpp
1984     ${SOURCE_DIR}/Reactor/LLVMRoutine.cpp
1985     ${SOURCE_DIR}/Reactor/LLVMRoutine.hpp
1986     ${SOURCE_DIR}/Reactor/LLVMRoutineManager.cpp
1987     ${SOURCE_DIR}/Reactor/LLVMRoutineManager.hpp
1988     ${SOURCE_DIR}/Reactor/CPUID.cpp
1989     ${SOURCE_DIR}/Reactor/CPUID.hpp
1990     ${SOURCE_DIR}/Reactor/Debug.cpp
1991     ${SOURCE_DIR}/Reactor/Debug.hpp
1992     ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1993     ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
1994 )
1995
1996 file(GLOB_RECURSE EGL_LIST
1997     ${OPENGL_DIR}/libEGL/*.cpp
1998     ${OPENGL_DIR}/libEGL/*.h
1999     ${OPENGL_DIR}/libEGL/*.hpp
2000     ${OPENGL_DIR}/common/Object.cpp
2001     ${OPENGL_DIR}/common/Object.hpp
2002     ${OPENGL_DIR}/common/debug.cpp
2003     ${OPENGL_DIR}/common/debug.h
2004     ${SOURCE_DIR}/Common/SharedLibrary.cpp
2005     ${SOURCE_DIR}/Common/SharedLibrary.hpp
2006     ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
2007 )
2008
2009 file(GLOB_RECURSE GLES2_LIST
2010     ${OPENGL_DIR}/libGLESv2/*.cpp
2011     ${OPENGL_DIR}/libGLESv2/*.h
2012     ${OPENGL_DIR}/libGLESv2/*.hpp
2013     ${OPENGL_DIR}/common/*.cpp
2014     ${OPENGL_DIR}/common/*.h
2015     ${OPENGL_DIR}/common/*.hpp
2016     ${SOURCE_DIR}/Common/SharedLibrary.cpp
2017     ${SOURCE_DIR}/Common/SharedLibrary.hpp
2018     ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
2019     ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES2/*.h
2020     ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES3/*.h
2021 )
2022
2023 file(GLOB_RECURSE GLES_CM_LIST
2024     ${OPENGL_DIR}/libGLES_CM/*.cpp
2025     ${OPENGL_DIR}/libGLES_CM/*.h
2026     ${OPENGL_DIR}/libGLES_CM/*.hpp
2027     ${OPENGL_DIR}/common/*.cpp
2028     ${OPENGL_DIR}/common/*.h
2029     ${OPENGL_DIR}/common/*.hpp
2030     ${SOURCE_DIR}/Common/SharedLibrary.cpp
2031     ${SOURCE_DIR}/Common/SharedLibrary.hpp
2032     ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
2033     ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES/*.h
2034 )
2035
2036 file(GLOB_RECURSE OPENGL_COMPILER_LIST
2037     ${OPENGL_COMPILER_DIR}/*.cpp
2038     ${OPENGL_COMPILER_DIR}/*.h
2039     ${OPENGL_COMPILER_DIR}/*.hpp
2040 )
2041 file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
2042     ${OPENGL_COMPILER_DIR}/ossource*.cpp
2043     ${OPENGL_COMPILER_DIR}/ossource*.h
2044     ${OPENGL_COMPILER_DIR}/ossource*.hpp
2045 )
2046 list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
2047
2048 file(GLOB_RECURSE VULKAN_LIST
2049     ${VULKAN_DIR}/*.cpp
2050     ${VULKAN_DIR}/*.h
2051     ${VULKAN_DIR}/*.hpp
2052     ${SOURCE_DIR}/System/CPUID.cpp
2053     ${SOURCE_DIR}/System/CPUID.hpp
2054     ${SOURCE_DIR}/System/Configurator.cpp
2055     ${SOURCE_DIR}/System/Configurator.hpp
2056     ${SOURCE_DIR}/System/Debug.cpp
2057     ${SOURCE_DIR}/System/Debug.hpp
2058     ${SOURCE_DIR}/System/Half.cpp
2059     ${SOURCE_DIR}/System/Half.hpp
2060     ${SOURCE_DIR}/System/Math.cpp
2061     ${SOURCE_DIR}/System/Math.hpp
2062     ${SOURCE_DIR}/System/Memory.cpp
2063     ${SOURCE_DIR}/System/Memory.hpp
2064     ${SOURCE_DIR}/System/Resource.cpp
2065     ${SOURCE_DIR}/System/Resource.hpp
2066     ${SOURCE_DIR}/System/Socket.cpp
2067     ${SOURCE_DIR}/System/Socket.hpp
2068     ${SOURCE_DIR}/System/Thread.cpp
2069     ${SOURCE_DIR}/System/Thread.hpp
2070     ${SOURCE_DIR}/System/Timer.cpp
2071     ${SOURCE_DIR}/System/Timer.hpp
2072     ${SOURCE_DIR}/Device/*.cpp
2073     ${SOURCE_DIR}/Device/*.hpp
2074     ${SOURCE_DIR}/Pipeline/*.cpp
2075     ${SOURCE_DIR}/Pipeline/*.hpp
2076     ${SOURCE_DIR}/WSI/VkSurfaceKHR.cpp
2077     ${SOURCE_DIR}/WSI/VkSurfaceKHR.hpp
2078     ${SOURCE_DIR}/WSI/VkSwapchainKHR.cpp
2079     ${SOURCE_DIR}/WSI/VkSwapchainKHR.hpp
2080     ${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/*.h}
2081 )
2082
2083 ###########################################################
2084 # Append OS specific files to lists
2085 ###########################################################
2086
2087 if(WIN32)
2088     list(APPEND SWIFTSHADER_LIST
2089         ${SOURCE_DIR}/Main/FrameBufferDD.cpp
2090         ${SOURCE_DIR}/Main/FrameBufferDD.hpp
2091         ${SOURCE_DIR}/Main/FrameBufferGDI.cpp
2092         ${SOURCE_DIR}/Main/FrameBufferGDI.hpp
2093         ${SOURCE_DIR}/Main/FrameBufferWin.cpp
2094         ${SOURCE_DIR}/Main/FrameBufferWin.hpp
2095     )
2096     list(APPEND OPENGL_COMPILER_LIST ${OPENGL_COMPILER_DIR}/ossource_win.cpp)
2097     list(APPEND EGL_LIST ${OPENGL_DIR}/libEGL/libEGL.rc)
2098     list(APPEND GLES2_LIST ${OPENGL_DIR}/libGLESv2/libGLESv2.rc)
2099     list(APPEND GLES_CM_LIST ${OPENGL_DIR}/libGLES_CM/libGLES_CM.rc)
2100 elseif(LINUX)
2101     list(APPEND SWIFTSHADER_LIST
2102         ${SOURCE_DIR}/Main/FrameBufferX11.cpp
2103         ${SOURCE_DIR}/Main/FrameBufferX11.hpp
2104         ${SOURCE_DIR}/Common/SharedLibrary.hpp
2105         ${SOURCE_DIR}/Main/libX11.cpp
2106         ${SOURCE_DIR}/Main/libX11.hpp
2107     )
2108     list(APPEND EGL_LIST
2109         ${SOURCE_DIR}/Common/SharedLibrary.hpp
2110         ${SOURCE_DIR}/Main/libX11.cpp
2111         ${SOURCE_DIR}/Main/libX11.hpp
2112     )
2113     list(APPEND OPENGL_COMPILER_LIST
2114         ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
2115     )
2116
2117     list(APPEND VULKAN_LIST
2118         ${SOURCE_DIR}/WSI/libX11.cpp
2119         ${SOURCE_DIR}/WSI/libX11.hpp
2120         ${SOURCE_DIR}/WSI/XlibSurfaceKHR.cpp
2121         ${SOURCE_DIR}/WSI/XlibSurfaceKHR.hpp
2122     )
2123 elseif(APPLE)
2124     list(APPEND SWIFTSHADER_LIST
2125         ${SOURCE_DIR}/Main/FrameBufferOSX.mm
2126         ${SOURCE_DIR}/Main/FrameBufferOSX.hpp
2127     )
2128     list(APPEND EGL_LIST
2129         ${OPENGL_DIR}/libEGL/OSXUtils.mm
2130         ${OPENGL_DIR}/libEGL/OSXUtils.hpp
2131     )
2132     list(APPEND OPENGL_COMPILER_LIST
2133         ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
2134     )
2135 elseif(ANDROID)
2136     list(APPEND SWIFTSHADER_LIST
2137         ${SOURCE_DIR}/Main/FrameBufferAndroid.cpp
2138         ${SOURCE_DIR}/Main/FrameBufferAndroid.hpp
2139     )
2140     list(APPEND OPENGL_COMPILER_LIST
2141         ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
2142     )
2143 endif()
2144
2145 if(WIN32)
2146     set(OS_LIBS odbc32 odbccp32 WS2_32 dxguid)
2147 elseif(LINUX)
2148     set(OS_LIBS dl pthread)
2149 elseif(APPLE)
2150     find_library(COCOA_FRAMEWORK Cocoa)
2151     find_library(QUARTZ_FRAMEWORK Quartz)
2152     find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
2153     find_library(IOSURFACE_FRAMEWORK IOSurface)
2154     set(OS_LIBS "${COCOA_FRAMEWORK}" "${QUARTZ_FRAMEWORK}" "${CORE_FOUNDATION_FRAMEWORK}" "${IOSURFACE_FRAMEWORK}")
2155 endif()
2156
2157 ###########################################################
2158 # SwiftShader Targets
2159 ###########################################################
2160
2161 add_library(SwiftShader STATIC ${SWIFTSHADER_LIST})
2162 set_target_properties(SwiftShader PROPERTIES
2163     INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
2164     POSITION_INDEPENDENT_CODE 1
2165     FOLDER "Core"
2166     COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
2167 )
2168 target_link_libraries(SwiftShader ${OS_LIBS})
2169
2170 add_library(ReactorLLVM STATIC ${REACTOR_LLVM_LIST})
2171 set_target_properties(ReactorLLVM PROPERTIES
2172     INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
2173     POSITION_INDEPENDENT_CODE 1
2174     FOLDER "Core"
2175 )
2176 target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
2177
2178 if(${REACTOR_BACKEND} STREQUAL "LLVM")
2179     set(Reactor ReactorLLVM)
2180 elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
2181     set(Reactor ReactorSubzero)
2182 else()
2183     message(FATAL_ERROR "REACTOR_BACKEND must be 'LLVM' or 'Subzero'")
2184 endif()
2185
2186 add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
2187 set_target_properties(GLCompiler PROPERTIES
2188     INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2189     POSITION_INDEPENDENT_CODE 1
2190     FOLDER "OpenGL"
2191 )
2192 target_link_libraries(GLCompiler ${OS_LIBS})
2193
2194 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
2195     set(LIB_PREFIX "lib64")
2196 else()
2197     set(LIB_PREFIX "lib")
2198 endif()
2199
2200 if(BUILD_EGL)
2201     add_library(libEGL SHARED ${EGL_LIST})
2202     set_target_properties(libEGL PROPERTIES
2203         INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2204         FOLDER "OpenGL"
2205         COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;"
2206         PREFIX ""
2207     )
2208     if (ANDROID)
2209         set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
2210     endif ()
2211     set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
2212     target_link_libraries(libEGL ${OS_LIBS})
2213     add_custom_command(
2214         TARGET libEGL
2215         POST_BUILD
2216         COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
2217         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
2218         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2219         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2220     )
2221 endif()
2222
2223 if(BUILD_GLESv2)
2224     add_library(libGLESv2 SHARED ${GLES2_LIST})
2225     set_target_properties(libGLESv2 PROPERTIES
2226         INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2227         FOLDER "OpenGL"
2228         COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
2229         PREFIX ""
2230     )
2231     if (ANDROID)
2232         set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
2233     endif ()
2234     set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
2235     target_link_libraries(libGLESv2 SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
2236     add_custom_command(
2237         TARGET libGLESv2
2238         POST_BUILD
2239         COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
2240         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
2241         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2242         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2243     )
2244 endif()
2245
2246 if(BUILD_GLES_CM)
2247     add_library(libGLES_CM SHARED ${GLES_CM_LIST})
2248     set_target_properties(libGLES_CM PROPERTIES
2249         INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2250         FOLDER "OpenGL"
2251         COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
2252         PREFIX ""
2253     )
2254     if (ANDROID)
2255         set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
2256     endif ()
2257     set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
2258     target_link_libraries(libGLES_CM SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
2259     add_custom_command(
2260         TARGET libGLES_CM
2261         POST_BUILD
2262         COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
2263         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
2264     )
2265 endif()
2266
2267 if(BUILD_VULKAN)
2268     if (NOT TARGET SPIRV-Tools)
2269         # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
2270         set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
2271         list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
2272
2273         add_subdirectory(third_party/SPIRV-Tools)
2274     endif()
2275
2276     add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
2277     set_target_properties(libvk_swiftshader PROPERTIES
2278         INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
2279         FOLDER "Vulkan"
2280         COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
2281         PREFIX ""
2282     )
2283     set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
2284     target_link_libraries(libvk_swiftshader ${Reactor} ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
2285     add_custom_command(
2286         TARGET libvk_swiftshader
2287         POST_BUILD
2288         COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
2289         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
2290         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2291         COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2292     )
2293     configure_file(
2294         "${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
2295         "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
2296 endif()
2297
2298 ###########################################################
2299 # Sample programs
2300 ###########################################################
2301
2302 if(BUILD_SAMPLES)
2303     if(WIN32)
2304         add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
2305         set_target_properties(OGLES2HelloAPI PROPERTIES
2306             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
2307             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2308             FOLDER "Samples"
2309         )
2310         target_link_libraries(OGLES2HelloAPI libEGL libGLESv2)
2311         set_property(TARGET OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
2312         set(CMAKE_DEFAULT_STARTUP_PROJECT OGLES2HelloAPI)
2313     elseif(LINUX)
2314         add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
2315         set_target_properties(OGLES2HelloAPI PROPERTIES
2316             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
2317             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2318         )
2319         target_link_libraries(OGLES2HelloAPI dl X11 libEGL libGLESv2)   # Explicitly link our "lib*" targets, not the platform provided "EGL" and "GLESv2"
2320     elseif(APPLE)
2321         add_executable(OGLES2HelloAPI MACOSX_BUNDLE
2322             ${HELLO2_DIR}/OGLES2HelloAPI_OSX.mm
2323             ${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib
2324         )
2325         set_target_properties(OGLES2HelloAPI PROPERTIES
2326             INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
2327             COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2328             COMPILE_FLAGS "-Wno-deprecated-declarations" # 'NSTitledWindowMask', 'NSClosableWindowMask' is deprecated
2329             MACOSX_BUNDLE_INFO_PLIST "${HELLO2_DIR}/Build/OSX/Info.plist"
2330         )
2331         target_link_libraries(OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS})
2332         set_source_files_properties(${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib PROPERTIES
2333             MACOSX_PACKAGE_LOCATION "Resources"
2334         )
2335     endif()
2336 endif()
2337
2338 if(BUILD_TESTS)
2339     set(REACTOR_UNIT_TESTS_LIST
2340         ${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
2341         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
2342     )
2343
2344     set(REACTOR_UNIT_TESTS_INCLUDE_DIR
2345         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include
2346         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
2347     )
2348
2349     add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
2350     set_target_properties(ReactorUnitTests PROPERTIES
2351         INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
2352         FOLDER "Tests"
2353     )
2354
2355     if(NOT WIN32 AND ${REACTOR_BACKEND} STREQUAL "Subzero")
2356         target_link_libraries(ReactorUnitTests ${Reactor} pthread dl)
2357     else()
2358         target_link_libraries(ReactorUnitTests ${Reactor})
2359     endif()
2360 endif()
2361
2362 # GLES unit tests. TODO: Rename 'unittests' to 'gles-unittests'?
2363 if(BUILD_TESTS)
2364     set(UNITTESTS_LIST
2365         ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
2366         ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
2367         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
2368     )
2369
2370     set(UNITTESTS_INCLUDE_DIR
2371         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
2372         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
2373         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
2374         ${CMAKE_CURRENT_SOURCE_DIR}/include/
2375     )
2376
2377     add_executable(unittests ${UNITTESTS_LIST})
2378     set_target_properties(unittests PROPERTIES
2379         INCLUDE_DIRECTORIES "${UNITTESTS_INCLUDE_DIR}"
2380         FOLDER "Tests"
2381         COMPILE_DEFINITIONS "STANDALONE"
2382     )
2383
2384     target_link_libraries(unittests libEGL libGLESv2 ${OS_LIBS})
2385     if(ANDROID)
2386         target_link_libraries(unittests -landroid)
2387     endif()
2388 endif()
2389
2390 if(BUILD_TESTS AND BUILD_VULKAN)
2391     set(UNITTESTS_LIST
2392         ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Device.cpp
2393         ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
2394         ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
2395         ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
2396         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
2397     )
2398
2399     set(UNITTESTS_INCLUDE_DIR
2400         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
2401         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
2402         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
2403         ${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Tools/include
2404         ${CMAKE_CURRENT_SOURCE_DIR}/include/
2405     )
2406
2407     add_executable(vk-unittests ${UNITTESTS_LIST})
2408     set_target_properties(vk-unittests PROPERTIES
2409         INCLUDE_DIRECTORIES "${UNITTESTS_INCLUDE_DIR}"
2410         FOLDER "Tests"
2411         COMPILE_DEFINITIONS "STANDALONE"
2412     )
2413
2414     target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools)
2415 endif()