blob: 32a13c6ff8be52e0bd62a44f00f809040e7cb1bc [file] [log] [blame]
Nicolas Capensf554c542020-01-09 17:19:35 +00001cmake_minimum_required(VERSION 3.6.3)
Corentin Wallez0866b292015-12-09 13:49:40 -05002
Ben Clayton3cc0aea2020-01-08 19:09:25 +00003set(CMAKE_CXX_STANDARD 14)
4
Ben Clayton30b6b592019-08-07 15:04:11 +01005project(SwiftShader C CXX ASM)
Corentin Wallez0866b292015-12-09 13:49:40 -05006
Nicolas Capens4c9f04b2019-01-31 22:09:03 -05007# On Windows we use custom solution and project files, except for certain third-
8# party projects which use CMake-generated ones. They are manually (re)generated
9# and made path relative using build/cmake.sh, so they can be checked into the
10# repository. Therefore they should not be auto-regenerated and left using
11# absolute paths by CMake's ZERO_CHECK.
12if(WIN32)
13 # Disable automatically regenerating project files on CMakeLists.txt changes.
14 set(CMAKE_SUPPRESS_REGENERATION true)
15endif()
16
Corentin Wallez0866b292015-12-09 13:49:40 -050017###########################################################
18# Detect system
19###########################################################
20
Nicolas Capens6f422092015-12-23 15:12:45 -050021if(CMAKE_SYSTEM_NAME MATCHES "Linux")
Corentin Wallez0866b292015-12-09 13:49:40 -050022 set(LINUX ON)
Stephen Whitee6ab01f2019-04-04 14:31:25 -040023elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
24 set(ANDROID ON)
25 set(CMAKE_CXX_FLAGS "-DANDROID_NDK_BUILD")
Corentin Wallez0866b292015-12-09 13:49:40 -050026elseif(WIN32)
27elseif(APPLE)
28else()
29 message(FATAL_ERROR "Platform is not supported")
30endif()
31
Nicolas Capens30cd7d42017-04-25 15:17:25 -040032if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch")
33 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
34 set(ARCH "aarch64")
35 else()
36 set(ARCH "arm")
37 endif()
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +020038elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips*")
39 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
40 set(ARCH "mips64el")
41 else()
42 set(ARCH "mipsel")
43 endif()
Colin Samplesf63a3ab2019-06-13 12:53:09 -040044elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc*")
45 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
46 set(ARCH "ppc64le")
47 else()
48 message(FATAL_ERROR "Architecture is not supported")
49 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -050050else()
Nicolas Capens30cd7d42017-04-25 15:17:25 -040051 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
52 set(ARCH "x86_64")
53 else()
54 set(ARCH "x86")
55 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -050056endif()
57
Nicolas Capens007c6c52017-06-09 11:21:48 -040058set(CMAKE_MACOSX_RPATH ON)
59
Nicolas Capensd7a21cc2018-09-11 13:09:28 -040060if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (CMAKE_GENERATOR_TOOLSET STREQUAL ""))
61 message(WARNING "Visual Studio generators use the x86 host compiler by "
62 "default, even for 64-bit targets. This can result in linker "
63 "instability and out of memory errors. To use the 64-bit "
64 "host compiler, pass -Thost=x64 on the CMake command line.")
65endif()
66
Ben Clayton4901ffd2019-06-27 10:39:07 +010067# Use CCache if available
68find_program(CCACHE_FOUND ccache)
69if(CCACHE_FOUND)
70 message(STATUS "Using ccache")
71 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
72 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
Ben Clayton1e8486b2020-01-22 17:01:52 +000073endif()
Ben Clayton4901ffd2019-06-27 10:39:07 +010074
Corentin Wallez0866b292015-12-09 13:49:40 -050075###########################################################
Ben Claytona9af8832019-08-14 13:09:43 +010076# Host libraries
77###########################################################
78
79find_library(X11 X11)
80find_library(XCB xcb)
81
82###########################################################
Nicolas Capens18b8d682017-07-25 15:31:45 -040083# Options
84###########################################################
85
86if(NOT CMAKE_BUILD_TYPE)
87 set(CMAKE_BUILD_TYPE "Release" CACHE STRING "The type of build: Debug Release MinSizeRel RelWithDebInfo." FORCE)
88endif()
89set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release MinSizeRel RelWithDebInfo)
90
Ben Clayton5837d872020-01-20 16:23:36 +000091function (option_if_not_defined name description default)
92 if(NOT DEFINED ${name})
93 option(${name} ${description} ${default})
94 endif()
95endfunction()
Nicolas Capens18b8d682017-07-25 15:31:45 -040096
Ben Clayton9cc163c2020-01-20 16:26:36 +000097function (set_if_not_defined name value)
98 if(NOT DEFINED ${name})
99 set(${name} ${value} PARENT_SCOPE)
100 endif()
101endfunction()
102
Ben Clayton5837d872020-01-20 16:23:36 +0000103option_if_not_defined(SWIFTSHADER_BUILD_EGL "Build the EGL library" 1)
104option_if_not_defined(SWIFTSHADER_BUILD_GLESv2 "Build the OpenGL ES 2 library" 1)
105option_if_not_defined(SWIFTSHADER_BUILD_GLES_CM "Build the OpenGL ES 1.1 library" 1)
106option_if_not_defined(SWIFTSHADER_BUILD_VULKAN "Build the Vulkan library" 1)
107option_if_not_defined(SWIFTSHADER_BUILD_PVR "Fetch and build the PowerVR examples" 0)
Nicolas Capens18b8d682017-07-25 15:31:45 -0400108
Ben Clayton5837d872020-01-20 16:23:36 +0000109option_if_not_defined(SWIFTSHADER_USE_GROUP_SOURCES "Group the source files in a folder tree for Visual Studio" 1)
Nicolas Capens18b8d682017-07-25 15:31:45 -0400110
Ben Clayton5837d872020-01-20 16:23:36 +0000111option_if_not_defined(SWIFTSHADER_BUILD_SAMPLES "Build sample programs" 1)
112option_if_not_defined(SWIFTSHADER_BUILD_TESTS "Build test programs" 1)
113
114option_if_not_defined(SWIFTSHADER_MSAN "Build with memory sanitizer" 0)
115option_if_not_defined(SWIFTSHADER_ASAN "Build with address sanitizer" 0)
116option_if_not_defined(SWIFTSHADER_TSAN "Build with thread sanitizer" 0)
117option_if_not_defined(SWIFTSHADER_UBSAN "Build with undefined behavior sanitizer" 0)
118option_if_not_defined(SWIFTSHADER_WARNINGS_AS_ERRORS "Treat all warnings as errors" 1)
119option_if_not_defined(SWIFTSHADER_DCHECK_ALWAYS_ON "Check validation macros even in release builds" 0)
120option_if_not_defined(REACTOR_EMIT_DEBUG_INFO "Emit debug info for JIT functions" 0)
121option_if_not_defined(REACTOR_EMIT_PRINT_LOCATION "Emit printing of location info for JIT functions" 0)
122option_if_not_defined(REACTOR_VERIFY_LLVM_IR "Check reactor-generated LLVM IR is valid even in release builds" 0)
123option_if_not_defined(SWIFTSHADER_LESS_DEBUG_INFO "Generate less debug info to reduce file size" 0)
124option_if_not_defined(SWIFTSHADER_ENABLE_VULKAN_DEBUGGER "Enable vulkan debugger support" 0)
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400125
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500126set(BUILD_MARL ${SWIFTSHADER_BUILD_VULKAN})
Ben Clayton5e4d55f2019-12-10 19:40:58 +0000127
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500128if(${SWIFTSHADER_BUILD_VULKAN} AND ${SWIFTSHADER_ENABLE_VULKAN_DEBUGGER})
Ben Clayton9cc163c2020-01-20 16:26:36 +0000129 set_if_not_defined(SWIFTSHADER_BUILD_CPPDAP 1)
Ben Clayton5e4d55f2019-12-10 19:40:58 +0000130else()
Ben Clayton9cc163c2020-01-20 16:26:36 +0000131 set_if_not_defined(SWIFTSHADER_BUILD_CPPDAP 0)
Ben Clayton5e4d55f2019-12-10 19:40:58 +0000132endif()
Ben Claytone693b622019-09-05 12:48:37 +0100133
Nicolas Capens5f8a16a2019-08-15 10:36:13 -0400134set(DEFAULT_REACTOR_BACKEND "LLVM")
Nicolas Capens18b8d682017-07-25 15:31:45 -0400135
Nicolas Capens3957b7f2018-10-15 12:54:41 -0400136set(REACTOR_BACKEND ${DEFAULT_REACTOR_BACKEND} CACHE STRING "JIT compiler back-end used by Reactor")
Nicolas Capens18b8d682017-07-25 15:31:45 -0400137set_property(CACHE REACTOR_BACKEND PROPERTY STRINGS LLVM Subzero)
138
Antonio Maiorano062dc182019-12-09 11:52:31 -0500139# If defined, overrides the default optimization level of the current reactor backend.
140# Set to one of the rr::Optimization::Level enum values.
141set(REACTOR_DEFAULT_OPT_LEVEL "Default" CACHE STRING "Reactor default optimization level")
142set_property(CACHE REACTOR_DEFAULT_OPT_LEVEL PROPERTY STRINGS "None" "Less" "Default" "Aggressive")
143
Nicolas Capens18b8d682017-07-25 15:31:45 -0400144# LLVM disallows calling cmake . from the main LLVM dir, the reason is that
145# it builds header files that could overwrite the orignal ones. Here we
146# want to include LLVM as a subdirectory and even though it wouldn't cause
147# the problem, if cmake . is called from the main dir, the condition that
Erwin Jansend46faeb2018-11-19 16:01:37 -0800148# LLVM checkes, "CMAKE_CURRENT_SOURCE_DIR == CMAKE_CURRENT_BINARY_DIR" will be true. So we
Nicolas Capens18b8d682017-07-25 15:31:45 -0400149# disallow it ourselves too to. In addition if there are remining CMakeFiles
150# and CMakeCache in the directory, cmake .. from a subdirectory will still
151# try to build from the main directory so we instruct users to delete these
152# files when they get the error.
Erwin Jansend46faeb2018-11-19 16:01:37 -0800153if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
Nicolas Capens18b8d682017-07-25 15:31:45 -0400154 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.")
155endif()
156
157set_property(GLOBAL PROPERTY USE_FOLDERS ON)
158
159###########################################################
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400160# Initialize submodules
161###########################################################
162
Dan Sinclair6480d4e2019-03-11 10:48:19 -0400163if (NOT TARGET gtest)
164 if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
165 message(WARNING "
166 third_party/googletest submodule missing.
167 Running 'git submodule update --init' to download it:
168 ")
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400169
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500170 execute_process(COMMAND git submodule update --init ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest)
Dan Sinclair6480d4e2019-03-11 10:48:19 -0400171 endif()
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400172endif()
173
Ben Clayton755467c2019-03-23 11:57:02 +0000174if (NOT TARGET libbacktrace)
175 if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src/.git)
176 message(WARNING "
177 third_party/libbacktrace/src submodule missing.
178 Running 'git submodule update --init' to download it:
179 ")
180
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500181 execute_process(COMMAND git submodule update --init ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace)
Ben Clayton755467c2019-03-23 11:57:02 +0000182 endif()
183endif()
184
Antonio Maiorano8b321d12019-05-27 16:15:34 -0400185# Boost is downloaded if necessary
186
187# From https://www.boost.org/users/download/
188set(BOOST_VER 1.70.0)
189set(BOOST_HASH_TARGZ "882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9")
190set(BOOST_HASH_ZIP "48f379b2e90dd1084429aae87d6bdbde9670139fa7569ee856c8c86dd366039d")
191
192string(REPLACE "." "_" BOOST_VER_FNAME ${BOOST_VER})
193set(BOOST_THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_${BOOST_VER_FNAME})
194
195function(DownloadBoost)
196 if (LINUX)
197 set(BOOST_EXT "tar.gz")
198 set(BOOST_HASH ${BOOST_HASH_TARGZ})
199 else()
200 set(BOOST_EXT "zip")
201 set(BOOST_HASH ${BOOST_HASH_ZIP})
202 endif()
203
204 # Note: bintray.com has rate limiting, so use the sourceforge mirror
205 # set(BOOST_URL https://dl.bintray.com/boostorg/release/${BOOST_VER}/source/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
206 set(BOOST_URL https://iweb.dl.sourceforge.net/project/boost/boost/${BOOST_VER}/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
207
208 if (NOT TARGET Boost::boost)
209 if(NOT EXISTS ${BOOST_THIRD_PARTY_DIR})
210 message(WARNING "
211 third_party/boost is missing.
212 Downloading and extracting boost:
213 ")
214
215 set(BOOST_ARCHIVE ${CMAKE_BINARY_DIR}/temp/boost_archive)
216 message(STATUS "Downloading ${BOOST_URL} to ${BOOST_ARCHIVE}...")
217 file(DOWNLOAD ${BOOST_URL} ${BOOST_ARCHIVE} EXPECTED_HASH SHA256=${BOOST_HASH})
218 message(STATUS "Extracting ${BOOST_ARCHIVE} to ${BOOST_THIRD_PARTY_DIR}...")
219 execute_process(
220 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party
221 COMMAND cmake -E tar xf ${BOOST_ARCHIVE}
222 )
223 endif()
224 endif()
225endfunction()
226
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500227if (SWIFTSHADER_BUILD_PVR)
228 if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_Examples/.git)
229 message(WARNING "
230 third_party/PowerVR_Examples submodule missing.
231 Running 'git submodule update --init' to download it:
232 ")
233
234 execute_process(COMMAND git submodule update --init ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_Examples)
235 endif()
236 set(PVR_BUILD_EXAMPLES ON CACHE BOOL "Build the PowerVR SDK Examples" FORCE)
237 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_Examples)
238endif()
239
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400240###########################################################
Corentin Wallez0866b292015-12-09 13:49:40 -0500241# Convenience macros
242###########################################################
243
244# Recursively calls source_group on the files of the directory
245# so that Visual Studio has the files in a folder tree
246macro(group_all_sources directory)
Erwin Jansend46faeb2018-11-19 16:01:37 -0800247 file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${directory} ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/*)
Corentin Wallez0866b292015-12-09 13:49:40 -0500248 foreach(file ${files})
Erwin Jansend46faeb2018-11-19 16:01:37 -0800249 if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
Corentin Wallez0866b292015-12-09 13:49:40 -0500250 group_all_sources(${directory}/${file})
251 else()
252 string(REPLACE "/" "\\" groupname ${directory})
Erwin Jansend46faeb2018-11-19 16:01:37 -0800253 source_group(${groupname} FILES ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
Corentin Wallez0866b292015-12-09 13:49:40 -0500254 endif()
255 endforeach()
256endmacro()
257
258# Takes target library and a directory where the export map is
259# and add the linker options so that only the API symbols are
260# exported.
Nicolas Capens499bb762018-06-29 13:30:57 -0400261macro(set_shared_library_export_map TARGET DIR)
Corentin Wallez0866b292015-12-09 13:49:40 -0500262 if(MSVC)
Nicolas Capens499bb762018-06-29 13:30:57 -0400263 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"")
Ben Clayton8565e772019-06-10 11:58:37 +0100264 elseif(APPLE)
265 # The exported symbols list only exports the API functions and
266 # hides all the others.
267 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS "-exported_symbols_list ${DIR}/${TARGET}.exports")
268 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.exports;")
269 # Don't allow undefined symbols, unless it's a Sanitizer build.
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500270 if(NOT SWIFTSHADER_MSAN AND NOT SWIFTSHADER_ASAN AND NOT SWIFTSHADER_TSAN AND NOT SWIFTSHADER_UBSAN)
Ben Clayton8565e772019-06-10 11:58:37 +0100271 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-undefined,error")
272 endif()
Corentin Wallez27654c22015-12-09 15:22:08 -0500273 elseif(LINUX)
Corentin Wallez0866b292015-12-09 13:49:40 -0500274 # The version script only exports the API functions and
Nicolas Capens499bb762018-06-29 13:30:57 -0400275 # hides all the others.
276 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${DIR}/${TARGET}.lds")
277 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.lds;")
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400278
Nicolas Capens517a57f2018-06-29 13:30:57 -0400279 # Don't allow symbols to be overridden by another module.
280 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY COMPILE_FLAGS " -fvisibility=protected")
281
Gordana Cmiljanovic20622c02018-11-05 15:00:11 +0100282 if(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +0200283 # MIPS supports sysv hash-style only.
284 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=sysv")
285 else()
286 # Both hash-style are needed, because we want both gold and
287 # GNU ld to be able to read our libraries.
288 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=both")
289 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400290
291 # Gc sections is used in combination with each functions being
292 # in its own section, to reduce the binary size.
293 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--gc-sections")
294
295 # Don't allow undefined symbols, unless it's a Sanitizer build.
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500296 if(NOT SWIFTSHADER_MSAN AND NOT SWIFTSHADER_ASAN AND NOT SWIFTSHADER_TSAN AND NOT SWIFTSHADER_UBSAN)
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400297 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
298 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500299 endif()
300endmacro()
301
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500302if(SWIFTSHADER_USE_GROUP_SOURCES)
Corentin Wallez0866b292015-12-09 13:49:40 -0500303 group_all_sources(src)
304endif()
305
306###########################################################
307# Directories
308###########################################################
309
Erwin Jansend46faeb2018-11-19 16:01:37 -0800310set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
Corentin Wallez0866b292015-12-09 13:49:40 -0500311set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
312set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
Chris Forbes3d27f2e2018-09-26 09:24:39 -0700313set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
Ben Claytonafb4ebd2019-12-02 19:33:17 +0000314set(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
315set(LLVM_DIR ${THIRD_PARTY_DIR}/llvm-7.0/llvm)
316set(LLVM_CONFIG_DIR ${THIRD_PARTY_DIR}/llvm-7.0/configs)
317set(LIBBACKTRACE_DIR ${THIRD_PARTY_DIR}/libbacktrace/src)
318set(LIBBACKTRACE_CONFIG_DIR ${THIRD_PARTY_DIR}/libbacktrace/config)
319set(LIBBACKTRACE_INCLUDE_DIR ${THIRD_PARTY_DIR}/libbacktrace/src)
320set(MARL_INCLUDE_DIR ${THIRD_PARTY_DIR}/marl/include)
321set(CPPDAP_DIR ${THIRD_PARTY_DIR}/cppdap)
322set(CPPDAP_INCLUDE_DIR ${CPPDAP_DIR}/include)
323set(JSON_INCLUDE_DIR ${THIRD_PARTY_DIR}/json/include)
324set(SUBZERO_DIR ${THIRD_PARTY_DIR}/subzero)
325set(SUBZERO_LLVM_DIR ${THIRD_PARTY_DIR}/llvm-subzero)
Erwin Jansend46faeb2018-11-19 16:01:37 -0800326set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
Ben Claytonafb4ebd2019-12-02 19:33:17 +0000327set(HELLO2_DIR ${THIRD_PARTY_DIR}/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
Corentin Wallez0866b292015-12-09 13:49:40 -0500328
329###########################################################
330# Compile flags
331###########################################################
332
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100333# Flags for project code (non 3rd party)
334set(SWIFTSHADER_COMPILE_OPTIONS "")
335
Nicolas Capens6f422092015-12-23 15:12:45 -0500336macro(set_cpp_flag FLAG)
337 if(${ARGC} GREATER 1)
338 set(CMAKE_CXX_FLAGS_${ARGV1} "${CMAKE_CXX_FLAGS_${ARGV1}} ${FLAG}")
Corentin Wallez0866b292015-12-09 13:49:40 -0500339 else()
Nicolas Capens6f422092015-12-23 15:12:45 -0500340 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
Corentin Wallez0866b292015-12-09 13:49:40 -0500341 endif()
342endmacro()
343
Ben Clayton48c8a182019-05-21 20:00:20 +0100344macro(set_linker_flag FLAG)
345 if(${ARGC} GREATER 1)
346 set(CMAKE_EXE_LINKER_FLAGS ${ARGV1} "${CMAKE_EXE_LINKER_FLAGS ${ARGV1}} ${FLAG}")
347 else()
348 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}")
349 endif()
350endmacro()
351
Corentin Wallez0866b292015-12-09 13:49:40 -0500352if(MSVC)
353 set_cpp_flag("/MP")
354 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400355 add_definitions(-D_SCL_SECURE_NO_WARNINGS)
Nicolas Capens4c9f04b2019-01-31 22:09:03 -0500356 add_definitions(-D_SBCS) # Single Byte Character Set (ASCII)
Ben Clayton30b6b592019-08-07 15:04:11 +0100357 add_definitions(-D_ENABLE_EXTENDED_ALIGNED_STORAGE) # Disable MSVC warnings about std::aligned_storage being broken before VS 2017 15.8
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400358
Nicolas Capensf554c542020-01-09 17:19:35 +0000359 set_cpp_flag("/DEBUG:FASTLINK" DEBUG)
360 set_cpp_flag("/DEBUG:FASTLINK" RELWITHDEBINFO)
361
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500362 if(SWIFTSHADER_WARNINGS_AS_ERRORS)
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400363 set_cpp_flag("/WX") # Treat all warnings as errors
364 endif()
365
366 # Disable specific warnings
367 # TODO: Not all of these should be disabled, but for now, we want a warning-free msvc build. Remove these one by one
368 # and fix the actual warnings in code.
369 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
370 "/wd4005" # 'identifier' : macro redefinition
371 "/wd4018" # 'expression' : signed/unsigned mismatch
Ben Clayton4d4a1902019-05-15 11:15:42 +0100372 "/wd4065" # switch statement contains 'default' but no 'case' labels
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400373 "/wd4141" # 'modifier' : used more than once
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400374 "/wd4244" # 'conversion' conversion from 'type1' to 'type2', possible loss of data
375 "/wd4267" # 'var' : conversion from 'size_t' to 'type', possible loss of data
376 "/wd4291" # 'void X new(size_t,unsigned int,unsigned int)': no matching operator delete found; memory will not be freed if initialization throws an exception
377 "/wd4309" # 'conversion' : truncation of constant value
378 "/wd4624" # 'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted
379 "/wd4800" # 'type' : forcing value to bool 'true' or 'false' (performance warning)
380 "/wd4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
381 "/wd5030" # attribute 'attribute' is not recognized
382 "/wd5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
383 )
384
385 # Treat specific warnings as errors
386 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
387 "/we4018" # 'expression' : signed/unsigned mismatch
Antonio Maiorano23da0732019-05-14 22:32:16 -0400388 "/we4471" # 'enumeration': a forward declaration of an unscoped enumeration must have an underlying type (int assumed)
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400389 "/we4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
390 "/we5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
391 )
Corentin Wallez0866b292015-12-09 13:49:40 -0500392else()
Ben Clayton09a7f452019-04-25 15:22:43 +0100393 set_cpp_flag("-fno-exceptions")
394
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100395 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100396 "-Wall"
Ben Clayton8a983f72019-06-18 17:56:36 +0100397 "-Wreorder"
398 "-Wsign-compare"
399 "-Wmissing-braces"
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100400 )
Corentin Wallez0866b292015-12-09 13:49:40 -0500401
Ben Clayton5e828762019-04-24 19:16:52 +0100402 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100403 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
Ben Clayton8a983f72019-06-18 17:56:36 +0100404 "-Wunused-lambda-capture"
405 "-Wstring-conversion"
406 "-Wextra-semi"
407 "-Wignored-qualifiers"
Nicolas Capens67180a02019-06-17 15:27:03 -0400408 # Silence errors caused by unknown warnings when building with older
409 # versions of Clang. This demands checking that warnings added above
410 # are spelled correctly and work as intended!
411 "-Wno-unknown-warning-option"
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100412 )
Nicolas Capens825d3442018-11-06 23:50:05 -0500413 endif()
414
Corentin Wallez0866b292015-12-09 13:49:40 -0500415 # Remove xor, and, or and friends from the list of keywords, they are used
416 # by Reactor
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100417 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
418 "-fno-operator-names"
419 )
Corentin Wallez0866b292015-12-09 13:49:40 -0500420
421 # LLVM headers requires these flags to be set
422 set_cpp_flag("-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
423
Nicolas Capens499bb762018-06-29 13:30:57 -0400424 if(ARCH STREQUAL "x86")
Corentin Wallez0866b292015-12-09 13:49:40 -0500425 set_cpp_flag("-m32")
426 set_cpp_flag("-msse2")
Nicolas Capens0424edc2018-01-03 14:06:30 -0500427 set_cpp_flag("-mfpmath=sse")
428 set_cpp_flag("-march=pentium4")
429 set_cpp_flag("-mtune=generic")
Corentin Wallez0866b292015-12-09 13:49:40 -0500430 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400431 if(ARCH STREQUAL "x86_64")
Corentin Wallez0866b292015-12-09 13:49:40 -0500432 set_cpp_flag("-m64")
433 set_cpp_flag("-fPIC")
Nicolas Capens0424edc2018-01-03 14:06:30 -0500434 set_cpp_flag("-march=x86-64")
435 set_cpp_flag("-mtune=generic")
Corentin Wallez0866b292015-12-09 13:49:40 -0500436 endif()
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +0200437 if(ARCH STREQUAL "mipsel")
438 set_cpp_flag("-march=mips32r2")
439 set_cpp_flag("-fPIC")
440 set_cpp_flag("-mhard-float")
441 set_cpp_flag("-mfp32")
442 endif()
Gordana Cmiljanovic20622c02018-11-05 15:00:11 +0100443 if(ARCH STREQUAL "mips64el")
444 set_cpp_flag("-march=mips64r2")
445 set_cpp_flag("-mabi=64")
446 set_cpp_flag("-fPIC")
447 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400448
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500449 if(SWIFTSHADER_LESS_DEBUG_INFO)
Paul Thomson09b50792019-10-17 12:55:56 +0100450 # Use -g1 to be able to get stack traces
451 set_cpp_flag("-g -g1" DEBUG)
452 set_cpp_flag("-g -g1" RELWITHDEBINFO)
453 else()
454 # Use -g3 to have even more debug info
455 set_cpp_flag("-g -g3" DEBUG)
456 set_cpp_flag("-g -g3" RELWITHDEBINFO)
457 endif()
458
Ben Clayton09a91e42019-02-05 17:58:38 +0000459 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
460 # Treated as an unused argument with clang
461 set_cpp_flag("-s" RELEASE)
462 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500463
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500464 if(SWIFTSHADER_WARNINGS_AS_ERRORS)
Ben Clayton7aafb272019-02-19 17:08:56 +0000465 set_cpp_flag("-Werror") # Treat all warnings as errors
466 endif()
467
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500468 if(SWIFTSHADER_DCHECK_ALWAYS_ON)
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100469 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DDCHECK_ALWAYS_ON")
Ben Claytonf1172912019-02-26 16:52:12 +0000470 endif()
471
Ben Clayton0eee3322019-02-19 17:08:14 +0000472 # Disable pedanitc warnings
473 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100474 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
475 "-Wno-ignored-attributes" # ignoring attributes on template argument 'X'
476 "-Wno-attributes" # 'X' attribute ignored
477 "-Wno-strict-aliasing" # dereferencing type-punned pointer will break strict-aliasing rules
478 "-Wno-comment" # multi-line comment
479 )
Ben Clayton0eee3322019-02-19 17:08:14 +0000480 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100481 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
482 "-Wno-unneeded-internal-declaration" # function 'X' is not needed and will not be emitted
483 "-Wno-unused-private-field" # private field 'offset' is not used - TODO: Consider enabling this once Vulkan is further implemented.
484 "-Wno-comment" # multi-line comment
485 "-Wno-undefined-var-template" # instantiation of variable 'X' required here, but no definition is available
486 )
Ben Clayton0eee3322019-02-19 17:08:14 +0000487 endif()
488
Corentin Wallez0866b292015-12-09 13:49:40 -0500489 # For distribution it is more important to be slim than super optimized
Alexis Hetu2c0546d2017-05-24 11:16:26 -0400490 set_cpp_flag("-Os" RELEASE)
491 set_cpp_flag("-Os" RELWITHDEBINFO)
Corentin Wallez0866b292015-12-09 13:49:40 -0500492
493 set_cpp_flag("-DNDEBUG" RELEASE)
494 set_cpp_flag("-DNDEBUG" RELWITHDEBINFO)
495 set_cpp_flag("-DANGLE_DISABLE_TRACE" RELEASE)
496 set_cpp_flag("-DANGLE_DISABLE_TRACE" RELWITHDEBINFO)
497
498 # Put each variable and function in its own section so that when linking
499 # with -gc-sections unused functions and variables are removed.
500 set_cpp_flag("-ffunction-sections" RELEASE)
501 set_cpp_flag("-fdata-sections" RELEASE)
502 set_cpp_flag("-fomit-frame-pointer" RELEASE)
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400503
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500504 if(SWIFTSHADER_MSAN)
Ben Claytondae97922019-05-17 12:09:31 +0100505 set_cpp_flag("-fsanitize=memory")
Ben Clayton48c8a182019-05-21 20:00:20 +0100506 set_linker_flag("-fsanitize=memory")
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500507 elseif(SWIFTSHADER_ASAN)
Ben Claytondae97922019-05-17 12:09:31 +0100508 set_cpp_flag("-fsanitize=address")
Ben Clayton48c8a182019-05-21 20:00:20 +0100509 set_linker_flag("-fsanitize=address")
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500510 elseif(SWIFTSHADER_TSAN)
Ben Claytondae97922019-05-17 12:09:31 +0100511 set_cpp_flag("-fsanitize=thread")
Ben Clayton48c8a182019-05-21 20:00:20 +0100512 set_linker_flag("-fsanitize=thread")
Sean Risserf6d3cbb2020-01-08 14:44:53 -0500513 elseif(SWIFTSHADER_UBSAN)
Ben Claytondae97922019-05-17 12:09:31 +0100514 set_cpp_flag("-fsanitize=undefined")
Ben Clayton48c8a182019-05-21 20:00:20 +0100515 set_linker_flag("-fsanitize=undefined")
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400516 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500517endif()
518
Antonio Maioranof448d8e2019-04-26 16:19:16 -0400519if(REACTOR_EMIT_PRINT_LOCATION)
520 # This feature depends on REACTOR_EMIT_DEBUG_INFO, so enable it
521 set(REACTOR_EMIT_DEBUG_INFO "On")
522 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_EMIT_PRINT_LOCATION")
523endif()
524
525if(REACTOR_EMIT_DEBUG_INFO)
526 message(WARNING "REACTOR_EMIT_DEBUG_INFO is enabled. This will likely affect performance.")
527 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_DEBUG_INFO")
528endif()
529
Ben Clayton5375f472019-06-24 13:33:11 +0100530if(REACTOR_VERIFY_LLVM_IR)
531 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_LLVM_IR_VERIFICATION")
532endif()
533
Antonio Maiorano062dc182019-12-09 11:52:31 -0500534if(REACTOR_DEFAULT_OPT_LEVEL)
535 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DREACTOR_DEFAULT_OPT_LEVEL=${REACTOR_DEFAULT_OPT_LEVEL}")
536endif()
537
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400538if(WIN32)
Corentin Wallez0866b292015-12-09 13:49:40 -0500539 add_definitions(-DWINVER=0x501 -DNOMINMAX -DSTRICT)
Nicolas Capens6f422092015-12-23 15:12:45 -0500540 set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "" "lib")
Corentin Wallez0866b292015-12-09 13:49:40 -0500541endif()
542
Corentin Wallez0866b292015-12-09 13:49:40 -0500543###########################################################
544# LLVM
545###########################################################
546
Logan Chien0eedc8c2018-08-21 09:34:28 +0800547set(LLVM_LIST
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400548 ${LLVM_DIR}/lib/Analysis/AliasAnalysis.cpp
549 ${LLVM_DIR}/lib/Analysis/AliasAnalysisSummary.cpp
550 ${LLVM_DIR}/lib/Analysis/AliasSetTracker.cpp
551 ${LLVM_DIR}/lib/Analysis/AssumptionCache.cpp
552 ${LLVM_DIR}/lib/Analysis/BasicAliasAnalysis.cpp
553 ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfo.cpp
554 ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfoImpl.cpp
555 ${LLVM_DIR}/lib/Analysis/BranchProbabilityInfo.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400556 ${LLVM_DIR}/lib/Analysis/CallGraph.cpp
557 ${LLVM_DIR}/lib/Analysis/CallGraphSCCPass.cpp
558 ${LLVM_DIR}/lib/Analysis/CaptureTracking.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100559 ${LLVM_DIR}/lib/Analysis/CFG.cpp
560 ${LLVM_DIR}/lib/Analysis/CFLAndersAliasAnalysis.cpp
561 ${LLVM_DIR}/lib/Analysis/CFLSteensAliasAnalysis.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400562 ${LLVM_DIR}/lib/Analysis/CmpInstAnalysis.cpp
563 ${LLVM_DIR}/lib/Analysis/CodeMetrics.cpp
564 ${LLVM_DIR}/lib/Analysis/ConstantFolding.cpp
565 ${LLVM_DIR}/lib/Analysis/DemandedBits.cpp
566 ${LLVM_DIR}/lib/Analysis/DependenceAnalysis.cpp
567 ${LLVM_DIR}/lib/Analysis/DivergenceAnalysis.cpp
568 ${LLVM_DIR}/lib/Analysis/DominanceFrontier.cpp
569 ${LLVM_DIR}/lib/Analysis/EHPersonalities.cpp
570 ${LLVM_DIR}/lib/Analysis/GlobalsModRef.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400571 ${LLVM_DIR}/lib/Analysis/InlineCost.cpp
572 ${LLVM_DIR}/lib/Analysis/InstructionSimplify.cpp
573 ${LLVM_DIR}/lib/Analysis/IteratedDominanceFrontier.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100574 ${LLVM_DIR}/lib/Analysis/IVUsers.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400575 ${LLVM_DIR}/lib/Analysis/LazyBlockFrequencyInfo.cpp
576 ${LLVM_DIR}/lib/Analysis/LazyBranchProbabilityInfo.cpp
577 ${LLVM_DIR}/lib/Analysis/LazyValueInfo.cpp
578 ${LLVM_DIR}/lib/Analysis/Loads.cpp
579 ${LLVM_DIR}/lib/Analysis/LoopAnalysisManager.cpp
580 ${LLVM_DIR}/lib/Analysis/LoopInfo.cpp
581 ${LLVM_DIR}/lib/Analysis/LoopPass.cpp
582 ${LLVM_DIR}/lib/Analysis/MemoryBuiltins.cpp
583 ${LLVM_DIR}/lib/Analysis/MemoryDependenceAnalysis.cpp
584 ${LLVM_DIR}/lib/Analysis/MemoryLocation.cpp
585 ${LLVM_DIR}/lib/Analysis/MemorySSA.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100586 ${LLVM_DIR}/lib/Analysis/MemorySSAUpdater.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400587 ${LLVM_DIR}/lib/Analysis/MustExecute.cpp
588 ${LLVM_DIR}/lib/Analysis/ObjCARCAliasAnalysis.cpp
589 ${LLVM_DIR}/lib/Analysis/ObjCARCAnalysisUtils.cpp
590 ${LLVM_DIR}/lib/Analysis/ObjCARCInstKind.cpp
591 ${LLVM_DIR}/lib/Analysis/OptimizationRemarkEmitter.cpp
592 ${LLVM_DIR}/lib/Analysis/OrderedBasicBlock.cpp
593 ${LLVM_DIR}/lib/Analysis/PHITransAddr.cpp
594 ${LLVM_DIR}/lib/Analysis/PhiValues.cpp
595 ${LLVM_DIR}/lib/Analysis/PostDominators.cpp
596 ${LLVM_DIR}/lib/Analysis/ProfileSummaryInfo.cpp
597 ${LLVM_DIR}/lib/Analysis/PtrUseVisitor.cpp
598 ${LLVM_DIR}/lib/Analysis/ScalarEvolution.cpp
599 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
600 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionExpander.cpp
601 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionNormalization.cpp
602 ${LLVM_DIR}/lib/Analysis/ScopedNoAliasAA.cpp
603 ${LLVM_DIR}/lib/Analysis/TargetLibraryInfo.cpp
604 ${LLVM_DIR}/lib/Analysis/TargetTransformInfo.cpp
605 ${LLVM_DIR}/lib/Analysis/TypeBasedAliasAnalysis.cpp
606 ${LLVM_DIR}/lib/Analysis/ValueLattice.cpp
607 ${LLVM_DIR}/lib/Analysis/ValueLatticeUtils.cpp
608 ${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
609 ${LLVM_DIR}/lib/Analysis/VectorUtils.cpp
610 ${LLVM_DIR}/lib/AsmParser/LLLexer.cpp
611 ${LLVM_DIR}/lib/AsmParser/LLParser.cpp
612 ${LLVM_DIR}/lib/AsmParser/Parser.cpp
613 ${LLVM_DIR}/lib/BinaryFormat/Dwarf.cpp
614 ${LLVM_DIR}/lib/BinaryFormat/Magic.cpp
615 ${LLVM_DIR}/lib/BinaryFormat/Wasm.cpp
616 ${LLVM_DIR}/lib/Bitcode/Reader/BitcodeReader.cpp
617 ${LLVM_DIR}/lib/Bitcode/Reader/BitstreamReader.cpp
618 ${LLVM_DIR}/lib/Bitcode/Reader/MetadataLoader.cpp
619 ${LLVM_DIR}/lib/Bitcode/Reader/ValueList.cpp
620 ${LLVM_DIR}/lib/CodeGen/AggressiveAntiDepBreaker.cpp
621 ${LLVM_DIR}/lib/CodeGen/AllocationOrder.cpp
622 ${LLVM_DIR}/lib/CodeGen/Analysis.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400623 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AccelTable.cpp
624 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AddressPool.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100625 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/ARMException.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400626 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
627 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
628 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
629 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400630 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp
631 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
632 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugLocStream.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100633 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIE.cpp
634 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIEHash.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400635 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
636 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
637 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
638 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
639 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfFile.cpp
640 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
641 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
642 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/EHStreamer.cpp
643 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinCFGuard.cpp
644 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinException.cpp
645 ${LLVM_DIR}/lib/CodeGen/AtomicExpandPass.cpp
646 ${LLVM_DIR}/lib/CodeGen/BasicTargetTransformInfo.cpp
647 ${LLVM_DIR}/lib/CodeGen/BranchFolding.cpp
648 ${LLVM_DIR}/lib/CodeGen/BranchRelaxation.cpp
649 ${LLVM_DIR}/lib/CodeGen/BreakFalseDeps.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400650 ${LLVM_DIR}/lib/CodeGen/CalcSpillWeights.cpp
651 ${LLVM_DIR}/lib/CodeGen/CallingConvLower.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100652 ${LLVM_DIR}/lib/CodeGen/CFIInstrInserter.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400653 ${LLVM_DIR}/lib/CodeGen/CodeGen.cpp
654 ${LLVM_DIR}/lib/CodeGen/CodeGenPrepare.cpp
655 ${LLVM_DIR}/lib/CodeGen/CriticalAntiDepBreaker.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400656 ${LLVM_DIR}/lib/CodeGen/DeadMachineInstructionElim.cpp
657 ${LLVM_DIR}/lib/CodeGen/DetectDeadLanes.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100658 ${LLVM_DIR}/lib/CodeGen/DFAPacketizer.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400659 ${LLVM_DIR}/lib/CodeGen/DwarfEHPrepare.cpp
660 ${LLVM_DIR}/lib/CodeGen/EarlyIfConversion.cpp
661 ${LLVM_DIR}/lib/CodeGen/EdgeBundles.cpp
662 ${LLVM_DIR}/lib/CodeGen/ExecutionDomainFix.cpp
663 ${LLVM_DIR}/lib/CodeGen/ExpandISelPseudos.cpp
664 ${LLVM_DIR}/lib/CodeGen/ExpandMemCmp.cpp
665 ${LLVM_DIR}/lib/CodeGen/ExpandPostRAPseudos.cpp
666 ${LLVM_DIR}/lib/CodeGen/ExpandReductions.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400667 ${LLVM_DIR}/lib/CodeGen/FaultMaps.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100668 ${LLVM_DIR}/lib/CodeGen/FEntryInserter.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400669 ${LLVM_DIR}/lib/CodeGen/FuncletLayout.cpp
670 ${LLVM_DIR}/lib/CodeGen/GCMetadata.cpp
671 ${LLVM_DIR}/lib/CodeGen/GCMetadataPrinter.cpp
672 ${LLVM_DIR}/lib/CodeGen/GCRootLowering.cpp
673 ${LLVM_DIR}/lib/CodeGen/GCStrategy.cpp
674 ${LLVM_DIR}/lib/CodeGen/GlobalISel/CallLowering.cpp
675 ${LLVM_DIR}/lib/CodeGen/GlobalISel/GlobalISel.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400676 ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelect.cpp
677 ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelector.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100678 ${LLVM_DIR}/lib/CodeGen/GlobalISel/IRTranslator.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400679 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalityPredicates.cpp
680 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
681 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Legalizer.cpp
682 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
683 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
684 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Localizer.cpp
685 ${LLVM_DIR}/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
686 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegBankSelect.cpp
687 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBank.cpp
688 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
689 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Utils.cpp
690 ${LLVM_DIR}/lib/CodeGen/IfConversion.cpp
691 ${LLVM_DIR}/lib/CodeGen/ImplicitNullChecks.cpp
692 ${LLVM_DIR}/lib/CodeGen/IndirectBrExpandPass.cpp
693 ${LLVM_DIR}/lib/CodeGen/InlineSpiller.cpp
694 ${LLVM_DIR}/lib/CodeGen/InterferenceCache.cpp
695 ${LLVM_DIR}/lib/CodeGen/InterleavedAccessPass.cpp
696 ${LLVM_DIR}/lib/CodeGen/IntrinsicLowering.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400697 ${LLVM_DIR}/lib/CodeGen/LatencyPriorityQueue.cpp
698 ${LLVM_DIR}/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp
699 ${LLVM_DIR}/lib/CodeGen/LexicalScopes.cpp
700 ${LLVM_DIR}/lib/CodeGen/LiveDebugValues.cpp
701 ${LLVM_DIR}/lib/CodeGen/LiveDebugVariables.cpp
702 ${LLVM_DIR}/lib/CodeGen/LiveInterval.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400703 ${LLVM_DIR}/lib/CodeGen/LiveIntervals.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100704 ${LLVM_DIR}/lib/CodeGen/LiveIntervalUnion.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400705 ${LLVM_DIR}/lib/CodeGen/LivePhysRegs.cpp
706 ${LLVM_DIR}/lib/CodeGen/LiveRangeCalc.cpp
707 ${LLVM_DIR}/lib/CodeGen/LiveRangeEdit.cpp
708 ${LLVM_DIR}/lib/CodeGen/LiveRangeShrink.cpp
709 ${LLVM_DIR}/lib/CodeGen/LiveRegMatrix.cpp
710 ${LLVM_DIR}/lib/CodeGen/LiveRegUnits.cpp
711 ${LLVM_DIR}/lib/CodeGen/LiveStacks.cpp
712 ${LLVM_DIR}/lib/CodeGen/LiveVariables.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100713 ${LLVM_DIR}/lib/CodeGen/LLVMTargetMachine.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400714 ${LLVM_DIR}/lib/CodeGen/LocalStackSlotAllocation.cpp
715 ${LLVM_DIR}/lib/CodeGen/LoopTraversal.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400716 ${LLVM_DIR}/lib/CodeGen/LowerEmuTLS.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100717 ${LLVM_DIR}/lib/CodeGen/LowLevelType.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400718 ${LLVM_DIR}/lib/CodeGen/MachineBasicBlock.cpp
719 ${LLVM_DIR}/lib/CodeGen/MachineBlockFrequencyInfo.cpp
720 ${LLVM_DIR}/lib/CodeGen/MachineBlockPlacement.cpp
721 ${LLVM_DIR}/lib/CodeGen/MachineBranchProbabilityInfo.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400722 ${LLVM_DIR}/lib/CodeGen/MachineCombiner.cpp
723 ${LLVM_DIR}/lib/CodeGen/MachineCopyPropagation.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100724 ${LLVM_DIR}/lib/CodeGen/MachineCSE.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400725 ${LLVM_DIR}/lib/CodeGen/MachineDominanceFrontier.cpp
726 ${LLVM_DIR}/lib/CodeGen/MachineDominators.cpp
727 ${LLVM_DIR}/lib/CodeGen/MachineFrameInfo.cpp
728 ${LLVM_DIR}/lib/CodeGen/MachineFunction.cpp
729 ${LLVM_DIR}/lib/CodeGen/MachineFunctionPass.cpp
730 ${LLVM_DIR}/lib/CodeGen/MachineFunctionPrinterPass.cpp
731 ${LLVM_DIR}/lib/CodeGen/MachineInstr.cpp
732 ${LLVM_DIR}/lib/CodeGen/MachineInstrBundle.cpp
733 ${LLVM_DIR}/lib/CodeGen/MachineLICM.cpp
734 ${LLVM_DIR}/lib/CodeGen/MachineLoopInfo.cpp
735 ${LLVM_DIR}/lib/CodeGen/MachineModuleInfo.cpp
736 ${LLVM_DIR}/lib/CodeGen/MachineModuleInfoImpls.cpp
737 ${LLVM_DIR}/lib/CodeGen/MachineOperand.cpp
738 ${LLVM_DIR}/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
739 ${LLVM_DIR}/lib/CodeGen/MachineOutliner.cpp
740 ${LLVM_DIR}/lib/CodeGen/MachinePassRegistry.cpp
741 ${LLVM_DIR}/lib/CodeGen/MachinePipeliner.cpp
742 ${LLVM_DIR}/lib/CodeGen/MachinePostDominators.cpp
743 ${LLVM_DIR}/lib/CodeGen/MachineRegionInfo.cpp
744 ${LLVM_DIR}/lib/CodeGen/MachineRegisterInfo.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400745 ${LLVM_DIR}/lib/CodeGen/MachineScheduler.cpp
746 ${LLVM_DIR}/lib/CodeGen/MachineSink.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100747 ${LLVM_DIR}/lib/CodeGen/MachineSSAUpdater.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400748 ${LLVM_DIR}/lib/CodeGen/MachineTraceMetrics.cpp
749 ${LLVM_DIR}/lib/CodeGen/MachineVerifier.cpp
750 ${LLVM_DIR}/lib/CodeGen/MacroFusion.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100751 ${LLVM_DIR}/lib/CodeGen/MIRCanonicalizerPass.cpp
752 ${LLVM_DIR}/lib/CodeGen/MIRPrinter.cpp
753 ${LLVM_DIR}/lib/CodeGen/MIRPrintingPass.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400754 ${LLVM_DIR}/lib/CodeGen/OptimizePHIs.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400755 ${LLVM_DIR}/lib/CodeGen/PatchableFunction.cpp
756 ${LLVM_DIR}/lib/CodeGen/PeepholeOptimizer.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100757 ${LLVM_DIR}/lib/CodeGen/PHIElimination.cpp
758 ${LLVM_DIR}/lib/CodeGen/PHIEliminationUtils.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400759 ${LLVM_DIR}/lib/CodeGen/PostRAHazardRecognizer.cpp
760 ${LLVM_DIR}/lib/CodeGen/PostRASchedulerList.cpp
761 ${LLVM_DIR}/lib/CodeGen/PreISelIntrinsicLowering.cpp
762 ${LLVM_DIR}/lib/CodeGen/ProcessImplicitDefs.cpp
763 ${LLVM_DIR}/lib/CodeGen/PrologEpilogInserter.cpp
764 ${LLVM_DIR}/lib/CodeGen/PseudoSourceValue.cpp
765 ${LLVM_DIR}/lib/CodeGen/ReachingDefAnalysis.cpp
766 ${LLVM_DIR}/lib/CodeGen/RegAllocBase.cpp
767 ${LLVM_DIR}/lib/CodeGen/RegAllocBasic.cpp
768 ${LLVM_DIR}/lib/CodeGen/RegAllocFast.cpp
769 ${LLVM_DIR}/lib/CodeGen/RegAllocGreedy.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400770 ${LLVM_DIR}/lib/CodeGen/RegisterClassInfo.cpp
771 ${LLVM_DIR}/lib/CodeGen/RegisterCoalescer.cpp
772 ${LLVM_DIR}/lib/CodeGen/RegisterPressure.cpp
773 ${LLVM_DIR}/lib/CodeGen/RegisterScavenging.cpp
774 ${LLVM_DIR}/lib/CodeGen/RegisterUsageInfo.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100775 ${LLVM_DIR}/lib/CodeGen/RegUsageInfoCollector.cpp
776 ${LLVM_DIR}/lib/CodeGen/RegUsageInfoPropagate.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400777 ${LLVM_DIR}/lib/CodeGen/RenameIndependentSubregs.cpp
778 ${LLVM_DIR}/lib/CodeGen/ResetMachineFunctionPass.cpp
779 ${LLVM_DIR}/lib/CodeGen/SafeStack.cpp
780 ${LLVM_DIR}/lib/CodeGen/SafeStackColoring.cpp
781 ${LLVM_DIR}/lib/CodeGen/SafeStackLayout.cpp
782 ${LLVM_DIR}/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
783 ${LLVM_DIR}/lib/CodeGen/ScheduleDAG.cpp
784 ${LLVM_DIR}/lib/CodeGen/ScheduleDAGInstrs.cpp
785 ${LLVM_DIR}/lib/CodeGen/ScheduleDAGPrinter.cpp
786 ${LLVM_DIR}/lib/CodeGen/ScoreboardHazardRecognizer.cpp
787 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
788 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FastISel.cpp
789 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
790 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
791 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
792 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
793 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
794 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
795 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
796 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
797 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
798 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp
799 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
800 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
801 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
802 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
803 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
804 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
805 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
806 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
807 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
808 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGTargetInfo.cpp
809 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
810 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetLowering.cpp
811 ${LLVM_DIR}/lib/CodeGen/ShadowStackGCLowering.cpp
812 ${LLVM_DIR}/lib/CodeGen/ShrinkWrap.cpp
813 ${LLVM_DIR}/lib/CodeGen/SjLjEHPrepare.cpp
814 ${LLVM_DIR}/lib/CodeGen/SlotIndexes.cpp
815 ${LLVM_DIR}/lib/CodeGen/SpillPlacement.cpp
816 ${LLVM_DIR}/lib/CodeGen/SplitKit.cpp
817 ${LLVM_DIR}/lib/CodeGen/StackColoring.cpp
818 ${LLVM_DIR}/lib/CodeGen/StackMapLivenessAnalysis.cpp
819 ${LLVM_DIR}/lib/CodeGen/StackMaps.cpp
820 ${LLVM_DIR}/lib/CodeGen/StackProtector.cpp
821 ${LLVM_DIR}/lib/CodeGen/StackSlotColoring.cpp
822 ${LLVM_DIR}/lib/CodeGen/TailDuplication.cpp
823 ${LLVM_DIR}/lib/CodeGen/TailDuplicator.cpp
824 ${LLVM_DIR}/lib/CodeGen/TargetFrameLoweringImpl.cpp
825 ${LLVM_DIR}/lib/CodeGen/TargetInstrInfo.cpp
826 ${LLVM_DIR}/lib/CodeGen/TargetLoweringBase.cpp
827 ${LLVM_DIR}/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
828 ${LLVM_DIR}/lib/CodeGen/TargetOptionsImpl.cpp
829 ${LLVM_DIR}/lib/CodeGen/TargetPassConfig.cpp
830 ${LLVM_DIR}/lib/CodeGen/TargetRegisterInfo.cpp
831 ${LLVM_DIR}/lib/CodeGen/TargetSchedule.cpp
832 ${LLVM_DIR}/lib/CodeGen/TargetSubtargetInfo.cpp
833 ${LLVM_DIR}/lib/CodeGen/TwoAddressInstructionPass.cpp
834 ${LLVM_DIR}/lib/CodeGen/UnreachableBlockElim.cpp
835 ${LLVM_DIR}/lib/CodeGen/ValueTypes.cpp
836 ${LLVM_DIR}/lib/CodeGen/VirtRegMap.cpp
837 ${LLVM_DIR}/lib/CodeGen/WasmEHPrepare.cpp
838 ${LLVM_DIR}/lib/CodeGen/WinEHPrepare.cpp
839 ${LLVM_DIR}/lib/CodeGen/XRayInstrumentation.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400840 ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewError.cpp
841 ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
842 ${LLVM_DIR}/lib/DebugInfo/CodeView/ContinuationRecordBuilder.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100843 ${LLVM_DIR}/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400844 ${LLVM_DIR}/lib/DebugInfo/CodeView/Formatters.cpp
845 ${LLVM_DIR}/lib/DebugInfo/CodeView/GlobalTypeTableBuilder.cpp
846 ${LLVM_DIR}/lib/DebugInfo/CodeView/Line.cpp
847 ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordName.cpp
848 ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordSerialization.cpp
849 ${LLVM_DIR}/lib/DebugInfo/CodeView/SimpleTypeSerializer.cpp
850 ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
851 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
852 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeHashing.cpp
853 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndex.cpp
854 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
855 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeRecordMapping.cpp
856 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeTableCollection.cpp
857 ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngine.cpp
858 ${LLVM_DIR}/lib/ExecutionEngine/GDBRegistrationListener.cpp
859 ${LLVM_DIR}/lib/ExecutionEngine/Orc/Core.cpp
860 ${LLVM_DIR}/lib/ExecutionEngine/Orc/Legacy.cpp
861 ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcError.cpp
862 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp
863 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
864 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400865 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100866 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400867 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
868 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
869 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldELFMips.cpp
870 ${LLVM_DIR}/lib/ExecutionEngine/SectionMemoryManager.cpp
871 ${LLVM_DIR}/lib/ExecutionEngine/TargetSelect.cpp
872 ${LLVM_DIR}/lib/IR/AsmWriter.cpp
873 ${LLVM_DIR}/lib/IR/Attributes.cpp
874 ${LLVM_DIR}/lib/IR/AutoUpgrade.cpp
875 ${LLVM_DIR}/lib/IR/BasicBlock.cpp
876 ${LLVM_DIR}/lib/IR/Comdat.cpp
877 ${LLVM_DIR}/lib/IR/ConstantFold.cpp
878 ${LLVM_DIR}/lib/IR/ConstantRange.cpp
879 ${LLVM_DIR}/lib/IR/Constants.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400880 ${LLVM_DIR}/lib/IR/DataLayout.cpp
881 ${LLVM_DIR}/lib/IR/DebugInfo.cpp
882 ${LLVM_DIR}/lib/IR/DebugInfoMetadata.cpp
883 ${LLVM_DIR}/lib/IR/DebugLoc.cpp
884 ${LLVM_DIR}/lib/IR/DiagnosticHandler.cpp
885 ${LLVM_DIR}/lib/IR/DiagnosticInfo.cpp
886 ${LLVM_DIR}/lib/IR/DiagnosticPrinter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100887 ${LLVM_DIR}/lib/IR/DIBuilder.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400888 ${LLVM_DIR}/lib/IR/Dominators.cpp
889 ${LLVM_DIR}/lib/IR/Function.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400890 ${LLVM_DIR}/lib/IR/Globals.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100891 ${LLVM_DIR}/lib/IR/GVMaterializer.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400892 ${LLVM_DIR}/lib/IR/InlineAsm.cpp
893 ${LLVM_DIR}/lib/IR/Instruction.cpp
894 ${LLVM_DIR}/lib/IR/Instructions.cpp
895 ${LLVM_DIR}/lib/IR/IntrinsicInst.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100896 ${LLVM_DIR}/lib/IR/IRBuilder.cpp
897 ${LLVM_DIR}/lib/IR/IRPrintingPasses.cpp
898 ${LLVM_DIR}/lib/IR/LegacyPassManager.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400899 ${LLVM_DIR}/lib/IR/LLVMContext.cpp
900 ${LLVM_DIR}/lib/IR/LLVMContextImpl.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400901 ${LLVM_DIR}/lib/IR/Mangler.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100902 ${LLVM_DIR}/lib/IR/MDBuilder.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400903 ${LLVM_DIR}/lib/IR/Metadata.cpp
904 ${LLVM_DIR}/lib/IR/Module.cpp
905 ${LLVM_DIR}/lib/IR/Operator.cpp
906 ${LLVM_DIR}/lib/IR/OptBisect.cpp
907 ${LLVM_DIR}/lib/IR/Pass.cpp
908 ${LLVM_DIR}/lib/IR/PassManager.cpp
909 ${LLVM_DIR}/lib/IR/PassRegistry.cpp
910 ${LLVM_DIR}/lib/IR/ProfileSummary.cpp
911 ${LLVM_DIR}/lib/IR/Statepoint.cpp
912 ${LLVM_DIR}/lib/IR/Type.cpp
913 ${LLVM_DIR}/lib/IR/TypeFinder.cpp
914 ${LLVM_DIR}/lib/IR/Use.cpp
915 ${LLVM_DIR}/lib/IR/User.cpp
916 ${LLVM_DIR}/lib/IR/Value.cpp
917 ${LLVM_DIR}/lib/IR/ValueSymbolTable.cpp
918 ${LLVM_DIR}/lib/IR/Verifier.cpp
919 ${LLVM_DIR}/lib/MC/ELFObjectWriter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100920 ${LLVM_DIR}/lib/MC/MachObjectWriter.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400921 ${LLVM_DIR}/lib/MC/MCAsmBackend.cpp
922 ${LLVM_DIR}/lib/MC/MCAsmInfo.cpp
923 ${LLVM_DIR}/lib/MC/MCAsmInfoCOFF.cpp
924 ${LLVM_DIR}/lib/MC/MCAsmInfoDarwin.cpp
925 ${LLVM_DIR}/lib/MC/MCAsmInfoELF.cpp
926 ${LLVM_DIR}/lib/MC/MCAsmMacro.cpp
927 ${LLVM_DIR}/lib/MC/MCAsmStreamer.cpp
928 ${LLVM_DIR}/lib/MC/MCAssembler.cpp
929 ${LLVM_DIR}/lib/MC/MCCodeEmitter.cpp
930 ${LLVM_DIR}/lib/MC/MCCodePadder.cpp
931 ${LLVM_DIR}/lib/MC/MCCodeView.cpp
932 ${LLVM_DIR}/lib/MC/MCContext.cpp
933 ${LLVM_DIR}/lib/MC/MCDisassembler/MCRelocationInfo.cpp
934 ${LLVM_DIR}/lib/MC/MCDwarf.cpp
935 ${LLVM_DIR}/lib/MC/MCELFObjectTargetWriter.cpp
936 ${LLVM_DIR}/lib/MC/MCELFStreamer.cpp
937 ${LLVM_DIR}/lib/MC/MCExpr.cpp
938 ${LLVM_DIR}/lib/MC/MCFragment.cpp
939 ${LLVM_DIR}/lib/MC/MCInst.cpp
940 ${LLVM_DIR}/lib/MC/MCInstPrinter.cpp
941 ${LLVM_DIR}/lib/MC/MCInstrAnalysis.cpp
942 ${LLVM_DIR}/lib/MC/MCInstrDesc.cpp
943 ${LLVM_DIR}/lib/MC/MCLinkerOptimizationHint.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400944 ${LLVM_DIR}/lib/MC/MCMachObjectTargetWriter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +0100945 ${LLVM_DIR}/lib/MC/MCMachOStreamer.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400946 ${LLVM_DIR}/lib/MC/MCNullStreamer.cpp
947 ${LLVM_DIR}/lib/MC/MCObjectFileInfo.cpp
948 ${LLVM_DIR}/lib/MC/MCObjectStreamer.cpp
949 ${LLVM_DIR}/lib/MC/MCObjectWriter.cpp
950 ${LLVM_DIR}/lib/MC/MCParser/AsmLexer.cpp
951 ${LLVM_DIR}/lib/MC/MCParser/AsmParser.cpp
952 ${LLVM_DIR}/lib/MC/MCParser/COFFAsmParser.cpp
953 ${LLVM_DIR}/lib/MC/MCParser/DarwinAsmParser.cpp
954 ${LLVM_DIR}/lib/MC/MCParser/ELFAsmParser.cpp
955 ${LLVM_DIR}/lib/MC/MCParser/MCAsmLexer.cpp
956 ${LLVM_DIR}/lib/MC/MCParser/MCAsmParser.cpp
957 ${LLVM_DIR}/lib/MC/MCParser/MCAsmParserExtension.cpp
958 ${LLVM_DIR}/lib/MC/MCParser/MCTargetAsmParser.cpp
959 ${LLVM_DIR}/lib/MC/MCRegisterInfo.cpp
960 ${LLVM_DIR}/lib/MC/MCSchedule.cpp
961 ${LLVM_DIR}/lib/MC/MCSection.cpp
962 ${LLVM_DIR}/lib/MC/MCSectionCOFF.cpp
963 ${LLVM_DIR}/lib/MC/MCSectionELF.cpp
964 ${LLVM_DIR}/lib/MC/MCSectionMachO.cpp
965 ${LLVM_DIR}/lib/MC/MCSectionWasm.cpp
966 ${LLVM_DIR}/lib/MC/MCStreamer.cpp
967 ${LLVM_DIR}/lib/MC/MCSubtargetInfo.cpp
968 ${LLVM_DIR}/lib/MC/MCSymbol.cpp
969 ${LLVM_DIR}/lib/MC/MCSymbolELF.cpp
970 ${LLVM_DIR}/lib/MC/MCTargetOptions.cpp
971 ${LLVM_DIR}/lib/MC/MCValue.cpp
972 ${LLVM_DIR}/lib/MC/MCWasmStreamer.cpp
973 ${LLVM_DIR}/lib/MC/MCWin64EH.cpp
974 ${LLVM_DIR}/lib/MC/MCWinCOFFStreamer.cpp
975 ${LLVM_DIR}/lib/MC/MCWinEH.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400976 ${LLVM_DIR}/lib/MC/StringTableBuilder.cpp
977 ${LLVM_DIR}/lib/MC/SubtargetFeature.cpp
978 ${LLVM_DIR}/lib/MC/WasmObjectWriter.cpp
979 ${LLVM_DIR}/lib/MC/WinCOFFObjectWriter.cpp
980 ${LLVM_DIR}/lib/Object/Archive.cpp
981 ${LLVM_DIR}/lib/Object/Binary.cpp
982 ${LLVM_DIR}/lib/Object/COFFObjectFile.cpp
983 ${LLVM_DIR}/lib/Object/ELF.cpp
984 ${LLVM_DIR}/lib/Object/ELFObjectFile.cpp
985 ${LLVM_DIR}/lib/Object/Error.cpp
986 ${LLVM_DIR}/lib/Object/IRObjectFile.cpp
987 ${LLVM_DIR}/lib/Object/IRSymtab.cpp
988 ${LLVM_DIR}/lib/Object/MachOObjectFile.cpp
989 ${LLVM_DIR}/lib/Object/MachOUniversal.cpp
990 ${LLVM_DIR}/lib/Object/ModuleSymbolTable.cpp
991 ${LLVM_DIR}/lib/Object/ObjectFile.cpp
992 ${LLVM_DIR}/lib/Object/RecordStreamer.cpp
993 ${LLVM_DIR}/lib/Object/SymbolicFile.cpp
994 ${LLVM_DIR}/lib/Object/WasmObjectFile.cpp
995 ${LLVM_DIR}/lib/Object/WindowsResource.cpp
996 ${LLVM_DIR}/lib/ProfileData/InstrProf.cpp
997 ${LLVM_DIR}/lib/Support/APFloat.cpp
998 ${LLVM_DIR}/lib/Support/APInt.cpp
Nicolas Capens8c7da802019-04-29 11:52:35 -0400999 ${LLVM_DIR}/lib/Support/APSInt.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001000 ${LLVM_DIR}/lib/Support/ARMAttributeParser.cpp
1001 ${LLVM_DIR}/lib/Support/ARMBuildAttrs.cpp
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001002 ${LLVM_DIR}/lib/Support/Atomic.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001003 ${LLVM_DIR}/lib/Support/BinaryStreamError.cpp
1004 ${LLVM_DIR}/lib/Support/BinaryStreamReader.cpp
1005 ${LLVM_DIR}/lib/Support/BinaryStreamRef.cpp
1006 ${LLVM_DIR}/lib/Support/BinaryStreamWriter.cpp
1007 ${LLVM_DIR}/lib/Support/BlockFrequency.cpp
1008 ${LLVM_DIR}/lib/Support/BranchProbability.cpp
1009 ${LLVM_DIR}/lib/Support/Chrono.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001010 ${LLVM_DIR}/lib/Support/circular_raw_ostream.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001011 ${LLVM_DIR}/lib/Support/CodeGenCoverage.cpp
1012 ${LLVM_DIR}/lib/Support/CommandLine.cpp
1013 ${LLVM_DIR}/lib/Support/Compression.cpp
1014 ${LLVM_DIR}/lib/Support/ConvertUTF.cpp
1015 ${LLVM_DIR}/lib/Support/ConvertUTFWrapper.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001016 ${LLVM_DIR}/lib/Support/DataExtractor.cpp
1017 ${LLVM_DIR}/lib/Support/Debug.cpp
1018 ${LLVM_DIR}/lib/Support/DebugCounter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001019 ${LLVM_DIR}/lib/Support/DJB.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001020 ${LLVM_DIR}/lib/Support/DynamicLibrary.cpp
1021 ${LLVM_DIR}/lib/Support/Errno.cpp
1022 ${LLVM_DIR}/lib/Support/Error.cpp
1023 ${LLVM_DIR}/lib/Support/ErrorHandling.cpp
1024 ${LLVM_DIR}/lib/Support/FoldingSet.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001025 ${LLVM_DIR}/lib/Support/FormattedStream.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001026 ${LLVM_DIR}/lib/Support/FormatVariadic.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001027 ${LLVM_DIR}/lib/Support/GraphWriter.cpp
1028 ${LLVM_DIR}/lib/Support/Hashing.cpp
1029 ${LLVM_DIR}/lib/Support/Host.cpp
1030 ${LLVM_DIR}/lib/Support/IntEqClasses.cpp
1031 ${LLVM_DIR}/lib/Support/IntervalMap.cpp
1032 ${LLVM_DIR}/lib/Support/JamCRC.cpp
1033 ${LLVM_DIR}/lib/Support/KnownBits.cpp
1034 ${LLVM_DIR}/lib/Support/LEB128.cpp
1035 ${LLVM_DIR}/lib/Support/LineIterator.cpp
1036 ${LLVM_DIR}/lib/Support/Locale.cpp
1037 ${LLVM_DIR}/lib/Support/LowLevelType.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001038 ${LLVM_DIR}/lib/Support/ManagedStatic.cpp
1039 ${LLVM_DIR}/lib/Support/MathExtras.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001040 ${LLVM_DIR}/lib/Support/MD5.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001041 ${LLVM_DIR}/lib/Support/Memory.cpp
1042 ${LLVM_DIR}/lib/Support/MemoryBuffer.cpp
1043 ${LLVM_DIR}/lib/Support/Mutex.cpp
1044 ${LLVM_DIR}/lib/Support/NativeFormatting.cpp
1045 ${LLVM_DIR}/lib/Support/Path.cpp
1046 ${LLVM_DIR}/lib/Support/PrettyStackTrace.cpp
1047 ${LLVM_DIR}/lib/Support/Process.cpp
1048 ${LLVM_DIR}/lib/Support/Program.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001049 ${LLVM_DIR}/lib/Support/RandomNumberGenerator.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001050 ${LLVM_DIR}/lib/Support/raw_ostream.cpp
1051 ${LLVM_DIR}/lib/Support/regcomp.c
1052 ${LLVM_DIR}/lib/Support/regerror.c
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001053 ${LLVM_DIR}/lib/Support/Regex.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001054 ${LLVM_DIR}/lib/Support/regexec.c
1055 ${LLVM_DIR}/lib/Support/regfree.c
1056 ${LLVM_DIR}/lib/Support/regstrlcpy.c
1057 ${LLVM_DIR}/lib/Support/RWMutex.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001058 ${LLVM_DIR}/lib/Support/ScaledNumber.cpp
1059 ${LLVM_DIR}/lib/Support/ScopedPrinter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001060 ${LLVM_DIR}/lib/Support/SHA1.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001061 ${LLVM_DIR}/lib/Support/Signals.cpp
1062 ${LLVM_DIR}/lib/Support/SmallPtrSet.cpp
1063 ${LLVM_DIR}/lib/Support/SmallVector.cpp
1064 ${LLVM_DIR}/lib/Support/SourceMgr.cpp
1065 ${LLVM_DIR}/lib/Support/Statistic.cpp
1066 ${LLVM_DIR}/lib/Support/StringExtras.cpp
1067 ${LLVM_DIR}/lib/Support/StringMap.cpp
1068 ${LLVM_DIR}/lib/Support/StringRef.cpp
1069 ${LLVM_DIR}/lib/Support/StringSaver.cpp
1070 ${LLVM_DIR}/lib/Support/TargetParser.cpp
1071 ${LLVM_DIR}/lib/Support/TargetRegistry.cpp
1072 ${LLVM_DIR}/lib/Support/Threading.cpp
1073 ${LLVM_DIR}/lib/Support/Timer.cpp
1074 ${LLVM_DIR}/lib/Support/ToolOutputFile.cpp
1075 ${LLVM_DIR}/lib/Support/Triple.cpp
1076 ${LLVM_DIR}/lib/Support/Twine.cpp
1077 ${LLVM_DIR}/lib/Support/Unicode.cpp
1078 ${LLVM_DIR}/lib/Support/UnicodeCaseFold.cpp
1079 ${LLVM_DIR}/lib/Support/Valgrind.cpp
1080 ${LLVM_DIR}/lib/Support/YAMLParser.cpp
1081 ${LLVM_DIR}/lib/Support/YAMLTraits.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001082 ${LLVM_DIR}/lib/Target/TargetLoweringObjectFile.cpp
1083 ${LLVM_DIR}/lib/Target/TargetMachine.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +01001084 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroCleanup.cpp
1085 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroEarly.cpp
1086 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroElide.cpp
1087 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroFrame.cpp
1088 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroSplit.cpp
1089 ${LLVM_DIR}/lib/Transforms/Coroutines/Coroutines.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001090 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAddSub.cpp
1091 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
1092 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCalls.cpp
1093 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCasts.cpp
1094 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCompares.cpp
1095 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
1096 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
1097 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombinePHI.cpp
1098 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSelect.cpp
1099 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineShifts.cpp
1100 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
1101 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
1102 ${LLVM_DIR}/lib/Transforms/InstCombine/InstructionCombining.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +01001103 ${LLVM_DIR}/lib/Transforms/IPO/BarrierNoopPass.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001104 ${LLVM_DIR}/lib/Transforms/Scalar/ADCE.cpp
1105 ${LLVM_DIR}/lib/Transforms/Scalar/ConstantHoisting.cpp
1106 ${LLVM_DIR}/lib/Transforms/Scalar/DeadStoreElimination.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +01001107 ${LLVM_DIR}/lib/Transforms/Scalar/EarlyCSE.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001108 ${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
1109 ${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001110 ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001111 ${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
1112 ${LLVM_DIR}/lib/Transforms/Scalar/MergeICmps.cpp
1113 ${LLVM_DIR}/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp
1114 ${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
1115 ${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001116 ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001117 ${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001118 ${LLVM_DIR}/lib/Transforms/Scalar/SROA.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001119 ${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
1120 ${LLVM_DIR}/lib/Transforms/Utils/BreakCriticalEdges.cpp
1121 ${LLVM_DIR}/lib/Transforms/Utils/BuildLibCalls.cpp
1122 ${LLVM_DIR}/lib/Transforms/Utils/BypassSlowDivision.cpp
1123 ${LLVM_DIR}/lib/Transforms/Utils/CloneFunction.cpp
1124 ${LLVM_DIR}/lib/Transforms/Utils/DemoteRegToStack.cpp
1125 ${LLVM_DIR}/lib/Transforms/Utils/EntryExitInstrumenter.cpp
1126 ${LLVM_DIR}/lib/Transforms/Utils/EscapeEnumerator.cpp
1127 ${LLVM_DIR}/lib/Transforms/Utils/InlineFunction.cpp
1128 ${LLVM_DIR}/lib/Transforms/Utils/LCSSA.cpp
1129 ${LLVM_DIR}/lib/Transforms/Utils/Local.cpp
1130 ${LLVM_DIR}/lib/Transforms/Utils/LoopSimplify.cpp
1131 ${LLVM_DIR}/lib/Transforms/Utils/LoopUtils.cpp
1132 ${LLVM_DIR}/lib/Transforms/Utils/LowerInvoke.cpp
1133 ${LLVM_DIR}/lib/Transforms/Utils/OrderedInstructions.cpp
1134 ${LLVM_DIR}/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001135 ${LLVM_DIR}/lib/Transforms/Utils/SimplifyCFG.cpp
1136 ${LLVM_DIR}/lib/Transforms/Utils/SimplifyLibCalls.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001137 ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdater.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001138 ${LLVM_DIR}/lib/Transforms/Utils/SymbolRewriter.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -04001139 ${LLVM_DIR}/lib/Transforms/Utils/ValueMapper.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001140 ${LLVM_DIR}/lib/Transforms/Utils/VNCoercion.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +01001141 ${LLVM_DIR}/../stubs/Stubs.cpp
Logan Chien0eedc8c2018-08-21 09:34:28 +08001142)
1143
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001144if(ARCH STREQUAL "x86" OR ARCH STREQUAL "x86_64")
1145 list(APPEND LLVM_LIST
1146 ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
1147 ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmParser.cpp
1148 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
1149 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstComments.cpp
1150 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp
1151 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
1152 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
1153 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001154 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001155 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
1156 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
1157 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001158 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
1159 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
1160 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFTargetStreamer.cpp
1161 ${LLVM_DIR}/lib/Target/X86/ShadowCallStack.cpp
1162 ${LLVM_DIR}/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
1163 ${LLVM_DIR}/lib/Target/X86/Utils/X86ShuffleDecode.cpp
1164 ${LLVM_DIR}/lib/Target/X86/X86AsmPrinter.cpp
1165 ${LLVM_DIR}/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
1166 ${LLVM_DIR}/lib/Target/X86/X86CallFrameOptimization.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001167 ${LLVM_DIR}/lib/Target/X86/X86CallingConv.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001168 ${LLVM_DIR}/lib/Target/X86/X86CallLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001169 ${LLVM_DIR}/lib/Target/X86/X86CmovConversion.cpp
1170 ${LLVM_DIR}/lib/Target/X86/X86DomainReassignment.cpp
1171 ${LLVM_DIR}/lib/Target/X86/X86EvexToVex.cpp
1172 ${LLVM_DIR}/lib/Target/X86/X86ExpandPseudo.cpp
1173 ${LLVM_DIR}/lib/Target/X86/X86FastISel.cpp
1174 ${LLVM_DIR}/lib/Target/X86/X86FixupBWInsts.cpp
1175 ${LLVM_DIR}/lib/Target/X86/X86FixupLEAs.cpp
1176 ${LLVM_DIR}/lib/Target/X86/X86FixupSetCC.cpp
1177 ${LLVM_DIR}/lib/Target/X86/X86FlagsCopyLowering.cpp
1178 ${LLVM_DIR}/lib/Target/X86/X86FloatingPoint.cpp
1179 ${LLVM_DIR}/lib/Target/X86/X86FrameLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001180 ${LLVM_DIR}/lib/Target/X86/X86IndirectBranchTracking.cpp
1181 ${LLVM_DIR}/lib/Target/X86/X86InstrFMA3Info.cpp
1182 ${LLVM_DIR}/lib/Target/X86/X86InstrFoldTables.cpp
1183 ${LLVM_DIR}/lib/Target/X86/X86InstrInfo.cpp
1184 ${LLVM_DIR}/lib/Target/X86/X86InstructionSelector.cpp
1185 ${LLVM_DIR}/lib/Target/X86/X86InterleavedAccess.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001186 ${LLVM_DIR}/lib/Target/X86/X86ISelDAGToDAG.cpp
1187 ${LLVM_DIR}/lib/Target/X86/X86ISelLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001188 ${LLVM_DIR}/lib/Target/X86/X86LegalizerInfo.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001189 ${LLVM_DIR}/lib/Target/X86/X86MachineFunctionInfo.cpp
1190 ${LLVM_DIR}/lib/Target/X86/X86MacroFusion.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001191 ${LLVM_DIR}/lib/Target/X86/X86MCInstLower.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001192 ${LLVM_DIR}/lib/Target/X86/X86OptimizeLEAs.cpp
1193 ${LLVM_DIR}/lib/Target/X86/X86PadShortFunction.cpp
1194 ${LLVM_DIR}/lib/Target/X86/X86RegisterBankInfo.cpp
1195 ${LLVM_DIR}/lib/Target/X86/X86RegisterInfo.cpp
1196 ${LLVM_DIR}/lib/Target/X86/X86RetpolineThunks.cpp
1197 ${LLVM_DIR}/lib/Target/X86/X86SelectionDAGInfo.cpp
1198 ${LLVM_DIR}/lib/Target/X86/X86ShuffleDecodeConstantPool.cpp
1199 ${LLVM_DIR}/lib/Target/X86/X86SpeculativeLoadHardening.cpp
1200 ${LLVM_DIR}/lib/Target/X86/X86Subtarget.cpp
1201 ${LLVM_DIR}/lib/Target/X86/X86TargetMachine.cpp
1202 ${LLVM_DIR}/lib/Target/X86/X86TargetObjectFile.cpp
1203 ${LLVM_DIR}/lib/Target/X86/X86TargetTransformInfo.cpp
1204 ${LLVM_DIR}/lib/Target/X86/X86VZeroUpper.cpp
1205 ${LLVM_DIR}/lib/Target/X86/X86WinAllocaExpander.cpp
1206 ${LLVM_DIR}/lib/Target/X86/X86WinEHState.cpp
1207 )
1208elseif(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
1209 list(APPEND LLVM_LIST
1210 ${LLVM_DIR}/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
1211 ${LLVM_DIR}/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
1212 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp
1213 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
1214 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001215 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001216 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
1217 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
1218 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001219 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001220 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001221 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001222 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp
1223 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001224 ${LLVM_DIR}/lib/Target/Mips/MicroMipsSizeReduction.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001225 ${LLVM_DIR}/lib/Target/Mips/Mips16FrameLowering.cpp
1226 ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloat.cpp
1227 ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloatInfo.cpp
1228 ${LLVM_DIR}/lib/Target/Mips/Mips16InstrInfo.cpp
1229 ${LLVM_DIR}/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
1230 ${LLVM_DIR}/lib/Target/Mips/Mips16ISelLowering.cpp
1231 ${LLVM_DIR}/lib/Target/Mips/Mips16RegisterInfo.cpp
1232 ${LLVM_DIR}/lib/Target/Mips/MipsAnalyzeImmediate.cpp
1233 ${LLVM_DIR}/lib/Target/Mips/MipsAsmPrinter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001234 ${LLVM_DIR}/lib/Target/Mips/MipsBranchExpansion.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001235 ${LLVM_DIR}/lib/Target/Mips/MipsCallLowering.cpp
1236 ${LLVM_DIR}/lib/Target/Mips/MipsCCState.cpp
1237 ${LLVM_DIR}/lib/Target/Mips/MipsConstantIslandPass.cpp
1238 ${LLVM_DIR}/lib/Target/Mips/MipsDelaySlotFiller.cpp
1239 ${LLVM_DIR}/lib/Target/Mips/MipsExpandPseudo.cpp
1240 ${LLVM_DIR}/lib/Target/Mips/MipsFastISel.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001241 ${LLVM_DIR}/lib/Target/Mips/MipsFrameLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001242 ${LLVM_DIR}/lib/Target/Mips/MipsInstrInfo.cpp
1243 ${LLVM_DIR}/lib/Target/Mips/MipsInstructionSelector.cpp
1244 ${LLVM_DIR}/lib/Target/Mips/MipsISelDAGToDAG.cpp
1245 ${LLVM_DIR}/lib/Target/Mips/MipsISelLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001246 ${LLVM_DIR}/lib/Target/Mips/MipsLegalizerInfo.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001247 ${LLVM_DIR}/lib/Target/Mips/MipsMachineFunction.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001248 ${LLVM_DIR}/lib/Target/Mips/MipsMCInstLower.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001249 ${LLVM_DIR}/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
1250 ${LLVM_DIR}/lib/Target/Mips/MipsOptimizePICCall.cpp
1251 ${LLVM_DIR}/lib/Target/Mips/MipsOs16.cpp
1252 ${LLVM_DIR}/lib/Target/Mips/MipsRegisterBankInfo.cpp
1253 ${LLVM_DIR}/lib/Target/Mips/MipsRegisterInfo.cpp
1254 ${LLVM_DIR}/lib/Target/Mips/MipsSEFrameLowering.cpp
1255 ${LLVM_DIR}/lib/Target/Mips/MipsSEInstrInfo.cpp
1256 ${LLVM_DIR}/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
1257 ${LLVM_DIR}/lib/Target/Mips/MipsSEISelLowering.cpp
1258 ${LLVM_DIR}/lib/Target/Mips/MipsSERegisterInfo.cpp
1259 ${LLVM_DIR}/lib/Target/Mips/MipsSubtarget.cpp
1260 ${LLVM_DIR}/lib/Target/Mips/MipsTargetMachine.cpp
1261 ${LLVM_DIR}/lib/Target/Mips/MipsTargetObjectFile.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001262 ${LLVM_DIR}/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
1263 )
1264elseif(ARCH STREQUAL "aarch64")
1265 list(APPEND LLVM_LIST
Ben Clayton77d42cd2019-06-11 16:19:16 +01001266 ${LLVM_DIR}/lib/CodeGen/GlobalMerge.cpp
1267 ${LLVM_DIR}/lib/CodeGen/RegAllocPBQP.cpp
1268 ${LLVM_DIR}/lib/MC/ConstantPools.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001269 ${LLVM_DIR}/lib/Target/AArch64/AArch64A53Fix835769.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001270 ${LLVM_DIR}/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp
1271 ${LLVM_DIR}/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
1272 ${LLVM_DIR}/lib/Target/AArch64/AArch64AsmPrinter.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001273 ${LLVM_DIR}/lib/Target/AArch64/AArch64CallLowering.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001274 ${LLVM_DIR}/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
1275 ${LLVM_DIR}/lib/Target/AArch64/AArch64CollectLOH.cpp
1276 ${LLVM_DIR}/lib/Target/AArch64/AArch64CondBrTuning.cpp
1277 ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionalCompares.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001278 ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001279 ${LLVM_DIR}/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
1280 ${LLVM_DIR}/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
1281 ${LLVM_DIR}/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp
1282 ${LLVM_DIR}/lib/Target/AArch64/AArch64FastISel.cpp
1283 ${LLVM_DIR}/lib/Target/AArch64/AArch64FrameLowering.cpp
1284 ${LLVM_DIR}/lib/Target/AArch64/AArch64InstrInfo.cpp
1285 ${LLVM_DIR}/lib/Target/AArch64/AArch64InstructionSelector.cpp
1286 ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
1287 ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelLowering.cpp
1288 ${LLVM_DIR}/lib/Target/AArch64/AArch64LegalizerInfo.cpp
1289 ${LLVM_DIR}/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
1290 ${LLVM_DIR}/lib/Target/AArch64/AArch64MacroFusion.cpp
1291 ${LLVM_DIR}/lib/Target/AArch64/AArch64MCInstLower.cpp
1292 ${LLVM_DIR}/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
1293 ${LLVM_DIR}/lib/Target/AArch64/AArch64PromoteConstant.cpp
1294 ${LLVM_DIR}/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
1295 ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
1296 ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterInfo.cpp
1297 ${LLVM_DIR}/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
1298 ${LLVM_DIR}/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp
1299 ${LLVM_DIR}/lib/Target/AArch64/AArch64StorePairSuppress.cpp
1300 ${LLVM_DIR}/lib/Target/AArch64/AArch64Subtarget.cpp
1301 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetMachine.cpp
1302 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetObjectFile.cpp
1303 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
1304 ${LLVM_DIR}/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001305 ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
1306 ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001307 ${LLVM_DIR}/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001308 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
1309 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
1310 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
1311 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
1312 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
1313 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
1314 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
1315 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
1316 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
1317 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
1318 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
1319 ${LLVM_DIR}/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
1320 ${LLVM_DIR}/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
Ben Clayton77d42cd2019-06-11 16:19:16 +01001321 ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
1322 ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001323 )
1324elseif(ARCH STREQUAL "arm")
1325 list(APPEND LLVM_LIST
Ben Claytonc8740e02019-06-11 16:16:48 +01001326 ${LLVM_DIR}/lib/Target/ARM/A15SDOptimizer.cpp
1327 ${LLVM_DIR}/lib/Target/ARM/ARMAsmPrinter.cpp
1328 ${LLVM_DIR}/lib/Target/ARM/ARMBaseInstrInfo.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001329 ${LLVM_DIR}/lib/Target/ARM/ARMBaseRegisterInfo.cpp
1330 ${LLVM_DIR}/lib/Target/ARM/ARMCallLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001331 ${LLVM_DIR}/lib/Target/ARM/ARMCodeGenPrepare.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001332 ${LLVM_DIR}/lib/Target/ARM/ARMComputeBlockSize.cpp
1333 ${LLVM_DIR}/lib/Target/ARM/ARMConstantIslandPass.cpp
1334 ${LLVM_DIR}/lib/Target/ARM/ARMConstantPoolValue.cpp
1335 ${LLVM_DIR}/lib/Target/ARM/ARMExpandPseudoInsts.cpp
1336 ${LLVM_DIR}/lib/Target/ARM/ARMFastISel.cpp
1337 ${LLVM_DIR}/lib/Target/ARM/ARMFrameLowering.cpp
1338 ${LLVM_DIR}/lib/Target/ARM/ARMHazardRecognizer.cpp
1339 ${LLVM_DIR}/lib/Target/ARM/ARMInstrInfo.cpp
1340 ${LLVM_DIR}/lib/Target/ARM/ARMInstructionSelector.cpp
1341 ${LLVM_DIR}/lib/Target/ARM/ARMISelDAGToDAG.cpp
1342 ${LLVM_DIR}/lib/Target/ARM/ARMISelLowering.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001343 ${LLVM_DIR}/lib/Target/ARM/ARMLegalizerInfo.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001344 ${LLVM_DIR}/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
1345 ${LLVM_DIR}/lib/Target/ARM/ARMMachineFunctionInfo.cpp
1346 ${LLVM_DIR}/lib/Target/ARM/ARMMacroFusion.cpp
1347 ${LLVM_DIR}/lib/Target/ARM/ARMMCInstLower.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001348 ${LLVM_DIR}/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
Ben Claytonc8740e02019-06-11 16:16:48 +01001349 ${LLVM_DIR}/lib/Target/ARM/ARMParallelDSP.cpp
1350 ${LLVM_DIR}/lib/Target/ARM/ARMRegisterBankInfo.cpp
1351 ${LLVM_DIR}/lib/Target/ARM/ARMRegisterInfo.cpp
1352 ${LLVM_DIR}/lib/Target/ARM/ARMSelectionDAGInfo.cpp
1353 ${LLVM_DIR}/lib/Target/ARM/ARMSubtarget.cpp
1354 ${LLVM_DIR}/lib/Target/ARM/ARMTargetMachine.cpp
1355 ${LLVM_DIR}/lib/Target/ARM/ARMTargetObjectFile.cpp
1356 ${LLVM_DIR}/lib/Target/ARM/ARMTargetTransformInfo.cpp
1357 ${LLVM_DIR}/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
1358 ${LLVM_DIR}/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
1359 ${LLVM_DIR}/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
1360 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
1361 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
1362 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
1363 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
1364 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp
1365 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
1366 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
1367 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
1368 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
1369 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
1370 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp
1371 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
1372 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
1373 ${LLVM_DIR}/lib/Target/ARM/MLxExpansionPass.cpp
1374 ${LLVM_DIR}/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
1375 ${LLVM_DIR}/lib/Target/ARM/Thumb1FrameLowering.cpp
1376 ${LLVM_DIR}/lib/Target/ARM/Thumb1InstrInfo.cpp
1377 ${LLVM_DIR}/lib/Target/ARM/Thumb2InstrInfo.cpp
1378 ${LLVM_DIR}/lib/Target/ARM/Thumb2ITBlockPass.cpp
1379 ${LLVM_DIR}/lib/Target/ARM/Thumb2SizeReduction.cpp
1380 ${LLVM_DIR}/lib/Target/ARM/ThumbRegisterInfo.cpp
1381 ${LLVM_DIR}/lib/Target/ARM/Utils/ARMBaseInfo.cpp
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001382 )
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001383elseif(ARCH STREQUAL "ppc64le")
1384 list(APPEND LLVM_LIST
1385 ${LLVM_DIR}/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
1386 ${LLVM_DIR}/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
1387 ${LLVM_DIR}/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
1388 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
1389 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
1390 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
1391 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
1392 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
1393 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
1394 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
1395 ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
1396 ${LLVM_DIR}/lib/Target/PowerPC/PPCAsmPrinter.cpp
1397 ${LLVM_DIR}/lib/Target/PowerPC/PPCBoolRetToInt.cpp
1398 ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchCoalescing.cpp
1399 ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchSelector.cpp
1400 ${LLVM_DIR}/lib/Target/PowerPC/PPCCCState.cpp
1401 ${LLVM_DIR}/lib/Target/PowerPC/PPCCTRLoops.cpp
1402 ${LLVM_DIR}/lib/Target/PowerPC/PPCEarlyReturn.cpp
1403 ${LLVM_DIR}/lib/Target/PowerPC/PPCExpandISEL.cpp
1404 ${LLVM_DIR}/lib/Target/PowerPC/PPCFastISel.cpp
1405 ${LLVM_DIR}/lib/Target/PowerPC/PPCFrameLowering.cpp
1406 ${LLVM_DIR}/lib/Target/PowerPC/PPCHazardRecognizers.cpp
1407 ${LLVM_DIR}/lib/Target/PowerPC/PPCInstrInfo.cpp
1408 ${LLVM_DIR}/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
1409 ${LLVM_DIR}/lib/Target/PowerPC/PPCISelLowering.cpp
1410 ${LLVM_DIR}/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
1411 ${LLVM_DIR}/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp
1412 ${LLVM_DIR}/lib/Target/PowerPC/PPCMCInstLower.cpp
1413 ${LLVM_DIR}/lib/Target/PowerPC/PPCMIPeephole.cpp
1414 ${LLVM_DIR}/lib/Target/PowerPC/PPCPreEmitPeephole.cpp
1415 ${LLVM_DIR}/lib/Target/PowerPC/PPCQPXLoadSplat.cpp
1416 ${LLVM_DIR}/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
1417 ${LLVM_DIR}/lib/Target/PowerPC/PPCRegisterInfo.cpp
1418 ${LLVM_DIR}/lib/Target/PowerPC/PPCSubtarget.cpp
1419 ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetMachine.cpp
1420 ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetObjectFile.cpp
1421 ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
1422 ${LLVM_DIR}/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
1423 ${LLVM_DIR}/lib/Target/PowerPC/PPCTOCRegDeps.cpp
1424 ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXCopy.cpp
1425 ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXFMAMutate.cpp
1426 ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp
1427 ${LLVM_DIR}/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
1428 )
Ben Claytonac07ed82019-03-26 14:17:41 +00001429endif()
1430
1431if(REACTOR_EMIT_DEBUG_INFO)
1432 list(APPEND LLVM_LIST
1433 ${LLVM_DIR}/lib/Demangle/ItaniumDemangle.cpp
1434 )
Ben Clayton1e8486b2020-01-22 17:01:52 +00001435endif()
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001436
Logan Chien0eedc8c2018-08-21 09:34:28 +08001437set(LLVM_INCLUDE_DIR "")
1438
1439if(WIN32)
Nicolas Capensd7a21cc2018-09-11 13:09:28 -04001440 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/windows/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001441elseif(LINUX)
1442 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/linux/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001443 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/linux/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001444elseif(APPLE)
Nicolas Capens2337f062018-10-30 13:49:46 -04001445 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/darwin/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001446 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/darwin/include)
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001447elseif(ANDROID)
1448 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/android/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001449 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/android/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001450endif()
1451
1452list(APPEND LLVM_INCLUDE_DIR
1453 ${LLVM_DIR}/include
Logan Chien009fecb2018-08-21 15:14:16 +08001454 ${LLVM_DIR}/lib/Target/AArch64
1455 ${LLVM_DIR}/lib/Target/ARM
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001456 ${LLVM_DIR}/lib/Target/Mips
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001457 ${LLVM_DIR}/lib/Target/PowerPC
Logan Chien0eedc8c2018-08-21 09:34:28 +08001458 ${LLVM_DIR}/lib/Target/X86
1459 ${LLVM_CONFIG_DIR}/common/include
1460 ${LLVM_CONFIG_DIR}/common/lib/IR
Logan Chien009fecb2018-08-21 15:14:16 +08001461 ${LLVM_CONFIG_DIR}/common/lib/Target/AArch64
1462 ${LLVM_CONFIG_DIR}/common/lib/Target/ARM
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001463 ${LLVM_CONFIG_DIR}/common/lib/Target/Mips
Colin Samplesf63a3ab2019-06-13 12:53:09 -04001464 ${LLVM_CONFIG_DIR}/common/lib/Target/PowerPC
Logan Chien0eedc8c2018-08-21 09:34:28 +08001465 ${LLVM_CONFIG_DIR}/common/lib/Target/X86
1466 ${LLVM_CONFIG_DIR}/common/lib/Transforms/InstCombine
1467)
1468
Ben Clayton81be8c62019-02-26 16:50:31 +00001469# Suppress known LLVM warnings
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001470set(LLVM_COMPILE_OPTIONS)
Ben Clayton81be8c62019-02-26 16:50:31 +00001471if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001472 list(APPEND LLVM_COMPILE_OPTIONS
Ben Clayton81be8c62019-02-26 16:50:31 +00001473 "-Wno-noexcept-type" # mangled name for ‘X’ will change in C++17 because the exception specification is part of a function type
1474 "-Wno-maybe-uninitialized" # ‘X’ may be used uninitialized in this function
1475 "-Wno-unused-but-set-variable" # variable ‘X’ set but not used
1476 )
Nicolas Capens6d874f02019-06-26 10:31:47 -04001477 if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8)
1478 list(APPEND LLVM_COMPILE_OPTIONS
1479 "-Wno-class-memaccess" # memset/memcmp used on non-trivial class object
Chris Forbes23742c02019-08-21 12:30:06 -07001480 "-Wno-attributes" # declared inline but not inline
Nicolas Capens6d874f02019-06-26 10:31:47 -04001481 )
1482 endif()
Ben Claytonedd7d412019-04-14 08:41:27 -04001483elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001484 list(APPEND LLVM_COMPILE_OPTIONS
Ben Claytonedd7d412019-04-14 08:41:27 -04001485 "/wd4141" # 'inline': used more than once
1486 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
1487 "/wd4244" # 'X': conversion from 'uint64_t' to 'const unsigned int', possible loss of data
1488 "/wd4267" # 'X': conversion from 'size_t' to 'unsigned int', possible loss of data
1489 "/wd4291" # 'void X new(size_t,unsigned int,unsigned int)': no matching operator delete found; memory will not be freed if initialization throws an exception
1490 "/wd4319" # 'X': zero extending 'unsigned int' to 'uint64_t' of greater size
1491 "/wd4624" # 'X': destructor was implicitly defined as deleted
1492 "/wd4805" # 'X': unsafe mix of type 'unsigned int' and type 'bool' in operation
1493 "/wd4996" # 'X': Call to 'Y' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct.
1494 )
Ben Clayton81be8c62019-02-26 16:50:31 +00001495endif()
Ben Clayton81be8c62019-02-26 16:50:31 +00001496
Nicolas Capens5a105bc2015-12-22 22:04:28 -05001497add_library(llvm STATIC ${LLVM_LIST})
Corentin Wallez0866b292015-12-09 13:49:40 -05001498set_target_properties(llvm PROPERTIES
1499 POSITION_INDEPENDENT_CODE 1
1500 INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIR}"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001501 COMPILE_OPTIONS "${LLVM_COMPILE_OPTIONS}"
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001502 COMPILE_DEFINITIONS "__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001503 FOLDER "LLVM"
1504)
1505
Ben Clayton8f71f732019-02-01 09:38:45 +00001506# Add required libraries for LLVM
1507if(LINUX)
1508 target_link_libraries(llvm dl)
Ben Clayton1e8486b2020-01-22 17:01:52 +00001509endif()
Ben Clayton8f71f732019-02-01 09:38:45 +00001510
Corentin Wallez0866b292015-12-09 13:49:40 -05001511###########################################################
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001512# Subzero
1513###########################################################
1514
Nicolas Capens26690ed2017-03-31 10:34:20 -04001515if(${REACTOR_BACKEND} STREQUAL "Subzero")
1516 set(SUBZERO_LIST
1517 ${SUBZERO_DIR}/src/IceAssembler.cpp
1518 ${SUBZERO_DIR}/src/IceCfg.cpp
1519 ${SUBZERO_DIR}/src/IceCfgNode.cpp
1520 ${SUBZERO_DIR}/src/IceClFlags.cpp
1521 ${SUBZERO_DIR}/src/IceELFObjectWriter.cpp
1522 ${SUBZERO_DIR}/src/IceELFSection.cpp
1523 ${SUBZERO_DIR}/src/IceFixups.cpp
1524 ${SUBZERO_DIR}/src/IceGlobalContext.cpp
1525 ${SUBZERO_DIR}/src/IceGlobalInits.cpp
1526 ${SUBZERO_DIR}/src/IceInst.cpp
1527 ${SUBZERO_DIR}/src/IceInstrumentation.cpp
1528 ${SUBZERO_DIR}/src/IceIntrinsics.cpp
1529 ${SUBZERO_DIR}/src/IceLiveness.cpp
1530 ${SUBZERO_DIR}/src/IceLoopAnalyzer.cpp
1531 ${SUBZERO_DIR}/src/IceMangling.cpp
1532 ${SUBZERO_DIR}/src/IceMemory.cpp
1533 ${SUBZERO_DIR}/src/IceOperand.cpp
1534 ${SUBZERO_DIR}/src/IceRangeSpec.cpp
1535 ${SUBZERO_DIR}/src/IceRegAlloc.cpp
1536 ${SUBZERO_DIR}/src/IceRevision.cpp
1537 ${SUBZERO_DIR}/src/IceRNG.cpp
1538 ${SUBZERO_DIR}/src/IceSwitchLowering.cpp
1539 ${SUBZERO_DIR}/src/IceTargetLowering.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001540 ${SUBZERO_DIR}/src/IceThreading.cpp
1541 ${SUBZERO_DIR}/src/IceTimerTree.cpp
1542 ${SUBZERO_DIR}/src/IceTypes.cpp
1543 ${SUBZERO_DIR}/src/IceVariableSplitting.cpp
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001544 )
Nicolas Capens26690ed2017-03-31 10:34:20 -04001545
Nicolas Capens75753f92018-10-02 15:01:30 -04001546 # FIXME: Shouldn't depend on external source files directly.
1547 list(APPEND SUBZERO_LIST
1548 ${SOURCE_DIR}/Common/Memory.cpp
1549 )
1550
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001551 if(ARCH STREQUAL "x86_64")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001552 list(APPEND SUBZERO_LIST
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001553 ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001554 ${SUBZERO_DIR}/src/IceInstX8664.cpp
1555 ${SUBZERO_DIR}/src/IceTargetLoweringX8664.cpp
1556 )
1557 set(SUBZERO_TARGET X8664)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001558 elseif(ARCH STREQUAL "x86")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001559 list(APPEND SUBZERO_LIST
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001560 ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001561 ${SUBZERO_DIR}/src/IceInstX8632.cpp
1562 ${SUBZERO_DIR}/src/IceTargetLoweringX8632.cpp
1563 )
1564 set(SUBZERO_TARGET X8632)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001565 elseif(ARCH STREQUAL "arm")
1566 list(APPEND SUBZERO_LIST
1567 ${SUBZERO_DIR}/src/IceAssemblerARM32.cpp
1568 ${SUBZERO_DIR}/src/IceInstARM32.cpp
1569 ${SUBZERO_DIR}/src/IceTargetLoweringARM32.cpp
1570 )
1571 set(SUBZERO_TARGET ARM32)
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001572 elseif(ARCH STREQUAL "mipsel")
1573 list(APPEND SUBZERO_LIST
1574 ${SUBZERO_DIR}/src/IceAssemblerMIPS32.cpp
1575 ${SUBZERO_DIR}/src/IceInstMIPS32.cpp
1576 ${SUBZERO_DIR}/src/IceTargetLoweringMIPS32.cpp
1577 )
1578 set(SUBZERO_TARGET MIPS32)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001579 else()
1580 message(FATAL_ERROR "Architecture '${ARCH}' not supported by Subzero")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001581 endif()
1582
1583 file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
1584 ${SUBZERO_LLVM_DIR}/*.cpp
1585 ${SUBZERO_LLVM_DIR}/*.c
1586 ${SUBZERO_LLVM_DIR}/*.h
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001587 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001588
Nicolas Capens26690ed2017-03-31 10:34:20 -04001589 set(SUBZERO_REACTOR_LIST
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001590 ${SOURCE_DIR}/Reactor/Debug.cpp
1591 ${SOURCE_DIR}/Reactor/Debug.hpp
Antonio Maioranoe6ab4702019-11-29 11:26:30 -05001592 ${SOURCE_DIR}/Reactor/EmulatedReactor.cpp
Nicolas Capens1a3ce872018-10-10 10:42:36 -04001593 ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1594 ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
Ben Clayton23778452019-11-19 14:15:41 +00001595 ${SOURCE_DIR}/Reactor/Nucleus.hpp
1596 ${SOURCE_DIR}/Reactor/Optimizer.cpp
1597 ${SOURCE_DIR}/Reactor/Print.hpp
1598 ${SOURCE_DIR}/Reactor/Reactor.cpp
1599 ${SOURCE_DIR}/Reactor/Reactor.hpp
1600 ${SOURCE_DIR}/Reactor/Routine.hpp
1601 ${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001602 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001603
Nicolas Capens26690ed2017-03-31 10:34:20 -04001604 set(SUBZERO_INCLUDE_DIR
1605 ${SUBZERO_DIR}/
1606 ${SUBZERO_LLVM_DIR}/include/
1607 ${SUBZERO_DIR}/pnacl-llvm/include/
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001608 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001609
Nicolas Capens26690ed2017-03-31 10:34:20 -04001610 if(WIN32)
1611 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Windows/include/)
1612 elseif(LINUX)
1613 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Linux/include/)
1614 elseif(APPLE)
1615 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/MacOS/include/)
1616 endif()
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001617
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001618 if(WIN32)
1619 list(APPEND SUBZERO_COMPILE_OPTIONS
Antonio Maiorano992bf9d2019-10-22 09:41:17 -04001620 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001621 "/wd4334" # ''operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
1622 "/wd4996" # The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name.
1623 )
1624 endif()
1625
Nicolas Capens26690ed2017-03-31 10:34:20 -04001626 add_library(ReactorSubzero STATIC
1627 ${SUBZERO_LIST}
1628 ${SUBZERO_DEPENDENCIES_LIST}
1629 ${SUBZERO_REACTOR_LIST}
1630 )
Nicolas Capens26690ed2017-03-31 10:34:20 -04001631 set_target_properties(ReactorSubzero PROPERTIES
1632 POSITION_INDEPENDENT_CODE 1
1633 INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001634 COMPILE_OPTIONS "${SUBZERO_COMPILE_OPTIONS};${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens26690ed2017-03-31 10:34:20 -04001635 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;"
1636 FOLDER "Subzero"
1637 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001638
Nicolas Capens26690ed2017-03-31 10:34:20 -04001639 if(WIN32)
1640 target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
1641 endif()
Ben Clayton1e8486b2020-01-22 17:01:52 +00001642endif(${REACTOR_BACKEND} STREQUAL "Subzero")
Nicolas Capens19291ef2017-01-09 13:35:14 -05001643
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001644###########################################################
Corentin Wallez0866b292015-12-09 13:49:40 -05001645# Include Directories
1646###########################################################
1647
1648set(COMMON_INCLUDE_DIR
1649 ${SOURCE_DIR}
Erwin Jansend46faeb2018-11-19 16:01:37 -08001650 ${CMAKE_CURRENT_SOURCE_DIR}/include
Corentin Wallez0866b292015-12-09 13:49:40 -05001651 ${LLVM_INCLUDE_DIR}
Ben Claytonac07ed82019-03-26 14:17:41 +00001652 ${LIBBACKTRACE_INCLUDE_DIR}
Corentin Wallez0866b292015-12-09 13:49:40 -05001653)
1654set(OPENGL_INCLUDE_DIR
1655 ${OPENGL_DIR}
Corentin Wallez0866b292015-12-09 13:49:40 -05001656 ${COMMON_INCLUDE_DIR}
1657)
1658
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001659set(VULKAN_INCLUDE_DIR
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001660 ${COMMON_INCLUDE_DIR}
Ben Claytone693b622019-09-05 12:48:37 +01001661 ${MARL_INCLUDE_DIR}
Ben Claytonafb4ebd2019-12-02 19:33:17 +00001662 ${CPPDAP_INCLUDE_DIR}
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001663)
1664
Corentin Wallez0866b292015-12-09 13:49:40 -05001665###########################################################
1666# File Lists
1667###########################################################
1668
1669file(GLOB_RECURSE SWIFTSHADER_LIST
1670 ${SOURCE_DIR}/Common/*.cpp
1671 ${SOURCE_DIR}/Common/*.h
1672 ${SOURCE_DIR}/Common/*.hpp
1673 ${SOURCE_DIR}/Renderer/*.cpp
1674 ${SOURCE_DIR}/Renderer/*.h
1675 ${SOURCE_DIR}/Renderer/*.hpp
1676 ${SOURCE_DIR}/Shader/*.cpp
1677 ${SOURCE_DIR}/Shader/*.h
1678 ${SOURCE_DIR}/Shader/*.hpp
1679)
1680list(APPEND SWIFTSHADER_LIST
1681 ${SOURCE_DIR}/Main/Config.cpp
1682 ${SOURCE_DIR}/Main/Config.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001683 ${SOURCE_DIR}/Main/FrameBuffer.cpp
1684 ${SOURCE_DIR}/Main/FrameBuffer.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001685 ${SOURCE_DIR}/Main/SwiftConfig.cpp
1686 ${SOURCE_DIR}/Main/SwiftConfig.hpp
1687)
1688list(REMOVE_ITEM SWIFTSHADER_LIST
1689 ${SOURCE_DIR}/Common/DebugAndroid.cpp
1690 ${SOURCE_DIR}/Common/DebugAndroid.hpp
1691 ${SOURCE_DIR}/Common/GrallocAndroid.cpp
1692 ${SOURCE_DIR}/Common/GrallocAndroid.hpp
1693)
1694
Ben Claytonac07ed82019-03-26 14:17:41 +00001695if(REACTOR_EMIT_DEBUG_INFO)
1696 set(LIBBACKTRACE_LIST
1697 ${LIBBACKTRACE_DIR}/atomic.c
1698 ${LIBBACKTRACE_DIR}/backtrace.c
1699 ${LIBBACKTRACE_DIR}/backtrace.h
1700 ${LIBBACKTRACE_DIR}/dwarf.c
1701 ${LIBBACKTRACE_DIR}/fileline.c
1702 ${LIBBACKTRACE_DIR}/filenames.h
1703 ${LIBBACKTRACE_DIR}/internal.h
1704 ${LIBBACKTRACE_DIR}/mmap.c
1705 ${LIBBACKTRACE_DIR}/mmapio.c
1706 ${LIBBACKTRACE_DIR}/posix.c
1707 ${LIBBACKTRACE_DIR}/print.c
1708 ${LIBBACKTRACE_DIR}/simple.c
1709 ${LIBBACKTRACE_DIR}/sort.c
1710 ${LIBBACKTRACE_DIR}/state.c
1711 ${LIBBACKTRACE_INCLUDE_DIR}/backtrace-supported.h
1712 ${LIBBACKTRACE_INCLUDE_DIR}/config.h
1713 )
1714
1715 if(WIN32)
1716 list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/pecoff.c)
1717 elseif(LINUX)
1718 list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/elf.c)
1719 elseif(APPLE)
1720 message(FATAL_ERROR "libbacktrace does not support mach-o yet")
1721 endif()
1722endif(REACTOR_EMIT_DEBUG_INFO)
1723
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001724set(REACTOR_LLVM_LIST
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001725 ${SOURCE_DIR}/Reactor/CPUID.cpp
1726 ${SOURCE_DIR}/Reactor/CPUID.hpp
1727 ${SOURCE_DIR}/Reactor/Debug.cpp
1728 ${SOURCE_DIR}/Reactor/Debug.hpp
Antonio Maioranoe6ab4702019-11-29 11:26:30 -05001729 ${SOURCE_DIR}/Reactor/EmulatedReactor.cpp
Nicolas Capens1a3ce872018-10-10 10:42:36 -04001730 ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1731 ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
Ben Clayton23778452019-11-19 14:15:41 +00001732 ${SOURCE_DIR}/Reactor/LLVMReactor.cpp
1733 ${SOURCE_DIR}/Reactor/LLVMReactor.hpp
1734 ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.cpp
1735 ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.hpp
1736 ${SOURCE_DIR}/Reactor/Nucleus.hpp
1737 ${SOURCE_DIR}/Reactor/Print.hpp
1738 ${SOURCE_DIR}/Reactor/Reactor.cpp
1739 ${SOURCE_DIR}/Reactor/Reactor.hpp
1740 ${SOURCE_DIR}/Reactor/Routine.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001741)
1742
1743file(GLOB_RECURSE EGL_LIST
1744 ${OPENGL_DIR}/libEGL/*.cpp
1745 ${OPENGL_DIR}/libEGL/*.h
1746 ${OPENGL_DIR}/libEGL/*.hpp
1747 ${OPENGL_DIR}/common/Object.cpp
1748 ${OPENGL_DIR}/common/Object.hpp
1749 ${OPENGL_DIR}/common/debug.cpp
1750 ${OPENGL_DIR}/common/debug.h
Chris Forbesf8374cf2018-12-06 13:25:59 -08001751 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1752 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001753 ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001754)
1755
Corentin Wallez0866b292015-12-09 13:49:40 -05001756file(GLOB_RECURSE GLES2_LIST
1757 ${OPENGL_DIR}/libGLESv2/*.cpp
1758 ${OPENGL_DIR}/libGLESv2/*.h
1759 ${OPENGL_DIR}/libGLESv2/*.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001760 ${OPENGL_DIR}/common/*.cpp
1761 ${OPENGL_DIR}/common/*.h
1762 ${OPENGL_DIR}/common/*.hpp
Chris Forbesf8374cf2018-12-06 13:25:59 -08001763 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1764 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001765 ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
1766 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES2/*.h
1767 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES3/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001768)
1769
1770file(GLOB_RECURSE GLES_CM_LIST
1771 ${OPENGL_DIR}/libGLES_CM/*.cpp
1772 ${OPENGL_DIR}/libGLES_CM/*.h
1773 ${OPENGL_DIR}/libGLES_CM/*.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001774 ${OPENGL_DIR}/common/*.cpp
1775 ${OPENGL_DIR}/common/*.h
1776 ${OPENGL_DIR}/common/*.hpp
Chris Forbesf8374cf2018-12-06 13:25:59 -08001777 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1778 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001779 ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
1780 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001781)
1782
1783file(GLOB_RECURSE OPENGL_COMPILER_LIST
1784 ${OPENGL_COMPILER_DIR}/*.cpp
1785 ${OPENGL_COMPILER_DIR}/*.h
1786 ${OPENGL_COMPILER_DIR}/*.hpp
1787)
1788file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
1789 ${OPENGL_COMPILER_DIR}/ossource*.cpp
1790 ${OPENGL_COMPILER_DIR}/ossource*.h
1791 ${OPENGL_COMPILER_DIR}/ossource*.hpp
1792)
1793list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
1794
Ben Claytonafb4ebd2019-12-02 19:33:17 +00001795file(GLOB VULKAN_LIST
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001796 ${VULKAN_DIR}/*.cpp
1797 ${VULKAN_DIR}/*.h
Alexis Hetue70c3512018-10-17 13:18:04 -04001798 ${VULKAN_DIR}/*.hpp
Ben Clayton77c89ff2020-01-08 19:10:14 +00001799 ${SOURCE_DIR}/System/Build.cpp
Ben Claytoneea9d352019-08-29 01:05:14 +01001800 ${SOURCE_DIR}/System/Build.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001801 ${SOURCE_DIR}/System/CPUID.cpp
1802 ${SOURCE_DIR}/System/CPUID.hpp
1803 ${SOURCE_DIR}/System/Configurator.cpp
1804 ${SOURCE_DIR}/System/Configurator.hpp
Chris Forbesc730c382018-12-05 16:48:33 -08001805 ${SOURCE_DIR}/System/Debug.cpp
1806 ${SOURCE_DIR}/System/Debug.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001807 ${SOURCE_DIR}/System/Half.cpp
1808 ${SOURCE_DIR}/System/Half.hpp
1809 ${SOURCE_DIR}/System/Math.cpp
1810 ${SOURCE_DIR}/System/Math.hpp
1811 ${SOURCE_DIR}/System/Memory.cpp
1812 ${SOURCE_DIR}/System/Memory.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001813 ${SOURCE_DIR}/System/Socket.cpp
1814 ${SOURCE_DIR}/System/Socket.hpp
Ben Claytoned01f2c2019-05-20 10:42:35 +01001815 ${SOURCE_DIR}/System/Synchronization.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001816 ${SOURCE_DIR}/System/Timer.cpp
1817 ${SOURCE_DIR}/System/Timer.hpp
1818 ${SOURCE_DIR}/Device/*.cpp
1819 ${SOURCE_DIR}/Device/*.hpp
1820 ${SOURCE_DIR}/Pipeline/*.cpp
1821 ${SOURCE_DIR}/Pipeline/*.hpp
Hernan Liatisc6eb41b2019-02-22 11:12:59 -08001822 ${SOURCE_DIR}/WSI/VkSurfaceKHR.cpp
1823 ${SOURCE_DIR}/WSI/VkSurfaceKHR.hpp
Hernan Liatisc7943e92019-02-25 19:29:54 -08001824 ${SOURCE_DIR}/WSI/VkSwapchainKHR.cpp
1825 ${SOURCE_DIR}/WSI/VkSwapchainKHR.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001826 ${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/*.h}
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001827)
1828
Sean Risserf6d3cbb2020-01-08 14:44:53 -05001829if(SWIFTSHADER_ENABLE_VULKAN_DEBUGGER)
Ben Claytonafb4ebd2019-12-02 19:33:17 +00001830 file(GLOB_RECURSE VULKAN_DEBUG_LIST
1831 ${VULKAN_DIR}/Debug/*.cpp
1832 ${VULKAN_DIR}/Debug/*.h
1833 ${VULKAN_DIR}/Debug/*.hpp
1834 )
1835 list(APPEND VULKAN_LIST ${VULKAN_DEBUG_LIST})
1836 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_VK_DEBUGGER")
Ben Clayton1e8486b2020-01-22 17:01:52 +00001837endif()
Ben Claytonafb4ebd2019-12-02 19:33:17 +00001838
1839if(LINUX OR ANDROID)
David 'Digit' Turnerc9fa9fe2019-08-13 19:05:01 +02001840 list(APPEND VULKAN_LIST
1841 ${SOURCE_DIR}/System/Linux/MemFd.cpp
1842 ${SOURCE_DIR}/System/Linux/MemFd.hpp)
Ben Clayton1e8486b2020-01-22 17:01:52 +00001843endif()
David 'Digit' Turnerc9fa9fe2019-08-13 19:05:01 +02001844
Corentin Wallez0866b292015-12-09 13:49:40 -05001845###########################################################
1846# Append OS specific files to lists
1847###########################################################
1848
1849if(WIN32)
1850 list(APPEND SWIFTSHADER_LIST
1851 ${SOURCE_DIR}/Main/FrameBufferDD.cpp
1852 ${SOURCE_DIR}/Main/FrameBufferDD.hpp
1853 ${SOURCE_DIR}/Main/FrameBufferGDI.cpp
1854 ${SOURCE_DIR}/Main/FrameBufferGDI.hpp
1855 ${SOURCE_DIR}/Main/FrameBufferWin.cpp
1856 ${SOURCE_DIR}/Main/FrameBufferWin.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001857 )
1858 list(APPEND OPENGL_COMPILER_LIST ${OPENGL_COMPILER_DIR}/ossource_win.cpp)
1859 list(APPEND EGL_LIST ${OPENGL_DIR}/libEGL/libEGL.rc)
Corentin Wallez0866b292015-12-09 13:49:40 -05001860 list(APPEND GLES2_LIST ${OPENGL_DIR}/libGLESv2/libGLESv2.rc)
1861 list(APPEND GLES_CM_LIST ${OPENGL_DIR}/libGLES_CM/libGLES_CM.rc)
Nicolas Capensd3545372019-08-09 13:59:18 -04001862 list(APPEND VULKAN_LIST
1863 ${VULKAN_DIR}/Vulkan.rc
1864 ${SOURCE_DIR}/WSI/Win32SurfaceKHR.cpp
1865 ${SOURCE_DIR}/WSI/Win32SurfaceKHR.hpp
1866 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001867elseif(LINUX)
1868 list(APPEND SWIFTSHADER_LIST
1869 ${SOURCE_DIR}/Main/FrameBufferX11.cpp
1870 ${SOURCE_DIR}/Main/FrameBufferX11.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001871 ${SOURCE_DIR}/Common/SharedLibrary.hpp
1872 ${SOURCE_DIR}/Main/libX11.cpp
1873 ${SOURCE_DIR}/Main/libX11.hpp
1874 )
1875 list(APPEND EGL_LIST
1876 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001877 ${SOURCE_DIR}/Main/libX11.cpp
1878 ${SOURCE_DIR}/Main/libX11.hpp
1879 )
1880 list(APPEND OPENGL_COMPILER_LIST
1881 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1882 )
Hernan Liatisc6eb41b2019-02-22 11:12:59 -08001883
Ben Claytona9af8832019-08-14 13:09:43 +01001884 if(X11)
1885 list(APPEND VULKAN_LIST
1886 ${SOURCE_DIR}/WSI/XlibSurfaceKHR.cpp
1887 ${SOURCE_DIR}/WSI/XlibSurfaceKHR.hpp
1888 ${SOURCE_DIR}/WSI/libX11.cpp
1889 ${SOURCE_DIR}/WSI/libX11.hpp
1890 )
Ben Clayton1e8486b2020-01-22 17:01:52 +00001891 endif()
Ben Claytona9af8832019-08-14 13:09:43 +01001892
1893 if(XCB)
1894 list(APPEND VULKAN_LIST
1895 ${SOURCE_DIR}/WSI/XcbSurfaceKHR.cpp
1896 ${SOURCE_DIR}/WSI/XcbSurfaceKHR.hpp
1897 )
Ben Clayton1e8486b2020-01-22 17:01:52 +00001898 endif()
Ben Claytona9af8832019-08-14 13:09:43 +01001899
Corentin Wallez27654c22015-12-09 15:22:08 -05001900elseif(APPLE)
1901 list(APPEND SWIFTSHADER_LIST
1902 ${SOURCE_DIR}/Main/FrameBufferOSX.mm
1903 ${SOURCE_DIR}/Main/FrameBufferOSX.hpp
1904 )
Corentin Wallezcd0a4572015-12-10 15:59:28 -05001905 list(APPEND EGL_LIST
1906 ${OPENGL_DIR}/libEGL/OSXUtils.mm
1907 ${OPENGL_DIR}/libEGL/OSXUtils.hpp
1908 )
Corentin Wallez27654c22015-12-09 15:22:08 -05001909 list(APPEND OPENGL_COMPILER_LIST
1910 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1911 )
Alexis Hetu0662a4a2019-07-08 15:06:40 -04001912
1913 list(APPEND VULKAN_LIST
Jonah Ryan-Davis215bc792019-10-31 17:23:49 -04001914 ${SOURCE_DIR}/WSI/MetalSurface.mm
1915 ${SOURCE_DIR}/WSI/MetalSurface.h
Alexis Hetu0662a4a2019-07-08 15:06:40 -04001916 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001917elseif(ANDROID)
1918 list(APPEND SWIFTSHADER_LIST
1919 ${SOURCE_DIR}/Main/FrameBufferAndroid.cpp
1920 ${SOURCE_DIR}/Main/FrameBufferAndroid.hpp
1921 )
1922 list(APPEND OPENGL_COMPILER_LIST
1923 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1924 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001925endif()
1926
1927if(WIN32)
1928 set(OS_LIBS odbc32 odbccp32 WS2_32 dxguid)
1929elseif(LINUX)
Nicolas Capens681d97b2016-05-17 16:02:32 -04001930 set(OS_LIBS dl pthread)
Corentin Wallezcd0a4572015-12-10 15:59:28 -05001931elseif(APPLE)
1932 find_library(COCOA_FRAMEWORK Cocoa)
1933 find_library(QUARTZ_FRAMEWORK Quartz)
Alexis Hetud23cf632018-04-10 10:48:42 -04001934 find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
1935 find_library(IOSURFACE_FRAMEWORK IOSurface)
1936 set(OS_LIBS "${COCOA_FRAMEWORK}" "${QUARTZ_FRAMEWORK}" "${CORE_FOUNDATION_FRAMEWORK}" "${IOSURFACE_FRAMEWORK}")
Corentin Wallez0866b292015-12-09 13:49:40 -05001937endif()
1938
1939###########################################################
Nicolas Capens5a105bc2015-12-22 22:04:28 -05001940# SwiftShader Targets
Corentin Wallez0866b292015-12-09 13:49:40 -05001941###########################################################
1942
1943add_library(SwiftShader STATIC ${SWIFTSHADER_LIST})
1944set_target_properties(SwiftShader PROPERTIES
1945 INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
1946 POSITION_INDEPENDENT_CODE 1
1947 FOLDER "Core"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001948 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens506cc5e2017-07-24 11:30:55 -04001949 COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001950)
1951target_link_libraries(SwiftShader ${OS_LIBS})
1952
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001953if(${REACTOR_BACKEND} STREQUAL "LLVM")
1954 add_library(ReactorLLVM STATIC ${REACTOR_LLVM_LIST})
1955 set_target_properties(ReactorLLVM PROPERTIES
1956 INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
Ben Claytonac07ed82019-03-26 14:17:41 +00001957 POSITION_INDEPENDENT_CODE 1
1958 FOLDER "Core"
Ben Clayton09a7f452019-04-25 15:22:43 +01001959 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Ben Claytonac07ed82019-03-26 14:17:41 +00001960 )
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001961 target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
Ben Claytonac07ed82019-03-26 14:17:41 +00001962
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001963 if(REACTOR_EMIT_DEBUG_INFO)
Antonio Maioranof448d8e2019-04-26 16:19:16 -04001964 if(WIN32)
1965 # Boost stacktrace uses COM on Windows.
1966 # On Windows, cache COM instances in TLS for performance.
Antonio Maiorano8b321d12019-05-27 16:15:34 -04001967 target_compile_definitions(ReactorLLVM PRIVATE BOOST_STACKTRACE_USE_WINDBG_CACHED)
Antonio Maioranof448d8e2019-04-26 16:19:16 -04001968 else()
1969 # Boost stacktrace uses libbacktrace
Antonio Maiorano8b321d12019-05-27 16:15:34 -04001970 target_compile_definitions(ReactorLLVM PRIVATE BOOST_STACKTRACE_USE_BACKTRACE)
Antonio Maioranof448d8e2019-04-26 16:19:16 -04001971
1972 # Boost stacktrace uses exceptions, so force enable it
1973 set_cpp_flag("-fexceptions")
1974
1975 add_library(Libbacktrace STATIC ${LIBBACKTRACE_LIST})
1976 set_target_properties(Libbacktrace PROPERTIES
1977 INCLUDE_DIRECTORIES "${LIBBACKTRACE_INCLUDE_DIR}"
1978 POSITION_INDEPENDENT_CODE 1
1979 FOLDER "Core"
1980 )
1981 target_link_libraries(Libbacktrace ${OS_LIBS})
1982 target_link_libraries(ReactorLLVM Libbacktrace)
1983 endif()
Antonio Maiorano8b321d12019-05-27 16:15:34 -04001984
1985 # Download boost and use it
1986 DownloadBoost()
1987 set(BOOST_INCLUDEDIR ${BOOST_THIRD_PARTY_DIR})
1988 find_package(Boost REQUIRED)
1989 target_link_libraries(ReactorLLVM Boost::boost)
1990
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001991 endif(REACTOR_EMIT_DEBUG_INFO)
1992
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001993 set(Reactor ReactorLLVM)
1994elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
1995 set(Reactor ReactorSubzero)
1996else()
1997 message(FATAL_ERROR "REACTOR_BACKEND must be 'LLVM' or 'Subzero'")
1998endif()
Corentin Wallez0866b292015-12-09 13:49:40 -05001999
Corentin Wallez0866b292015-12-09 13:49:40 -05002000add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
2001set_target_properties(GLCompiler PROPERTIES
2002 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2003 POSITION_INDEPENDENT_CODE 1
2004 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002005 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Corentin Wallez0866b292015-12-09 13:49:40 -05002006)
2007target_link_libraries(GLCompiler ${OS_LIBS})
2008
Nicolas Capens6f422092015-12-23 15:12:45 -05002009if(CMAKE_SIZEOF_VOID_P EQUAL 8)
2010 set(LIB_PREFIX "lib64")
2011else()
2012 set(LIB_PREFIX "lib")
2013endif()
2014
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002015if(SWIFTSHADER_BUILD_EGL)
Corentin Wallez0866b292015-12-09 13:49:40 -05002016 add_library(libEGL SHARED ${EGL_LIST})
2017 set_target_properties(libEGL PROPERTIES
2018 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2019 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002020 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Antonio Maioranob0a68ed2019-04-26 15:34:22 -04002021 COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
Corentin Wallez0866b292015-12-09 13:49:40 -05002022 PREFIX ""
2023 )
Nicolas Capensd3545372019-08-09 13:59:18 -04002024 if(LINUX)
Ben Claytona9af8832019-08-14 13:09:43 +01002025 if(X11)
2026 set_property(TARGET libEGL APPEND PROPERTY COMPILE_DEFINITIONS "USE_X11=1")
Ben Clayton1e8486b2020-01-22 17:01:52 +00002027 endif()
Nicolas Capensd3545372019-08-09 13:59:18 -04002028 endif()
Stephen Whitee6ab01f2019-04-04 14:31:25 -04002029 if (ANDROID)
2030 set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
2031 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04002032 set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
Corentin Wallez0866b292015-12-09 13:49:40 -05002033 target_link_libraries(libEGL ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05002034 add_custom_command(
2035 TARGET libEGL
2036 POST_BUILD
2037 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
2038 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04002039 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2040 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Nicolas Capens6f422092015-12-23 15:12:45 -05002041 )
Corentin Wallez0866b292015-12-09 13:49:40 -05002042endif()
2043
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002044if(SWIFTSHADER_BUILD_GLESv2)
Corentin Wallez0866b292015-12-09 13:49:40 -05002045 add_library(libGLESv2 SHARED ${GLES2_LIST})
2046 set_target_properties(libGLESv2 PROPERTIES
2047 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2048 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002049 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens8e6ed2e2018-05-31 16:21:02 -04002050 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05002051 PREFIX ""
2052 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04002053 if (ANDROID)
2054 set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
2055 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04002056 set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
Nicolas Capensf53adbd2017-01-06 12:47:46 -05002057 target_link_libraries(libGLESv2 SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05002058 add_custom_command(
2059 TARGET libGLESv2
2060 POST_BUILD
2061 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
2062 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04002063 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
2064 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Nicolas Capens6f422092015-12-23 15:12:45 -05002065 )
Corentin Wallez0866b292015-12-09 13:49:40 -05002066endif()
2067
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002068if(SWIFTSHADER_BUILD_GLES_CM)
Corentin Wallez0866b292015-12-09 13:49:40 -05002069 add_library(libGLES_CM SHARED ${GLES_CM_LIST})
2070 set_target_properties(libGLES_CM PROPERTIES
2071 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
2072 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002073 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens8e6ed2e2018-05-31 16:21:02 -04002074 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05002075 PREFIX ""
2076 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04002077 if (ANDROID)
2078 set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
2079 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04002080 set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
Nicolas Capensf53adbd2017-01-06 12:47:46 -05002081 target_link_libraries(libGLES_CM SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05002082 add_custom_command(
2083 TARGET libGLES_CM
2084 POST_BUILD
2085 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
2086 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
2087 )
Ben Clayton1e8486b2020-01-22 17:01:52 +00002088endif(SWIFTSHADER_BUILD_GLES_CM)
Corentin Wallez0866b292015-12-09 13:49:40 -05002089
Ben Claytone693b622019-09-05 12:48:37 +01002090if(BUILD_MARL)
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002091 set(MARL_THIRD_PARTY_DIR ${THIRD_PARTY_DIR})
Ben Claytone693b622019-09-05 12:48:37 +01002092 add_subdirectory(third_party/marl)
Ben Clayton1e8486b2020-01-22 17:01:52 +00002093endif()
Ben Claytone693b622019-09-05 12:48:37 +01002094
Ben Clayton9cc163c2020-01-20 16:26:36 +00002095if(SWIFTSHADER_BUILD_CPPDAP)
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002096 set(CPPDAP_THIRD_PARTY_DIR ${THIRD_PARTY_DIR})
2097 add_subdirectory(${CPPDAP_DIR})
Ben Clayton1e8486b2020-01-22 17:01:52 +00002098endif()
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002099
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002100if(SWIFTSHADER_BUILD_VULKAN)
Ben Clayton815b4d82020-01-13 16:52:12 +00002101 add_library(vk_swiftshader SHARED ${VULKAN_LIST})
2102
Dan Sinclair6480d4e2019-03-11 10:48:19 -04002103 if (NOT TARGET SPIRV-Tools)
2104 # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002105 set(SPIRV-Headers_SOURCE_DIR "${THIRD_PARTY_DIR}/SPIRV-Headers")
Dan Sinclair6480d4e2019-03-11 10:48:19 -04002106 list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
Nicolas Capens4e9f5772019-01-31 15:17:13 -05002107
Dan Sinclair6480d4e2019-03-11 10:48:19 -04002108 add_subdirectory(third_party/SPIRV-Tools)
Ben Clayton1e8486b2020-01-22 17:01:52 +00002109 endif()
Nicolas Capens4c9f04b2019-01-31 22:09:03 -05002110
Ben Clayton9cc163c2020-01-20 16:26:36 +00002111 # Copy the OpenCLDebugInfo100.h header that's generated by SPIRV-Tools
2112 # out to a separate directory that can be added to the include path.
2113 # Ideally, this header would just be pre-built and part of SPIRV-Headers.
2114 # See: https://github.com/KhronosGroup/SPIRV-Headers/issues/137
2115 set(SPIRV_TOOLS_EXT_INC_DIR ${CMAKE_CURRENT_BINARY_DIR}/spirv-tools-ext/include)
2116 add_custom_target(spirv_tools_ext_includes
2117 DEPENDS spirv-tools-header-OpenCLDebugInfo100
2118 COMMAND ${CMAKE_COMMAND} -E copy
2119 ${spirv-tools_BINARY_DIR}/OpenCLDebugInfo100.h
2120 ${SPIRV_TOOLS_EXT_INC_DIR}/spirv-tools/ext/OpenCLDebugInfo100.h
2121 )
2122 list(APPEND VULKAN_INCLUDE_DIR "${SPIRV_TOOLS_EXT_INC_DIR}")
2123 add_dependencies(vk_swiftshader spirv_tools_ext_includes)
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002124
2125 set_target_properties(vk_swiftshader PROPERTIES
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002126 INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
2127 FOLDER "Vulkan"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002128 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Saman Samif4d2a442019-05-21 15:04:41 -04002129 COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002130 )
Nicolas Capensd3545372019-08-09 13:59:18 -04002131
2132 if(WIN32)
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002133 set_property(TARGET vk_swiftshader APPEND
Nicolas Capensd3545372019-08-09 13:59:18 -04002134 PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_WIN32_KHR")
2135 elseif(LINUX)
Ben Claytona9af8832019-08-14 13:09:43 +01002136 if(X11)
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002137 set_property(TARGET vk_swiftshader APPEND
Ben Claytona9af8832019-08-14 13:09:43 +01002138 PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XLIB_KHR")
Ben Clayton1e8486b2020-01-22 17:01:52 +00002139 endif()
Ben Claytona9af8832019-08-14 13:09:43 +01002140 if(XCB)
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002141 set_property(TARGET vk_swiftshader APPEND
Ben Claytona9af8832019-08-14 13:09:43 +01002142 PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XCB_KHR")
Ben Clayton1e8486b2020-01-22 17:01:52 +00002143 endif()
Nicolas Capensd3545372019-08-09 13:59:18 -04002144 elseif(APPLE)
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002145 set_property(TARGET vk_swiftshader APPEND
Nicolas Capensd3545372019-08-09 13:59:18 -04002146 PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_MACOS_MVK")
2147 endif()
2148
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002149 set_shared_library_export_map(vk_swiftshader ${SOURCE_DIR}/Vulkan)
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002150
2151 set(VK_SWIFTSHADER_LIBS ${Reactor} marl ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002152 if(SWIFTSHADER_ENABLE_VULKAN_DEBUGGER)
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002153 list(APPEND VK_SWIFTSHADER_LIBS cppdap)
Ben Clayton1e8486b2020-01-22 17:01:52 +00002154 endif()
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002155 target_link_libraries(vk_swiftshader ${VK_SWIFTSHADER_LIBS})
2156
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002157 add_custom_command(
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002158 TARGET vk_swiftshader
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002159 POST_BUILD
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002160 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:vk_swiftshader>/translator
2161 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> $<TARGET_FILE_DIR:vk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04002162 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002163 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002164 )
Paul Thomsona0b3a022019-06-24 17:16:55 +01002165
2166 # The vk_swiftshader_icd.json manifest file will point to ICD_LIBRARY_PATH.
2167 # Set ICD_LIBRARY_PATH to be a relative path similar to "./libvk_swiftshader.so", so both files can be moved.
2168 # A relative path is relative to the manifest file.
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002169 set(ICD_LIBRARY_PATH "${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
Paul Thomsona0b3a022019-06-24 17:16:55 +01002170 if(WIN32)
2171 # The path is output to a JSON file, which requires backslashes to be escaped.
Ben Claytone671a692019-07-29 13:03:42 +01002172 set(ICD_LIBRARY_PATH ".\\\\${ICD_LIBRARY_PATH}")
Paul Thomsona0b3a022019-06-24 17:16:55 +01002173 else()
2174 set(ICD_LIBRARY_PATH "./${ICD_LIBRARY_PATH}")
2175 endif()
Ben Claytond9ce2582019-02-06 11:54:15 +00002176 configure_file(
2177 "${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04002178 "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
Ben Clayton1e8486b2020-01-22 17:01:52 +00002179endif(SWIFTSHADER_BUILD_VULKAN)
Chris Forbes3d27f2e2018-09-26 09:24:39 -07002180
Corentin Wallez0866b292015-12-09 13:49:40 -05002181###########################################################
Nicolas Capensf53adbd2017-01-06 12:47:46 -05002182# Sample programs
Corentin Wallez0866b292015-12-09 13:49:40 -05002183###########################################################
2184
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002185if(SWIFTSHADER_BUILD_SAMPLES)
Nicolas Capensf53adbd2017-01-06 12:47:46 -05002186 if(WIN32)
2187 add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
2188 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08002189 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002190 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capensf53adbd2017-01-06 12:47:46 -05002191 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2192 FOLDER "Samples"
2193 )
2194 target_link_libraries(OGLES2HelloAPI libEGL libGLESv2)
2195 set_property(TARGET OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
2196 set(CMAKE_DEFAULT_STARTUP_PROJECT OGLES2HelloAPI)
2197 elseif(LINUX)
Chinmay Garde204ec082016-08-10 17:01:21 -07002198 add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
Nicolas Capensb94a2fc2016-10-26 16:57:35 -04002199 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08002200 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002201 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capensb94a2fc2016-10-26 16:57:35 -04002202 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2203 )
Ben Claytona9af8832019-08-14 13:09:43 +01002204 target_link_libraries(OGLES2HelloAPI dl ${X11} libEGL libGLESv2) # Explicitly link our "lib*" targets, not the platform provided "EGL" and "GLESv2"
Chinmay Garde204ec082016-08-10 17:01:21 -07002205 elseif(APPLE)
2206 add_executable(OGLES2HelloAPI MACOSX_BUNDLE
2207 ${HELLO2_DIR}/OGLES2HelloAPI_OSX.mm
2208 ${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib
2209 )
2210 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08002211 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002212 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};-Wno-deprecated-declarations" # 'NSTitledWindowMask', 'NSClosableWindowMask' is deprecated
Chinmay Garde204ec082016-08-10 17:01:21 -07002213 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
2214 MACOSX_BUNDLE_INFO_PLIST "${HELLO2_DIR}/Build/OSX/Info.plist"
2215 )
2216 target_link_libraries(OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS})
2217 set_source_files_properties(${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib PROPERTIES
2218 MACOSX_PACKAGE_LOCATION "Resources"
2219 )
2220 endif()
Ben Clayton1e8486b2020-01-22 17:01:52 +00002221endif(SWIFTSHADER_BUILD_SAMPLES)
Nicolas Capens16594842017-04-26 10:01:37 -04002222
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002223
2224if(SWIFTSHADER_BUILD_TESTS)
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04002225 set(REACTOR_UNIT_TESTS_LIST
2226 ${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002227 ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
Nicolas Capens16594842017-04-26 10:01:37 -04002228 )
2229
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04002230 set(REACTOR_UNIT_TESTS_INCLUDE_DIR
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002231 ${THIRD_PARTY_DIR}/googletest/googletest/include
2232 ${THIRD_PARTY_DIR}/googletest/googletest/
Nicolas Capens16594842017-04-26 10:01:37 -04002233 )
2234
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04002235 add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
2236 set_target_properties(ReactorUnitTests PROPERTIES
2237 INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002238 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens16594842017-04-26 10:01:37 -04002239 FOLDER "Tests"
2240 )
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04002241
2242 if(NOT WIN32 AND ${REACTOR_BACKEND} STREQUAL "Subzero")
2243 target_link_libraries(ReactorUnitTests ${Reactor} pthread dl)
Nicolas Capens16594842017-04-26 10:01:37 -04002244 else()
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04002245 target_link_libraries(ReactorUnitTests ${Reactor})
Nicolas Capens16594842017-04-26 10:01:37 -04002246 endif()
Nicolas Capens39760e12018-06-04 15:55:45 -04002247
Ben Claytoneba396c2019-04-07 12:42:43 +01002248 set(GLES_UNITTESTS_LIST
Erwin Jansend46faeb2018-11-19 16:01:37 -08002249 ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
2250 ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002251 ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
Nicolas Capens39760e12018-06-04 15:55:45 -04002252 )
2253
Ben Claytoneba396c2019-04-07 12:42:43 +01002254 set(GLES_UNITTESTS_INCLUDE_DIR
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002255 ${THIRD_PARTY_DIR}/googletest/googletest/include/
2256 ${THIRD_PARTY_DIR}/googletest/googlemock/include/
2257 ${THIRD_PARTY_DIR}/googletest/googletest/
Erwin Jansend46faeb2018-11-19 16:01:37 -08002258 ${CMAKE_CURRENT_SOURCE_DIR}/include/
Nicolas Capens39760e12018-06-04 15:55:45 -04002259 )
2260
Ben Claytoneba396c2019-04-07 12:42:43 +01002261 add_executable(gles-unittests ${GLES_UNITTESTS_LIST})
2262 set_target_properties(gles-unittests PROPERTIES
2263 INCLUDE_DIRECTORIES "${GLES_UNITTESTS_INCLUDE_DIR}"
Nicolas Capens39760e12018-06-04 15:55:45 -04002264 FOLDER "Tests"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002265 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens39760e12018-06-04 15:55:45 -04002266 COMPILE_DEFINITIONS "STANDALONE"
2267 )
2268
Ben Claytoneba396c2019-04-07 12:42:43 +01002269 target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS})
Stephen Whitee6ab01f2019-04-04 14:31:25 -04002270 if(ANDROID)
Ben Claytoneba396c2019-04-07 12:42:43 +01002271 target_link_libraries(gles-unittests -landroid)
Stephen Whitee6ab01f2019-04-04 14:31:25 -04002272 endif()
Ben Clayton30b6b592019-08-07 15:04:11 +01002273
Ben Claytond6c61362019-08-14 18:16:01 +01002274 # Math unit tests
Nicolas Capens5c09b6a2019-08-07 11:13:03 -04002275 set(MATH_UNITTESTS_LIST
2276 ${CMAKE_CURRENT_SOURCE_DIR}/tests/MathUnitTests/main.cpp
2277 ${CMAKE_CURRENT_SOURCE_DIR}/tests/MathUnitTests/unittests.cpp
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002278 ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
Nicolas Capens5c09b6a2019-08-07 11:13:03 -04002279 )
2280
2281 set(MATH_UNITTESTS_INCLUDE_DIR
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002282 ${THIRD_PARTY_DIR}/googletest/googletest/include/
2283 ${THIRD_PARTY_DIR}/googletest/googlemock/include/
2284 ${THIRD_PARTY_DIR}/googletest/googletest/
Nicolas Capens5c09b6a2019-08-07 11:13:03 -04002285 ${CMAKE_CURRENT_SOURCE_DIR}/src/
2286 )
2287
2288 add_executable(math-unittests ${MATH_UNITTESTS_LIST})
2289 set_target_properties(math-unittests PROPERTIES
2290 INCLUDE_DIRECTORIES "${MATH_UNITTESTS_INCLUDE_DIR}"
2291 FOLDER "Tests"
2292 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
2293 )
2294
2295 if(NOT WIN32)
2296 target_link_libraries(math-unittests pthread)
2297 endif()
Ben Clayton1e8486b2020-01-22 17:01:52 +00002298endif(SWIFTSHADER_BUILD_TESTS)
Nicolas Capens5c09b6a2019-08-07 11:13:03 -04002299
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002300if(SWIFTSHADER_BUILD_TESTS AND SWIFTSHADER_BUILD_VULKAN)
Ben Claytoneba396c2019-04-07 12:42:43 +01002301 set(VK_UNITTESTS_LIST
Ben Claytonabb57852019-03-01 14:33:35 +00002302 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Device.cpp
Ben Clayton654540e2019-02-01 13:08:23 +00002303 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
2304 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
2305 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002306 ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
Ben Clayton654540e2019-02-01 13:08:23 +00002307 )
2308
Ben Claytoneba396c2019-04-07 12:42:43 +01002309 set(VK_UNITTESTS_INCLUDE_DIR
Ben Claytonafb4ebd2019-12-02 19:33:17 +00002310 ${THIRD_PARTY_DIR}/googletest/googletest/include/
2311 ${THIRD_PARTY_DIR}/googletest/googlemock/include/
2312 ${THIRD_PARTY_DIR}/googletest/googletest/
2313 ${THIRD_PARTY_DIR}/SPIRV-Tools/include
Ben Clayton654540e2019-02-01 13:08:23 +00002314 ${CMAKE_CURRENT_SOURCE_DIR}/include/
2315 )
2316
Ben Claytoneba396c2019-04-07 12:42:43 +01002317 add_executable(vk-unittests ${VK_UNITTESTS_LIST})
Nicolas Capens2c99cf62019-08-28 15:36:19 -04002318 add_dependencies(vk-unittests vk_swiftshader)
2319
Ben Clayton654540e2019-02-01 13:08:23 +00002320 set_target_properties(vk-unittests PROPERTIES
Ben Claytoneba396c2019-04-07 12:42:43 +01002321 INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
Ben Clayton654540e2019-02-01 13:08:23 +00002322 FOLDER "Tests"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01002323 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Ben Clayton654540e2019-02-01 13:08:23 +00002324 COMPILE_DEFINITIONS "STANDALONE"
2325 )
2326
Ben Claytonabb57852019-03-01 14:33:35 +00002327 target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools)
Sean Risserf6d3cbb2020-01-08 14:44:53 -05002328endif(SWIFTSHADER_BUILD_TESTS AND SWIFTSHADER_BUILD_VULKAN)