blob: 9188ff2ee578246872fc95d75f4a322f1b231f33 [file] [log] [blame]
Nicolas Capens83a5b532016-05-12 16:43:33 -04001cmake_minimum_required(VERSION 2.8)
Corentin Wallez0866b292015-12-09 13:49:40 -05002
Corentin Wallezcd0a4572015-12-10 15:59:28 -05003project(SwiftShader C CXX)
Corentin Wallez0866b292015-12-09 13:49:40 -05004
Nicolas Capens4c9f04b2019-01-31 22:09:03 -05005# On Windows we use custom solution and project files, except for certain third-
6# party projects which use CMake-generated ones. They are manually (re)generated
7# and made path relative using build/cmake.sh, so they can be checked into the
8# repository. Therefore they should not be auto-regenerated and left using
9# absolute paths by CMake's ZERO_CHECK.
10if(WIN32)
11 # Disable automatically regenerating project files on CMakeLists.txt changes.
12 set(CMAKE_SUPPRESS_REGENERATION true)
13endif()
14
Corentin Wallez0866b292015-12-09 13:49:40 -050015###########################################################
16# Detect system
17###########################################################
18
Nicolas Capens6f422092015-12-23 15:12:45 -050019if(CMAKE_SYSTEM_NAME MATCHES "Linux")
Corentin Wallez0866b292015-12-09 13:49:40 -050020 set(LINUX ON)
Stephen Whitee6ab01f2019-04-04 14:31:25 -040021elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
22 set(ANDROID ON)
23 set(CMAKE_CXX_FLAGS "-DANDROID_NDK_BUILD")
Corentin Wallez0866b292015-12-09 13:49:40 -050024elseif(WIN32)
25elseif(APPLE)
26else()
27 message(FATAL_ERROR "Platform is not supported")
28endif()
29
Nicolas Capens30cd7d42017-04-25 15:17:25 -040030if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch")
31 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
32 set(ARCH "aarch64")
33 else()
34 set(ARCH "arm")
35 endif()
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +020036elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips*")
37 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
38 set(ARCH "mips64el")
39 else()
40 set(ARCH "mipsel")
41 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -050042else()
Nicolas Capens30cd7d42017-04-25 15:17:25 -040043 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
44 set(ARCH "x86_64")
45 else()
46 set(ARCH "x86")
47 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -050048endif()
49
Nicolas Capens007c6c52017-06-09 11:21:48 -040050set(CMAKE_MACOSX_RPATH ON)
51
Nicolas Capensd7a21cc2018-09-11 13:09:28 -040052if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (CMAKE_GENERATOR_TOOLSET STREQUAL ""))
53 message(WARNING "Visual Studio generators use the x86 host compiler by "
54 "default, even for 64-bit targets. This can result in linker "
55 "instability and out of memory errors. To use the 64-bit "
56 "host compiler, pass -Thost=x64 on the CMake command line.")
57endif()
58
Corentin Wallez0866b292015-12-09 13:49:40 -050059###########################################################
Nicolas Capens18b8d682017-07-25 15:31:45 -040060# Options
61###########################################################
62
63if(NOT CMAKE_BUILD_TYPE)
64 set(CMAKE_BUILD_TYPE "Release" CACHE STRING "The type of build: Debug Release MinSizeRel RelWithDebInfo." FORCE)
65endif()
66set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release MinSizeRel RelWithDebInfo)
67
68option(BUILD_EGL "Build the EGL library" 1)
Nicolas Capens18b8d682017-07-25 15:31:45 -040069option(BUILD_GLESv2 "Build the OpenGL ES 2 library" 1)
70option(BUILD_GLES_CM "Build the OpenGL ES 1.1 library" 1)
Chris Forbes3d27f2e2018-09-26 09:24:39 -070071option(BUILD_VULKAN "Build the Vulkan library" 1)
Nicolas Capens18b8d682017-07-25 15:31:45 -040072
73option(USE_GROUP_SOURCES "Group the source files in a folder tree for Visual Studio" 1)
74
75option(BUILD_SAMPLES "Build sample programs" 1)
76option(BUILD_TESTS "Build test programs" 1)
77
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -040078option (MSAN "Build with memory sanitizer" 0)
79option (ASAN "Build with address sanitizer" 0)
80option (TSAN "Build with thread sanitizer" 0)
81option (UBSAN "Build with undefined behavior sanitizer" 0)
Ben Clayton4e8044d2019-04-11 09:29:36 -040082option (WARNINGS_AS_ERRORS "Treat all warnings as errors" 1)
Ben Claytonf1172912019-02-26 16:52:12 +000083option (DCHECK_ALWAYS_ON "Check validation macros even in release builds" 0)
Ben Claytonac07ed82019-03-26 14:17:41 +000084option (REACTOR_EMIT_DEBUG_INFO "Emit debug info for JIT functions" 0)
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -040085
Nicolas Capens18b8d682017-07-25 15:31:45 -040086if(ARCH STREQUAL "arm")
87 set(DEFAULT_REACTOR_BACKEND "Subzero")
88else()
89 set(DEFAULT_REACTOR_BACKEND "LLVM")
90endif()
91
Nicolas Capens3957b7f2018-10-15 12:54:41 -040092set(REACTOR_BACKEND ${DEFAULT_REACTOR_BACKEND} CACHE STRING "JIT compiler back-end used by Reactor")
Nicolas Capens18b8d682017-07-25 15:31:45 -040093set_property(CACHE REACTOR_BACKEND PROPERTY STRINGS LLVM Subzero)
94
95# LLVM disallows calling cmake . from the main LLVM dir, the reason is that
96# it builds header files that could overwrite the orignal ones. Here we
97# want to include LLVM as a subdirectory and even though it wouldn't cause
98# the problem, if cmake . is called from the main dir, the condition that
Erwin Jansend46faeb2018-11-19 16:01:37 -080099# LLVM checkes, "CMAKE_CURRENT_SOURCE_DIR == CMAKE_CURRENT_BINARY_DIR" will be true. So we
Nicolas Capens18b8d682017-07-25 15:31:45 -0400100# disallow it ourselves too to. In addition if there are remining CMakeFiles
101# and CMakeCache in the directory, cmake .. from a subdirectory will still
102# try to build from the main directory so we instruct users to delete these
103# files when they get the error.
Erwin Jansend46faeb2018-11-19 16:01:37 -0800104if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
Nicolas Capens18b8d682017-07-25 15:31:45 -0400105 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.")
106endif()
107
108set_property(GLOBAL PROPERTY USE_FOLDERS ON)
109
110###########################################################
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400111# Initialize submodules
112###########################################################
113
Dan Sinclair6480d4e2019-03-11 10:48:19 -0400114if (NOT TARGET gtest)
115 if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
116 message(WARNING "
117 third_party/googletest submodule missing.
118 Running 'git submodule update --init' to download it:
119 ")
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400120
Dan Sinclair6480d4e2019-03-11 10:48:19 -0400121 execute_process(COMMAND git submodule update --init)
122 endif()
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400123endif()
124
Ben Clayton755467c2019-03-23 11:57:02 +0000125if (NOT TARGET libbacktrace)
126 if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src/.git)
127 message(WARNING "
128 third_party/libbacktrace/src submodule missing.
129 Running 'git submodule update --init' to download it:
130 ")
131
132 execute_process(COMMAND git submodule update --init)
133 endif()
134endif()
135
Nicolas Capensfe5861b2018-08-03 16:01:48 -0400136###########################################################
Corentin Wallez0866b292015-12-09 13:49:40 -0500137# Convenience macros
138###########################################################
139
140# Recursively calls source_group on the files of the directory
141# so that Visual Studio has the files in a folder tree
142macro(group_all_sources directory)
Erwin Jansend46faeb2018-11-19 16:01:37 -0800143 file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${directory} ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/*)
Corentin Wallez0866b292015-12-09 13:49:40 -0500144 foreach(file ${files})
Erwin Jansend46faeb2018-11-19 16:01:37 -0800145 if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
Corentin Wallez0866b292015-12-09 13:49:40 -0500146 group_all_sources(${directory}/${file})
147 else()
148 string(REPLACE "/" "\\" groupname ${directory})
Erwin Jansend46faeb2018-11-19 16:01:37 -0800149 source_group(${groupname} FILES ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
Corentin Wallez0866b292015-12-09 13:49:40 -0500150 endif()
151 endforeach()
152endmacro()
153
154# Takes target library and a directory where the export map is
155# and add the linker options so that only the API symbols are
156# exported.
Nicolas Capens499bb762018-06-29 13:30:57 -0400157macro(set_shared_library_export_map TARGET DIR)
Corentin Wallez0866b292015-12-09 13:49:40 -0500158 if(MSVC)
Nicolas Capens499bb762018-06-29 13:30:57 -0400159 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"")
Corentin Wallez27654c22015-12-09 15:22:08 -0500160 elseif(LINUX)
Corentin Wallez0866b292015-12-09 13:49:40 -0500161 # The version script only exports the API functions and
Nicolas Capens499bb762018-06-29 13:30:57 -0400162 # hides all the others.
163 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${DIR}/${TARGET}.lds")
164 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.lds;")
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400165
Nicolas Capens517a57f2018-06-29 13:30:57 -0400166 # Don't allow symbols to be overridden by another module.
167 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY COMPILE_FLAGS " -fvisibility=protected")
168
Gordana Cmiljanovic20622c02018-11-05 15:00:11 +0100169 if(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +0200170 # MIPS supports sysv hash-style only.
171 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=sysv")
172 else()
173 # Both hash-style are needed, because we want both gold and
174 # GNU ld to be able to read our libraries.
175 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=both")
176 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400177
178 # Gc sections is used in combination with each functions being
179 # in its own section, to reduce the binary size.
180 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--gc-sections")
181
182 # Don't allow undefined symbols, unless it's a Sanitizer build.
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400183 if(NOT MSAN AND NOT ASAN AND NOT TSAN AND NOT UBSAN)
184 set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
185 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500186 endif()
187endmacro()
188
189if(USE_GROUP_SOURCES)
190 group_all_sources(src)
191endif()
192
193###########################################################
194# Directories
195###########################################################
196
Erwin Jansend46faeb2018-11-19 16:01:37 -0800197set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
Corentin Wallez0866b292015-12-09 13:49:40 -0500198set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
199set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
Chris Forbes3d27f2e2018-09-26 09:24:39 -0700200set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
Ben Clayton5875be52019-04-11 14:57:40 -0400201set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/llvm)
202set(LLVM_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/configs)
Ben Claytonac07ed82019-03-26 14:17:41 +0000203set(LIBBACKTRACE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
204set(LIBBACKTRACE_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/config)
205set(LIBBACKTRACE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
Erwin Jansend46faeb2018-11-19 16:01:37 -0800206set(SUBZERO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/subzero)
207set(SUBZERO_LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-subzero)
208set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
209set(HELLO2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
Corentin Wallez0866b292015-12-09 13:49:40 -0500210
211###########################################################
212# Compile flags
213###########################################################
214
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100215# Flags for project code (non 3rd party)
216set(SWIFTSHADER_COMPILE_OPTIONS "")
217
Nicolas Capens6f422092015-12-23 15:12:45 -0500218macro(set_cpp_flag FLAG)
219 if(${ARGC} GREATER 1)
220 set(CMAKE_CXX_FLAGS_${ARGV1} "${CMAKE_CXX_FLAGS_${ARGV1}} ${FLAG}")
Corentin Wallez0866b292015-12-09 13:49:40 -0500221 else()
Nicolas Capens6f422092015-12-23 15:12:45 -0500222 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
Corentin Wallez0866b292015-12-09 13:49:40 -0500223 endif()
224endmacro()
225
226if(MSVC)
227 set_cpp_flag("/MP")
228 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400229 add_definitions(-D_SCL_SECURE_NO_WARNINGS)
Nicolas Capens4c9f04b2019-01-31 22:09:03 -0500230 add_definitions(-D_SBCS) # Single Byte Character Set (ASCII)
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400231
232 if(WARNINGS_AS_ERRORS)
233 set_cpp_flag("/WX") # Treat all warnings as errors
234 endif()
235
236 # Disable specific warnings
237 # TODO: Not all of these should be disabled, but for now, we want a warning-free msvc build. Remove these one by one
238 # and fix the actual warnings in code.
239 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
240 "/wd4005" # 'identifier' : macro redefinition
241 "/wd4018" # 'expression' : signed/unsigned mismatch
Ben Clayton4d4a1902019-05-15 11:15:42 +0100242 "/wd4065" # switch statement contains 'default' but no 'case' labels
Antonio Maiorano5bce1f42019-05-10 16:03:49 -0400243 "/wd4141" # 'modifier' : used more than once
244 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
245 "/wd4244" # 'conversion' conversion from 'type1' to 'type2', possible loss of data
246 "/wd4267" # 'var' : conversion from 'size_t' to 'type', possible loss of data
247 "/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
248 "/wd4309" # 'conversion' : truncation of constant value
249 "/wd4624" # 'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted
250 "/wd4800" # 'type' : forcing value to bool 'true' or 'false' (performance warning)
251 "/wd4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
252 "/wd5030" # attribute 'attribute' is not recognized
253 "/wd5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
254 )
255
256 # Treat specific warnings as errors
257 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
258 "/we4018" # 'expression' : signed/unsigned mismatch
259 "/we4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
260 "/we5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
261 )
262
Corentin Wallez0866b292015-12-09 13:49:40 -0500263else()
Chris Forbesef4ab0f2019-01-18 08:11:03 -0800264 set_cpp_flag("--std=c++11")
Ben Clayton09a7f452019-04-25 15:22:43 +0100265 set_cpp_flag("-fno-exceptions")
266
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100267 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100268 "-Wall"
269 "-Werror=reorder"
270 "-Werror=sign-compare"
271 "-Werror=missing-braces"
272 )
Corentin Wallez0866b292015-12-09 13:49:40 -0500273
Ben Clayton5e828762019-04-24 19:16:52 +0100274 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100275 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
276 "-Werror=unused-lambda-capture"
277 "-Werror=string-conversion"
Ben Clayton2a582382019-04-24 12:11:36 +0100278 "-Werror=extra-semi"
Ben Clayton30278952019-04-24 20:31:53 +0100279 "-Werror=ignored-qualifiers"
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100280 )
Nicolas Capens825d3442018-11-06 23:50:05 -0500281 endif()
282
Corentin Wallez0866b292015-12-09 13:49:40 -0500283 # Remove xor, and, or and friends from the list of keywords, they are used
284 # by Reactor
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100285 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
286 "-fno-operator-names"
287 )
Corentin Wallez0866b292015-12-09 13:49:40 -0500288
289 # LLVM headers requires these flags to be set
290 set_cpp_flag("-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
291
Nicolas Capens499bb762018-06-29 13:30:57 -0400292 if(ARCH STREQUAL "x86")
Corentin Wallez0866b292015-12-09 13:49:40 -0500293 set_cpp_flag("-m32")
294 set_cpp_flag("-msse2")
Nicolas Capens0424edc2018-01-03 14:06:30 -0500295 set_cpp_flag("-mfpmath=sse")
296 set_cpp_flag("-march=pentium4")
297 set_cpp_flag("-mtune=generic")
Corentin Wallez0866b292015-12-09 13:49:40 -0500298 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400299 if(ARCH STREQUAL "x86_64")
Corentin Wallez0866b292015-12-09 13:49:40 -0500300 set_cpp_flag("-m64")
301 set_cpp_flag("-fPIC")
Nicolas Capens0424edc2018-01-03 14:06:30 -0500302 set_cpp_flag("-march=x86-64")
303 set_cpp_flag("-mtune=generic")
Corentin Wallez0866b292015-12-09 13:49:40 -0500304 endif()
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +0200305 if(ARCH STREQUAL "mipsel")
306 set_cpp_flag("-march=mips32r2")
307 set_cpp_flag("-fPIC")
308 set_cpp_flag("-mhard-float")
309 set_cpp_flag("-mfp32")
310 endif()
Gordana Cmiljanovic20622c02018-11-05 15:00:11 +0100311 if(ARCH STREQUAL "mips64el")
312 set_cpp_flag("-march=mips64r2")
313 set_cpp_flag("-mabi=64")
314 set_cpp_flag("-fPIC")
315 endif()
Nicolas Capens499bb762018-06-29 13:30:57 -0400316
Alexis Hetu20eea3c2018-06-19 14:50:41 -0400317 if(LINUX)
318 set_cpp_flag("-DUSE_X11=1")
Hernan Liatis2bb08642019-02-08 14:08:21 -0800319 set_cpp_flag("-DVK_USE_PLATFORM_XLIB_KHR")
Alexis Hetu20eea3c2018-06-19 14:50:41 -0400320 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500321
322 # Use -g3 to have even more debug info
323 set_cpp_flag("-g -g3" DEBUG)
324 set_cpp_flag("-g -g3" RELWITHDEBINFO)
Ben Clayton09a91e42019-02-05 17:58:38 +0000325 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
326 # Treated as an unused argument with clang
327 set_cpp_flag("-s" RELEASE)
328 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500329
Ben Clayton7aafb272019-02-19 17:08:56 +0000330 if(WARNINGS_AS_ERRORS)
331 set_cpp_flag("-Werror") # Treat all warnings as errors
332 endif()
333
Ben Claytonf1172912019-02-26 16:52:12 +0000334 if(DCHECK_ALWAYS_ON)
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100335 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DDCHECK_ALWAYS_ON")
Ben Claytonf1172912019-02-26 16:52:12 +0000336 endif()
337
Ben Claytonac07ed82019-03-26 14:17:41 +0000338 if(REACTOR_EMIT_DEBUG_INFO)
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100339 list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_DEBUG_INFO")
Ben Claytonac07ed82019-03-26 14:17:41 +0000340 endif()
341
Ben Clayton0eee3322019-02-19 17:08:14 +0000342 # Disable pedanitc warnings
343 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100344 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
345 "-Wno-ignored-attributes" # ignoring attributes on template argument 'X'
346 "-Wno-attributes" # 'X' attribute ignored
347 "-Wno-strict-aliasing" # dereferencing type-punned pointer will break strict-aliasing rules
348 "-Wno-comment" # multi-line comment
349 )
Ben Clayton0eee3322019-02-19 17:08:14 +0000350 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
Ben Clayton4ceb77d2019-04-24 12:09:59 +0100351 list(APPEND SWIFTSHADER_COMPILE_OPTIONS
352 "-Wno-unneeded-internal-declaration" # function 'X' is not needed and will not be emitted
353 "-Wno-unused-private-field" # private field 'offset' is not used - TODO: Consider enabling this once Vulkan is further implemented.
354 "-Wno-comment" # multi-line comment
355 "-Wno-undefined-var-template" # instantiation of variable 'X' required here, but no definition is available
356 )
Ben Clayton0eee3322019-02-19 17:08:14 +0000357 endif()
358
Corentin Wallez0866b292015-12-09 13:49:40 -0500359 # For distribution it is more important to be slim than super optimized
Alexis Hetu2c0546d2017-05-24 11:16:26 -0400360 set_cpp_flag("-Os" RELEASE)
361 set_cpp_flag("-Os" RELWITHDEBINFO)
Corentin Wallez0866b292015-12-09 13:49:40 -0500362
363 set_cpp_flag("-DNDEBUG" RELEASE)
364 set_cpp_flag("-DNDEBUG" RELWITHDEBINFO)
365 set_cpp_flag("-DANGLE_DISABLE_TRACE" RELEASE)
366 set_cpp_flag("-DANGLE_DISABLE_TRACE" RELWITHDEBINFO)
367
368 # Put each variable and function in its own section so that when linking
369 # with -gc-sections unused functions and variables are removed.
370 set_cpp_flag("-ffunction-sections" RELEASE)
371 set_cpp_flag("-fdata-sections" RELEASE)
372 set_cpp_flag("-fomit-frame-pointer" RELEASE)
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400373
374 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
375 if(MSAN)
376 set_cpp_flag("-fsanitize=memory")
377 elseif(ASAN)
378 set_cpp_flag("-fsanitize=address")
379 elseif(TSAN)
380 set_cpp_flag("-fsanitize=thread")
381 elseif(UBSAN)
Ben Clayton5875be52019-04-11 14:57:40 -0400382 set_cpp_flag("-fsanitize=undefined")
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400383 endif()
384 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -0500385endif()
386
Nicolas Capensbf8fd5b2018-06-21 00:42:00 -0400387if(WIN32)
Corentin Wallez0866b292015-12-09 13:49:40 -0500388 add_definitions(-DWINVER=0x501 -DNOMINMAX -DSTRICT)
Nicolas Capens6f422092015-12-23 15:12:45 -0500389 set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "" "lib")
Corentin Wallez0866b292015-12-09 13:49:40 -0500390endif()
391
Corentin Wallez0866b292015-12-09 13:49:40 -0500392###########################################################
393# LLVM
394###########################################################
395
Logan Chien0eedc8c2018-08-21 09:34:28 +0800396set(LLVM_LIST
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400397 ${LLVM_DIR}/lib/Analysis/AliasAnalysis.cpp
398 ${LLVM_DIR}/lib/Analysis/AliasAnalysisSummary.cpp
399 ${LLVM_DIR}/lib/Analysis/AliasSetTracker.cpp
400 ${LLVM_DIR}/lib/Analysis/AssumptionCache.cpp
401 ${LLVM_DIR}/lib/Analysis/BasicAliasAnalysis.cpp
402 ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfo.cpp
403 ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfoImpl.cpp
404 ${LLVM_DIR}/lib/Analysis/BranchProbabilityInfo.cpp
405 ${LLVM_DIR}/lib/Analysis/CFG.cpp
406 ${LLVM_DIR}/lib/Analysis/CFLAndersAliasAnalysis.cpp
407 ${LLVM_DIR}/lib/Analysis/CFLSteensAliasAnalysis.cpp
408 ${LLVM_DIR}/lib/Analysis/CallGraph.cpp
409 ${LLVM_DIR}/lib/Analysis/CallGraphSCCPass.cpp
410 ${LLVM_DIR}/lib/Analysis/CaptureTracking.cpp
411 ${LLVM_DIR}/lib/Analysis/CmpInstAnalysis.cpp
412 ${LLVM_DIR}/lib/Analysis/CodeMetrics.cpp
413 ${LLVM_DIR}/lib/Analysis/ConstantFolding.cpp
414 ${LLVM_DIR}/lib/Analysis/DemandedBits.cpp
415 ${LLVM_DIR}/lib/Analysis/DependenceAnalysis.cpp
416 ${LLVM_DIR}/lib/Analysis/DivergenceAnalysis.cpp
417 ${LLVM_DIR}/lib/Analysis/DominanceFrontier.cpp
418 ${LLVM_DIR}/lib/Analysis/EHPersonalities.cpp
419 ${LLVM_DIR}/lib/Analysis/GlobalsModRef.cpp
420 ${LLVM_DIR}/lib/Analysis/IVUsers.cpp
421 ${LLVM_DIR}/lib/Analysis/InlineCost.cpp
422 ${LLVM_DIR}/lib/Analysis/InstructionSimplify.cpp
423 ${LLVM_DIR}/lib/Analysis/IteratedDominanceFrontier.cpp
424 ${LLVM_DIR}/lib/Analysis/LazyBlockFrequencyInfo.cpp
425 ${LLVM_DIR}/lib/Analysis/LazyBranchProbabilityInfo.cpp
426 ${LLVM_DIR}/lib/Analysis/LazyValueInfo.cpp
427 ${LLVM_DIR}/lib/Analysis/Loads.cpp
428 ${LLVM_DIR}/lib/Analysis/LoopAnalysisManager.cpp
429 ${LLVM_DIR}/lib/Analysis/LoopInfo.cpp
430 ${LLVM_DIR}/lib/Analysis/LoopPass.cpp
431 ${LLVM_DIR}/lib/Analysis/MemoryBuiltins.cpp
432 ${LLVM_DIR}/lib/Analysis/MemoryDependenceAnalysis.cpp
433 ${LLVM_DIR}/lib/Analysis/MemoryLocation.cpp
434 ${LLVM_DIR}/lib/Analysis/MemorySSA.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100435 ${LLVM_DIR}/lib/Analysis/MemorySSAUpdater.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400436 ${LLVM_DIR}/lib/Analysis/MustExecute.cpp
437 ${LLVM_DIR}/lib/Analysis/ObjCARCAliasAnalysis.cpp
438 ${LLVM_DIR}/lib/Analysis/ObjCARCAnalysisUtils.cpp
439 ${LLVM_DIR}/lib/Analysis/ObjCARCInstKind.cpp
440 ${LLVM_DIR}/lib/Analysis/OptimizationRemarkEmitter.cpp
441 ${LLVM_DIR}/lib/Analysis/OrderedBasicBlock.cpp
442 ${LLVM_DIR}/lib/Analysis/PHITransAddr.cpp
443 ${LLVM_DIR}/lib/Analysis/PhiValues.cpp
444 ${LLVM_DIR}/lib/Analysis/PostDominators.cpp
445 ${LLVM_DIR}/lib/Analysis/ProfileSummaryInfo.cpp
446 ${LLVM_DIR}/lib/Analysis/PtrUseVisitor.cpp
447 ${LLVM_DIR}/lib/Analysis/ScalarEvolution.cpp
448 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
449 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionExpander.cpp
450 ${LLVM_DIR}/lib/Analysis/ScalarEvolutionNormalization.cpp
451 ${LLVM_DIR}/lib/Analysis/ScopedNoAliasAA.cpp
452 ${LLVM_DIR}/lib/Analysis/TargetLibraryInfo.cpp
453 ${LLVM_DIR}/lib/Analysis/TargetTransformInfo.cpp
454 ${LLVM_DIR}/lib/Analysis/TypeBasedAliasAnalysis.cpp
455 ${LLVM_DIR}/lib/Analysis/ValueLattice.cpp
456 ${LLVM_DIR}/lib/Analysis/ValueLatticeUtils.cpp
457 ${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
458 ${LLVM_DIR}/lib/Analysis/VectorUtils.cpp
459 ${LLVM_DIR}/lib/AsmParser/LLLexer.cpp
460 ${LLVM_DIR}/lib/AsmParser/LLParser.cpp
461 ${LLVM_DIR}/lib/AsmParser/Parser.cpp
462 ${LLVM_DIR}/lib/BinaryFormat/Dwarf.cpp
463 ${LLVM_DIR}/lib/BinaryFormat/Magic.cpp
464 ${LLVM_DIR}/lib/BinaryFormat/Wasm.cpp
465 ${LLVM_DIR}/lib/Bitcode/Reader/BitcodeReader.cpp
466 ${LLVM_DIR}/lib/Bitcode/Reader/BitstreamReader.cpp
467 ${LLVM_DIR}/lib/Bitcode/Reader/MetadataLoader.cpp
468 ${LLVM_DIR}/lib/Bitcode/Reader/ValueList.cpp
469 ${LLVM_DIR}/lib/CodeGen/AggressiveAntiDepBreaker.cpp
470 ${LLVM_DIR}/lib/CodeGen/AllocationOrder.cpp
471 ${LLVM_DIR}/lib/CodeGen/Analysis.cpp
472 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/ARMException.cpp
473 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AccelTable.cpp
474 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AddressPool.cpp
475 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
476 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
477 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
478 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
479 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIE.cpp
480 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIEHash.cpp
481 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp
482 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
483 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugLocStream.cpp
484 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
485 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
486 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
487 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
488 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfFile.cpp
489 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
490 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
491 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/EHStreamer.cpp
492 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinCFGuard.cpp
493 ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinException.cpp
494 ${LLVM_DIR}/lib/CodeGen/AtomicExpandPass.cpp
495 ${LLVM_DIR}/lib/CodeGen/BasicTargetTransformInfo.cpp
496 ${LLVM_DIR}/lib/CodeGen/BranchFolding.cpp
497 ${LLVM_DIR}/lib/CodeGen/BranchRelaxation.cpp
498 ${LLVM_DIR}/lib/CodeGen/BreakFalseDeps.cpp
499 ${LLVM_DIR}/lib/CodeGen/CFIInstrInserter.cpp
500 ${LLVM_DIR}/lib/CodeGen/CalcSpillWeights.cpp
501 ${LLVM_DIR}/lib/CodeGen/CallingConvLower.cpp
502 ${LLVM_DIR}/lib/CodeGen/CodeGen.cpp
503 ${LLVM_DIR}/lib/CodeGen/CodeGenPrepare.cpp
504 ${LLVM_DIR}/lib/CodeGen/CriticalAntiDepBreaker.cpp
505 ${LLVM_DIR}/lib/CodeGen/DFAPacketizer.cpp
506 ${LLVM_DIR}/lib/CodeGen/DeadMachineInstructionElim.cpp
507 ${LLVM_DIR}/lib/CodeGen/DetectDeadLanes.cpp
508 ${LLVM_DIR}/lib/CodeGen/DwarfEHPrepare.cpp
509 ${LLVM_DIR}/lib/CodeGen/EarlyIfConversion.cpp
510 ${LLVM_DIR}/lib/CodeGen/EdgeBundles.cpp
511 ${LLVM_DIR}/lib/CodeGen/ExecutionDomainFix.cpp
512 ${LLVM_DIR}/lib/CodeGen/ExpandISelPseudos.cpp
513 ${LLVM_DIR}/lib/CodeGen/ExpandMemCmp.cpp
514 ${LLVM_DIR}/lib/CodeGen/ExpandPostRAPseudos.cpp
515 ${LLVM_DIR}/lib/CodeGen/ExpandReductions.cpp
516 ${LLVM_DIR}/lib/CodeGen/FEntryInserter.cpp
517 ${LLVM_DIR}/lib/CodeGen/FaultMaps.cpp
518 ${LLVM_DIR}/lib/CodeGen/FuncletLayout.cpp
519 ${LLVM_DIR}/lib/CodeGen/GCMetadata.cpp
520 ${LLVM_DIR}/lib/CodeGen/GCMetadataPrinter.cpp
521 ${LLVM_DIR}/lib/CodeGen/GCRootLowering.cpp
522 ${LLVM_DIR}/lib/CodeGen/GCStrategy.cpp
523 ${LLVM_DIR}/lib/CodeGen/GlobalISel/CallLowering.cpp
524 ${LLVM_DIR}/lib/CodeGen/GlobalISel/GlobalISel.cpp
525 ${LLVM_DIR}/lib/CodeGen/GlobalISel/IRTranslator.cpp
526 ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelect.cpp
527 ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelector.cpp
528 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalityPredicates.cpp
529 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
530 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Legalizer.cpp
531 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
532 ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
533 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Localizer.cpp
534 ${LLVM_DIR}/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
535 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegBankSelect.cpp
536 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBank.cpp
537 ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
538 ${LLVM_DIR}/lib/CodeGen/GlobalISel/Utils.cpp
539 ${LLVM_DIR}/lib/CodeGen/IfConversion.cpp
540 ${LLVM_DIR}/lib/CodeGen/ImplicitNullChecks.cpp
541 ${LLVM_DIR}/lib/CodeGen/IndirectBrExpandPass.cpp
542 ${LLVM_DIR}/lib/CodeGen/InlineSpiller.cpp
543 ${LLVM_DIR}/lib/CodeGen/InterferenceCache.cpp
544 ${LLVM_DIR}/lib/CodeGen/InterleavedAccessPass.cpp
545 ${LLVM_DIR}/lib/CodeGen/IntrinsicLowering.cpp
546 ${LLVM_DIR}/lib/CodeGen/LLVMTargetMachine.cpp
547 ${LLVM_DIR}/lib/CodeGen/LatencyPriorityQueue.cpp
548 ${LLVM_DIR}/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp
549 ${LLVM_DIR}/lib/CodeGen/LexicalScopes.cpp
550 ${LLVM_DIR}/lib/CodeGen/LiveDebugValues.cpp
551 ${LLVM_DIR}/lib/CodeGen/LiveDebugVariables.cpp
552 ${LLVM_DIR}/lib/CodeGen/LiveInterval.cpp
553 ${LLVM_DIR}/lib/CodeGen/LiveIntervalUnion.cpp
554 ${LLVM_DIR}/lib/CodeGen/LiveIntervals.cpp
555 ${LLVM_DIR}/lib/CodeGen/LivePhysRegs.cpp
556 ${LLVM_DIR}/lib/CodeGen/LiveRangeCalc.cpp
557 ${LLVM_DIR}/lib/CodeGen/LiveRangeEdit.cpp
558 ${LLVM_DIR}/lib/CodeGen/LiveRangeShrink.cpp
559 ${LLVM_DIR}/lib/CodeGen/LiveRegMatrix.cpp
560 ${LLVM_DIR}/lib/CodeGen/LiveRegUnits.cpp
561 ${LLVM_DIR}/lib/CodeGen/LiveStacks.cpp
562 ${LLVM_DIR}/lib/CodeGen/LiveVariables.cpp
563 ${LLVM_DIR}/lib/CodeGen/LocalStackSlotAllocation.cpp
564 ${LLVM_DIR}/lib/CodeGen/LoopTraversal.cpp
565 ${LLVM_DIR}/lib/CodeGen/LowLevelType.cpp
566 ${LLVM_DIR}/lib/CodeGen/LowerEmuTLS.cpp
567 ${LLVM_DIR}/lib/CodeGen/MIRCanonicalizerPass.cpp
568 ${LLVM_DIR}/lib/CodeGen/MIRPrinter.cpp
569 ${LLVM_DIR}/lib/CodeGen/MIRPrintingPass.cpp
570 ${LLVM_DIR}/lib/CodeGen/MachineBasicBlock.cpp
571 ${LLVM_DIR}/lib/CodeGen/MachineBlockFrequencyInfo.cpp
572 ${LLVM_DIR}/lib/CodeGen/MachineBlockPlacement.cpp
573 ${LLVM_DIR}/lib/CodeGen/MachineBranchProbabilityInfo.cpp
574 ${LLVM_DIR}/lib/CodeGen/MachineCSE.cpp
575 ${LLVM_DIR}/lib/CodeGen/MachineCombiner.cpp
576 ${LLVM_DIR}/lib/CodeGen/MachineCopyPropagation.cpp
577 ${LLVM_DIR}/lib/CodeGen/MachineDominanceFrontier.cpp
578 ${LLVM_DIR}/lib/CodeGen/MachineDominators.cpp
579 ${LLVM_DIR}/lib/CodeGen/MachineFrameInfo.cpp
580 ${LLVM_DIR}/lib/CodeGen/MachineFunction.cpp
581 ${LLVM_DIR}/lib/CodeGen/MachineFunctionPass.cpp
582 ${LLVM_DIR}/lib/CodeGen/MachineFunctionPrinterPass.cpp
583 ${LLVM_DIR}/lib/CodeGen/MachineInstr.cpp
584 ${LLVM_DIR}/lib/CodeGen/MachineInstrBundle.cpp
585 ${LLVM_DIR}/lib/CodeGen/MachineLICM.cpp
586 ${LLVM_DIR}/lib/CodeGen/MachineLoopInfo.cpp
587 ${LLVM_DIR}/lib/CodeGen/MachineModuleInfo.cpp
588 ${LLVM_DIR}/lib/CodeGen/MachineModuleInfoImpls.cpp
589 ${LLVM_DIR}/lib/CodeGen/MachineOperand.cpp
590 ${LLVM_DIR}/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
591 ${LLVM_DIR}/lib/CodeGen/MachineOutliner.cpp
592 ${LLVM_DIR}/lib/CodeGen/MachinePassRegistry.cpp
593 ${LLVM_DIR}/lib/CodeGen/MachinePipeliner.cpp
594 ${LLVM_DIR}/lib/CodeGen/MachinePostDominators.cpp
595 ${LLVM_DIR}/lib/CodeGen/MachineRegionInfo.cpp
596 ${LLVM_DIR}/lib/CodeGen/MachineRegisterInfo.cpp
597 ${LLVM_DIR}/lib/CodeGen/MachineSSAUpdater.cpp
598 ${LLVM_DIR}/lib/CodeGen/MachineScheduler.cpp
599 ${LLVM_DIR}/lib/CodeGen/MachineSink.cpp
600 ${LLVM_DIR}/lib/CodeGen/MachineTraceMetrics.cpp
601 ${LLVM_DIR}/lib/CodeGen/MachineVerifier.cpp
602 ${LLVM_DIR}/lib/CodeGen/MacroFusion.cpp
603 ${LLVM_DIR}/lib/CodeGen/OptimizePHIs.cpp
604 ${LLVM_DIR}/lib/CodeGen/PHIElimination.cpp
605 ${LLVM_DIR}/lib/CodeGen/PHIEliminationUtils.cpp
606 ${LLVM_DIR}/lib/CodeGen/PatchableFunction.cpp
607 ${LLVM_DIR}/lib/CodeGen/PeepholeOptimizer.cpp
608 ${LLVM_DIR}/lib/CodeGen/PostRAHazardRecognizer.cpp
609 ${LLVM_DIR}/lib/CodeGen/PostRASchedulerList.cpp
610 ${LLVM_DIR}/lib/CodeGen/PreISelIntrinsicLowering.cpp
611 ${LLVM_DIR}/lib/CodeGen/ProcessImplicitDefs.cpp
612 ${LLVM_DIR}/lib/CodeGen/PrologEpilogInserter.cpp
613 ${LLVM_DIR}/lib/CodeGen/PseudoSourceValue.cpp
614 ${LLVM_DIR}/lib/CodeGen/ReachingDefAnalysis.cpp
615 ${LLVM_DIR}/lib/CodeGen/RegAllocBase.cpp
616 ${LLVM_DIR}/lib/CodeGen/RegAllocBasic.cpp
617 ${LLVM_DIR}/lib/CodeGen/RegAllocFast.cpp
618 ${LLVM_DIR}/lib/CodeGen/RegAllocGreedy.cpp
619 ${LLVM_DIR}/lib/CodeGen/RegUsageInfoCollector.cpp
620 ${LLVM_DIR}/lib/CodeGen/RegUsageInfoPropagate.cpp
621 ${LLVM_DIR}/lib/CodeGen/RegisterClassInfo.cpp
622 ${LLVM_DIR}/lib/CodeGen/RegisterCoalescer.cpp
623 ${LLVM_DIR}/lib/CodeGen/RegisterPressure.cpp
624 ${LLVM_DIR}/lib/CodeGen/RegisterScavenging.cpp
625 ${LLVM_DIR}/lib/CodeGen/RegisterUsageInfo.cpp
626 ${LLVM_DIR}/lib/CodeGen/RenameIndependentSubregs.cpp
627 ${LLVM_DIR}/lib/CodeGen/ResetMachineFunctionPass.cpp
628 ${LLVM_DIR}/lib/CodeGen/SafeStack.cpp
629 ${LLVM_DIR}/lib/CodeGen/SafeStackColoring.cpp
630 ${LLVM_DIR}/lib/CodeGen/SafeStackLayout.cpp
631 ${LLVM_DIR}/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
632 ${LLVM_DIR}/lib/CodeGen/ScheduleDAG.cpp
633 ${LLVM_DIR}/lib/CodeGen/ScheduleDAGInstrs.cpp
634 ${LLVM_DIR}/lib/CodeGen/ScheduleDAGPrinter.cpp
635 ${LLVM_DIR}/lib/CodeGen/ScoreboardHazardRecognizer.cpp
636 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
637 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FastISel.cpp
638 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
639 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
640 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
641 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
642 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
643 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
644 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
645 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
646 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
647 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp
648 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
649 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
650 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
651 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
652 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
653 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
654 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
655 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
656 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
657 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGTargetInfo.cpp
658 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
659 ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetLowering.cpp
660 ${LLVM_DIR}/lib/CodeGen/ShadowStackGCLowering.cpp
661 ${LLVM_DIR}/lib/CodeGen/ShrinkWrap.cpp
662 ${LLVM_DIR}/lib/CodeGen/SjLjEHPrepare.cpp
663 ${LLVM_DIR}/lib/CodeGen/SlotIndexes.cpp
664 ${LLVM_DIR}/lib/CodeGen/SpillPlacement.cpp
665 ${LLVM_DIR}/lib/CodeGen/SplitKit.cpp
666 ${LLVM_DIR}/lib/CodeGen/StackColoring.cpp
667 ${LLVM_DIR}/lib/CodeGen/StackMapLivenessAnalysis.cpp
668 ${LLVM_DIR}/lib/CodeGen/StackMaps.cpp
669 ${LLVM_DIR}/lib/CodeGen/StackProtector.cpp
670 ${LLVM_DIR}/lib/CodeGen/StackSlotColoring.cpp
671 ${LLVM_DIR}/lib/CodeGen/TailDuplication.cpp
672 ${LLVM_DIR}/lib/CodeGen/TailDuplicator.cpp
673 ${LLVM_DIR}/lib/CodeGen/TargetFrameLoweringImpl.cpp
674 ${LLVM_DIR}/lib/CodeGen/TargetInstrInfo.cpp
675 ${LLVM_DIR}/lib/CodeGen/TargetLoweringBase.cpp
676 ${LLVM_DIR}/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
677 ${LLVM_DIR}/lib/CodeGen/TargetOptionsImpl.cpp
678 ${LLVM_DIR}/lib/CodeGen/TargetPassConfig.cpp
679 ${LLVM_DIR}/lib/CodeGen/TargetRegisterInfo.cpp
680 ${LLVM_DIR}/lib/CodeGen/TargetSchedule.cpp
681 ${LLVM_DIR}/lib/CodeGen/TargetSubtargetInfo.cpp
682 ${LLVM_DIR}/lib/CodeGen/TwoAddressInstructionPass.cpp
683 ${LLVM_DIR}/lib/CodeGen/UnreachableBlockElim.cpp
684 ${LLVM_DIR}/lib/CodeGen/ValueTypes.cpp
685 ${LLVM_DIR}/lib/CodeGen/VirtRegMap.cpp
686 ${LLVM_DIR}/lib/CodeGen/WasmEHPrepare.cpp
687 ${LLVM_DIR}/lib/CodeGen/WinEHPrepare.cpp
688 ${LLVM_DIR}/lib/CodeGen/XRayInstrumentation.cpp
689 ${LLVM_DIR}/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
690 ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewError.cpp
691 ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
692 ${LLVM_DIR}/lib/DebugInfo/CodeView/ContinuationRecordBuilder.cpp
693 ${LLVM_DIR}/lib/DebugInfo/CodeView/Formatters.cpp
694 ${LLVM_DIR}/lib/DebugInfo/CodeView/GlobalTypeTableBuilder.cpp
695 ${LLVM_DIR}/lib/DebugInfo/CodeView/Line.cpp
696 ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordName.cpp
697 ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordSerialization.cpp
698 ${LLVM_DIR}/lib/DebugInfo/CodeView/SimpleTypeSerializer.cpp
699 ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
700 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
701 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeHashing.cpp
702 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndex.cpp
703 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
704 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeRecordMapping.cpp
705 ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeTableCollection.cpp
706 ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngine.cpp
707 ${LLVM_DIR}/lib/ExecutionEngine/GDBRegistrationListener.cpp
708 ${LLVM_DIR}/lib/ExecutionEngine/Orc/Core.cpp
709 ${LLVM_DIR}/lib/ExecutionEngine/Orc/Legacy.cpp
710 ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcError.cpp
711 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp
712 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
713 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
714 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp
715 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
716 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
717 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
718 ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldELFMips.cpp
719 ${LLVM_DIR}/lib/ExecutionEngine/SectionMemoryManager.cpp
720 ${LLVM_DIR}/lib/ExecutionEngine/TargetSelect.cpp
721 ${LLVM_DIR}/lib/IR/AsmWriter.cpp
722 ${LLVM_DIR}/lib/IR/Attributes.cpp
723 ${LLVM_DIR}/lib/IR/AutoUpgrade.cpp
724 ${LLVM_DIR}/lib/IR/BasicBlock.cpp
725 ${LLVM_DIR}/lib/IR/Comdat.cpp
726 ${LLVM_DIR}/lib/IR/ConstantFold.cpp
727 ${LLVM_DIR}/lib/IR/ConstantRange.cpp
728 ${LLVM_DIR}/lib/IR/Constants.cpp
729 ${LLVM_DIR}/lib/IR/DIBuilder.cpp
730 ${LLVM_DIR}/lib/IR/DataLayout.cpp
731 ${LLVM_DIR}/lib/IR/DebugInfo.cpp
732 ${LLVM_DIR}/lib/IR/DebugInfoMetadata.cpp
733 ${LLVM_DIR}/lib/IR/DebugLoc.cpp
734 ${LLVM_DIR}/lib/IR/DiagnosticHandler.cpp
735 ${LLVM_DIR}/lib/IR/DiagnosticInfo.cpp
736 ${LLVM_DIR}/lib/IR/DiagnosticPrinter.cpp
737 ${LLVM_DIR}/lib/IR/Dominators.cpp
738 ${LLVM_DIR}/lib/IR/Function.cpp
739 ${LLVM_DIR}/lib/IR/GVMaterializer.cpp
740 ${LLVM_DIR}/lib/IR/Globals.cpp
741 ${LLVM_DIR}/lib/IR/IRBuilder.cpp
742 ${LLVM_DIR}/lib/IR/IRPrintingPasses.cpp
743 ${LLVM_DIR}/lib/IR/InlineAsm.cpp
744 ${LLVM_DIR}/lib/IR/Instruction.cpp
745 ${LLVM_DIR}/lib/IR/Instructions.cpp
746 ${LLVM_DIR}/lib/IR/IntrinsicInst.cpp
747 ${LLVM_DIR}/lib/IR/LLVMContext.cpp
748 ${LLVM_DIR}/lib/IR/LLVMContextImpl.cpp
749 ${LLVM_DIR}/lib/IR/LegacyPassManager.cpp
750 ${LLVM_DIR}/lib/IR/MDBuilder.cpp
751 ${LLVM_DIR}/lib/IR/Mangler.cpp
752 ${LLVM_DIR}/lib/IR/Metadata.cpp
753 ${LLVM_DIR}/lib/IR/Module.cpp
754 ${LLVM_DIR}/lib/IR/Operator.cpp
755 ${LLVM_DIR}/lib/IR/OptBisect.cpp
756 ${LLVM_DIR}/lib/IR/Pass.cpp
757 ${LLVM_DIR}/lib/IR/PassManager.cpp
758 ${LLVM_DIR}/lib/IR/PassRegistry.cpp
759 ${LLVM_DIR}/lib/IR/ProfileSummary.cpp
760 ${LLVM_DIR}/lib/IR/Statepoint.cpp
761 ${LLVM_DIR}/lib/IR/Type.cpp
762 ${LLVM_DIR}/lib/IR/TypeFinder.cpp
763 ${LLVM_DIR}/lib/IR/Use.cpp
764 ${LLVM_DIR}/lib/IR/User.cpp
765 ${LLVM_DIR}/lib/IR/Value.cpp
766 ${LLVM_DIR}/lib/IR/ValueSymbolTable.cpp
767 ${LLVM_DIR}/lib/IR/Verifier.cpp
768 ${LLVM_DIR}/lib/MC/ELFObjectWriter.cpp
769 ${LLVM_DIR}/lib/MC/MCAsmBackend.cpp
770 ${LLVM_DIR}/lib/MC/MCAsmInfo.cpp
771 ${LLVM_DIR}/lib/MC/MCAsmInfoCOFF.cpp
772 ${LLVM_DIR}/lib/MC/MCAsmInfoDarwin.cpp
773 ${LLVM_DIR}/lib/MC/MCAsmInfoELF.cpp
774 ${LLVM_DIR}/lib/MC/MCAsmMacro.cpp
775 ${LLVM_DIR}/lib/MC/MCAsmStreamer.cpp
776 ${LLVM_DIR}/lib/MC/MCAssembler.cpp
777 ${LLVM_DIR}/lib/MC/MCCodeEmitter.cpp
778 ${LLVM_DIR}/lib/MC/MCCodePadder.cpp
779 ${LLVM_DIR}/lib/MC/MCCodeView.cpp
780 ${LLVM_DIR}/lib/MC/MCContext.cpp
781 ${LLVM_DIR}/lib/MC/MCDisassembler/MCRelocationInfo.cpp
782 ${LLVM_DIR}/lib/MC/MCDwarf.cpp
783 ${LLVM_DIR}/lib/MC/MCELFObjectTargetWriter.cpp
784 ${LLVM_DIR}/lib/MC/MCELFStreamer.cpp
785 ${LLVM_DIR}/lib/MC/MCExpr.cpp
786 ${LLVM_DIR}/lib/MC/MCFragment.cpp
787 ${LLVM_DIR}/lib/MC/MCInst.cpp
788 ${LLVM_DIR}/lib/MC/MCInstPrinter.cpp
789 ${LLVM_DIR}/lib/MC/MCInstrAnalysis.cpp
790 ${LLVM_DIR}/lib/MC/MCInstrDesc.cpp
791 ${LLVM_DIR}/lib/MC/MCLinkerOptimizationHint.cpp
792 ${LLVM_DIR}/lib/MC/MCMachOStreamer.cpp
793 ${LLVM_DIR}/lib/MC/MCMachObjectTargetWriter.cpp
794 ${LLVM_DIR}/lib/MC/MCNullStreamer.cpp
795 ${LLVM_DIR}/lib/MC/MCObjectFileInfo.cpp
796 ${LLVM_DIR}/lib/MC/MCObjectStreamer.cpp
797 ${LLVM_DIR}/lib/MC/MCObjectWriter.cpp
798 ${LLVM_DIR}/lib/MC/MCParser/AsmLexer.cpp
799 ${LLVM_DIR}/lib/MC/MCParser/AsmParser.cpp
800 ${LLVM_DIR}/lib/MC/MCParser/COFFAsmParser.cpp
801 ${LLVM_DIR}/lib/MC/MCParser/DarwinAsmParser.cpp
802 ${LLVM_DIR}/lib/MC/MCParser/ELFAsmParser.cpp
803 ${LLVM_DIR}/lib/MC/MCParser/MCAsmLexer.cpp
804 ${LLVM_DIR}/lib/MC/MCParser/MCAsmParser.cpp
805 ${LLVM_DIR}/lib/MC/MCParser/MCAsmParserExtension.cpp
806 ${LLVM_DIR}/lib/MC/MCParser/MCTargetAsmParser.cpp
807 ${LLVM_DIR}/lib/MC/MCRegisterInfo.cpp
808 ${LLVM_DIR}/lib/MC/MCSchedule.cpp
809 ${LLVM_DIR}/lib/MC/MCSection.cpp
810 ${LLVM_DIR}/lib/MC/MCSectionCOFF.cpp
811 ${LLVM_DIR}/lib/MC/MCSectionELF.cpp
812 ${LLVM_DIR}/lib/MC/MCSectionMachO.cpp
813 ${LLVM_DIR}/lib/MC/MCSectionWasm.cpp
814 ${LLVM_DIR}/lib/MC/MCStreamer.cpp
815 ${LLVM_DIR}/lib/MC/MCSubtargetInfo.cpp
816 ${LLVM_DIR}/lib/MC/MCSymbol.cpp
817 ${LLVM_DIR}/lib/MC/MCSymbolELF.cpp
818 ${LLVM_DIR}/lib/MC/MCTargetOptions.cpp
819 ${LLVM_DIR}/lib/MC/MCValue.cpp
820 ${LLVM_DIR}/lib/MC/MCWasmStreamer.cpp
821 ${LLVM_DIR}/lib/MC/MCWin64EH.cpp
822 ${LLVM_DIR}/lib/MC/MCWinCOFFStreamer.cpp
823 ${LLVM_DIR}/lib/MC/MCWinEH.cpp
824 ${LLVM_DIR}/lib/MC/MachObjectWriter.cpp
825 ${LLVM_DIR}/lib/MC/StringTableBuilder.cpp
826 ${LLVM_DIR}/lib/MC/SubtargetFeature.cpp
827 ${LLVM_DIR}/lib/MC/WasmObjectWriter.cpp
828 ${LLVM_DIR}/lib/MC/WinCOFFObjectWriter.cpp
829 ${LLVM_DIR}/lib/Object/Archive.cpp
830 ${LLVM_DIR}/lib/Object/Binary.cpp
831 ${LLVM_DIR}/lib/Object/COFFObjectFile.cpp
832 ${LLVM_DIR}/lib/Object/ELF.cpp
833 ${LLVM_DIR}/lib/Object/ELFObjectFile.cpp
834 ${LLVM_DIR}/lib/Object/Error.cpp
835 ${LLVM_DIR}/lib/Object/IRObjectFile.cpp
836 ${LLVM_DIR}/lib/Object/IRSymtab.cpp
837 ${LLVM_DIR}/lib/Object/MachOObjectFile.cpp
838 ${LLVM_DIR}/lib/Object/MachOUniversal.cpp
839 ${LLVM_DIR}/lib/Object/ModuleSymbolTable.cpp
840 ${LLVM_DIR}/lib/Object/ObjectFile.cpp
841 ${LLVM_DIR}/lib/Object/RecordStreamer.cpp
842 ${LLVM_DIR}/lib/Object/SymbolicFile.cpp
843 ${LLVM_DIR}/lib/Object/WasmObjectFile.cpp
844 ${LLVM_DIR}/lib/Object/WindowsResource.cpp
845 ${LLVM_DIR}/lib/ProfileData/InstrProf.cpp
846 ${LLVM_DIR}/lib/Support/APFloat.cpp
847 ${LLVM_DIR}/lib/Support/APInt.cpp
Nicolas Capens8c7da802019-04-29 11:52:35 -0400848 ${LLVM_DIR}/lib/Support/APSInt.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400849 ${LLVM_DIR}/lib/Support/ARMAttributeParser.cpp
850 ${LLVM_DIR}/lib/Support/ARMBuildAttrs.cpp
851 ${LLVM_DIR}/lib/Support/BinaryStreamError.cpp
852 ${LLVM_DIR}/lib/Support/BinaryStreamReader.cpp
853 ${LLVM_DIR}/lib/Support/BinaryStreamRef.cpp
854 ${LLVM_DIR}/lib/Support/BinaryStreamWriter.cpp
855 ${LLVM_DIR}/lib/Support/BlockFrequency.cpp
856 ${LLVM_DIR}/lib/Support/BranchProbability.cpp
857 ${LLVM_DIR}/lib/Support/Chrono.cpp
858 ${LLVM_DIR}/lib/Support/CodeGenCoverage.cpp
859 ${LLVM_DIR}/lib/Support/CommandLine.cpp
860 ${LLVM_DIR}/lib/Support/Compression.cpp
861 ${LLVM_DIR}/lib/Support/ConvertUTF.cpp
862 ${LLVM_DIR}/lib/Support/ConvertUTFWrapper.cpp
863 ${LLVM_DIR}/lib/Support/DJB.cpp
864 ${LLVM_DIR}/lib/Support/DataExtractor.cpp
865 ${LLVM_DIR}/lib/Support/Debug.cpp
866 ${LLVM_DIR}/lib/Support/DebugCounter.cpp
867 ${LLVM_DIR}/lib/Support/DynamicLibrary.cpp
868 ${LLVM_DIR}/lib/Support/Errno.cpp
869 ${LLVM_DIR}/lib/Support/Error.cpp
870 ${LLVM_DIR}/lib/Support/ErrorHandling.cpp
871 ${LLVM_DIR}/lib/Support/FoldingSet.cpp
872 ${LLVM_DIR}/lib/Support/FormatVariadic.cpp
873 ${LLVM_DIR}/lib/Support/FormattedStream.cpp
874 ${LLVM_DIR}/lib/Support/GraphWriter.cpp
875 ${LLVM_DIR}/lib/Support/Hashing.cpp
876 ${LLVM_DIR}/lib/Support/Host.cpp
877 ${LLVM_DIR}/lib/Support/IntEqClasses.cpp
878 ${LLVM_DIR}/lib/Support/IntervalMap.cpp
879 ${LLVM_DIR}/lib/Support/JamCRC.cpp
880 ${LLVM_DIR}/lib/Support/KnownBits.cpp
881 ${LLVM_DIR}/lib/Support/LEB128.cpp
882 ${LLVM_DIR}/lib/Support/LineIterator.cpp
883 ${LLVM_DIR}/lib/Support/Locale.cpp
884 ${LLVM_DIR}/lib/Support/LowLevelType.cpp
885 ${LLVM_DIR}/lib/Support/MD5.cpp
886 ${LLVM_DIR}/lib/Support/ManagedStatic.cpp
887 ${LLVM_DIR}/lib/Support/MathExtras.cpp
888 ${LLVM_DIR}/lib/Support/Memory.cpp
889 ${LLVM_DIR}/lib/Support/MemoryBuffer.cpp
890 ${LLVM_DIR}/lib/Support/Mutex.cpp
891 ${LLVM_DIR}/lib/Support/NativeFormatting.cpp
892 ${LLVM_DIR}/lib/Support/Path.cpp
893 ${LLVM_DIR}/lib/Support/PrettyStackTrace.cpp
894 ${LLVM_DIR}/lib/Support/Process.cpp
895 ${LLVM_DIR}/lib/Support/Program.cpp
896 ${LLVM_DIR}/lib/Support/RWMutex.cpp
897 ${LLVM_DIR}/lib/Support/RandomNumberGenerator.cpp
898 ${LLVM_DIR}/lib/Support/Regex.cpp
899 ${LLVM_DIR}/lib/Support/SHA1.cpp
900 ${LLVM_DIR}/lib/Support/ScaledNumber.cpp
901 ${LLVM_DIR}/lib/Support/ScopedPrinter.cpp
902 ${LLVM_DIR}/lib/Support/Signals.cpp
903 ${LLVM_DIR}/lib/Support/SmallPtrSet.cpp
904 ${LLVM_DIR}/lib/Support/SmallVector.cpp
905 ${LLVM_DIR}/lib/Support/SourceMgr.cpp
906 ${LLVM_DIR}/lib/Support/Statistic.cpp
907 ${LLVM_DIR}/lib/Support/StringExtras.cpp
908 ${LLVM_DIR}/lib/Support/StringMap.cpp
909 ${LLVM_DIR}/lib/Support/StringRef.cpp
910 ${LLVM_DIR}/lib/Support/StringSaver.cpp
911 ${LLVM_DIR}/lib/Support/TargetParser.cpp
912 ${LLVM_DIR}/lib/Support/TargetRegistry.cpp
913 ${LLVM_DIR}/lib/Support/Threading.cpp
914 ${LLVM_DIR}/lib/Support/Timer.cpp
915 ${LLVM_DIR}/lib/Support/ToolOutputFile.cpp
916 ${LLVM_DIR}/lib/Support/Triple.cpp
917 ${LLVM_DIR}/lib/Support/Twine.cpp
918 ${LLVM_DIR}/lib/Support/Unicode.cpp
919 ${LLVM_DIR}/lib/Support/UnicodeCaseFold.cpp
920 ${LLVM_DIR}/lib/Support/Valgrind.cpp
921 ${LLVM_DIR}/lib/Support/YAMLParser.cpp
922 ${LLVM_DIR}/lib/Support/YAMLTraits.cpp
923 ${LLVM_DIR}/lib/Support/circular_raw_ostream.cpp
924 ${LLVM_DIR}/lib/Support/raw_ostream.cpp
925 ${LLVM_DIR}/lib/Support/regcomp.c
926 ${LLVM_DIR}/lib/Support/regerror.c
927 ${LLVM_DIR}/lib/Support/regexec.c
928 ${LLVM_DIR}/lib/Support/regfree.c
929 ${LLVM_DIR}/lib/Support/regstrlcpy.c
930 ${LLVM_DIR}/lib/Target/TargetLoweringObjectFile.cpp
931 ${LLVM_DIR}/lib/Target/TargetMachine.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100932 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroCleanup.cpp
933 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroEarly.cpp
934 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroElide.cpp
935 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroFrame.cpp
936 ${LLVM_DIR}/lib/Transforms/Coroutines/CoroSplit.cpp
937 ${LLVM_DIR}/lib/Transforms/Coroutines/Coroutines.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400938 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAddSub.cpp
939 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
940 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCalls.cpp
941 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCasts.cpp
942 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCompares.cpp
943 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
944 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
945 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombinePHI.cpp
946 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSelect.cpp
947 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineShifts.cpp
948 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
949 ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
950 ${LLVM_DIR}/lib/Transforms/InstCombine/InstructionCombining.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100951 ${LLVM_DIR}/lib/Transforms/IPO/BarrierNoopPass.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400952 ${LLVM_DIR}/lib/Transforms/Scalar/ADCE.cpp
953 ${LLVM_DIR}/lib/Transforms/Scalar/ConstantHoisting.cpp
954 ${LLVM_DIR}/lib/Transforms/Scalar/DeadStoreElimination.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100955 ${LLVM_DIR}/lib/Transforms/Scalar/EarlyCSE.cpp
Nicolas Capens9ac24a92019-04-29 10:45:56 -0400956 ${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
957 ${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
958 ${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
959 ${LLVM_DIR}/lib/Transforms/Scalar/MergeICmps.cpp
960 ${LLVM_DIR}/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp
961 ${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
962 ${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
963 ${LLVM_DIR}/lib/Transforms/Scalar/SROA.cpp
964 ${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
965 ${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
966 ${LLVM_DIR}/lib/Transforms/Utils/BreakCriticalEdges.cpp
967 ${LLVM_DIR}/lib/Transforms/Utils/BuildLibCalls.cpp
968 ${LLVM_DIR}/lib/Transforms/Utils/BypassSlowDivision.cpp
969 ${LLVM_DIR}/lib/Transforms/Utils/CloneFunction.cpp
970 ${LLVM_DIR}/lib/Transforms/Utils/DemoteRegToStack.cpp
971 ${LLVM_DIR}/lib/Transforms/Utils/EntryExitInstrumenter.cpp
972 ${LLVM_DIR}/lib/Transforms/Utils/EscapeEnumerator.cpp
973 ${LLVM_DIR}/lib/Transforms/Utils/InlineFunction.cpp
974 ${LLVM_DIR}/lib/Transforms/Utils/LCSSA.cpp
975 ${LLVM_DIR}/lib/Transforms/Utils/Local.cpp
976 ${LLVM_DIR}/lib/Transforms/Utils/LoopSimplify.cpp
977 ${LLVM_DIR}/lib/Transforms/Utils/LoopUtils.cpp
978 ${LLVM_DIR}/lib/Transforms/Utils/LowerInvoke.cpp
979 ${LLVM_DIR}/lib/Transforms/Utils/OrderedInstructions.cpp
980 ${LLVM_DIR}/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
981 ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdater.cpp
982 ${LLVM_DIR}/lib/Transforms/Utils/SimplifyCFG.cpp
983 ${LLVM_DIR}/lib/Transforms/Utils/SimplifyLibCalls.cpp
984 ${LLVM_DIR}/lib/Transforms/Utils/SymbolRewriter.cpp
985 ${LLVM_DIR}/lib/Transforms/Utils/VNCoercion.cpp
986 ${LLVM_DIR}/lib/Transforms/Utils/ValueMapper.cpp
Ben Clayton1c82c7b2019-04-30 12:49:27 +0100987 ${LLVM_DIR}/../stubs/Stubs.cpp
Logan Chien0eedc8c2018-08-21 09:34:28 +0800988)
989
Nicolas Capens7d0b8a32018-10-30 16:36:52 -0400990if(ARCH STREQUAL "x86" OR ARCH STREQUAL "x86_64")
991 list(APPEND LLVM_LIST
992 ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
993 ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmParser.cpp
994 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
995 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstComments.cpp
996 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp
997 ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
998 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
999 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
1000 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
1001 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
1002 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
1003 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
1004 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
1005 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
1006 ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFTargetStreamer.cpp
1007 ${LLVM_DIR}/lib/Target/X86/ShadowCallStack.cpp
1008 ${LLVM_DIR}/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
1009 ${LLVM_DIR}/lib/Target/X86/Utils/X86ShuffleDecode.cpp
1010 ${LLVM_DIR}/lib/Target/X86/X86AsmPrinter.cpp
1011 ${LLVM_DIR}/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
1012 ${LLVM_DIR}/lib/Target/X86/X86CallFrameOptimization.cpp
1013 ${LLVM_DIR}/lib/Target/X86/X86CallLowering.cpp
1014 ${LLVM_DIR}/lib/Target/X86/X86CallingConv.cpp
1015 ${LLVM_DIR}/lib/Target/X86/X86CmovConversion.cpp
1016 ${LLVM_DIR}/lib/Target/X86/X86DomainReassignment.cpp
1017 ${LLVM_DIR}/lib/Target/X86/X86EvexToVex.cpp
1018 ${LLVM_DIR}/lib/Target/X86/X86ExpandPseudo.cpp
1019 ${LLVM_DIR}/lib/Target/X86/X86FastISel.cpp
1020 ${LLVM_DIR}/lib/Target/X86/X86FixupBWInsts.cpp
1021 ${LLVM_DIR}/lib/Target/X86/X86FixupLEAs.cpp
1022 ${LLVM_DIR}/lib/Target/X86/X86FixupSetCC.cpp
1023 ${LLVM_DIR}/lib/Target/X86/X86FlagsCopyLowering.cpp
1024 ${LLVM_DIR}/lib/Target/X86/X86FloatingPoint.cpp
1025 ${LLVM_DIR}/lib/Target/X86/X86FrameLowering.cpp
1026 ${LLVM_DIR}/lib/Target/X86/X86ISelDAGToDAG.cpp
1027 ${LLVM_DIR}/lib/Target/X86/X86ISelLowering.cpp
1028 ${LLVM_DIR}/lib/Target/X86/X86IndirectBranchTracking.cpp
1029 ${LLVM_DIR}/lib/Target/X86/X86InstrFMA3Info.cpp
1030 ${LLVM_DIR}/lib/Target/X86/X86InstrFoldTables.cpp
1031 ${LLVM_DIR}/lib/Target/X86/X86InstrInfo.cpp
1032 ${LLVM_DIR}/lib/Target/X86/X86InstructionSelector.cpp
1033 ${LLVM_DIR}/lib/Target/X86/X86InterleavedAccess.cpp
1034 ${LLVM_DIR}/lib/Target/X86/X86LegalizerInfo.cpp
1035 ${LLVM_DIR}/lib/Target/X86/X86MCInstLower.cpp
1036 ${LLVM_DIR}/lib/Target/X86/X86MachineFunctionInfo.cpp
1037 ${LLVM_DIR}/lib/Target/X86/X86MacroFusion.cpp
1038 ${LLVM_DIR}/lib/Target/X86/X86OptimizeLEAs.cpp
1039 ${LLVM_DIR}/lib/Target/X86/X86PadShortFunction.cpp
1040 ${LLVM_DIR}/lib/Target/X86/X86RegisterBankInfo.cpp
1041 ${LLVM_DIR}/lib/Target/X86/X86RegisterInfo.cpp
1042 ${LLVM_DIR}/lib/Target/X86/X86RetpolineThunks.cpp
1043 ${LLVM_DIR}/lib/Target/X86/X86SelectionDAGInfo.cpp
1044 ${LLVM_DIR}/lib/Target/X86/X86ShuffleDecodeConstantPool.cpp
1045 ${LLVM_DIR}/lib/Target/X86/X86SpeculativeLoadHardening.cpp
1046 ${LLVM_DIR}/lib/Target/X86/X86Subtarget.cpp
1047 ${LLVM_DIR}/lib/Target/X86/X86TargetMachine.cpp
1048 ${LLVM_DIR}/lib/Target/X86/X86TargetObjectFile.cpp
1049 ${LLVM_DIR}/lib/Target/X86/X86TargetTransformInfo.cpp
1050 ${LLVM_DIR}/lib/Target/X86/X86VZeroUpper.cpp
1051 ${LLVM_DIR}/lib/Target/X86/X86WinAllocaExpander.cpp
1052 ${LLVM_DIR}/lib/Target/X86/X86WinEHState.cpp
1053 )
1054elseif(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
1055 list(APPEND LLVM_LIST
1056 ${LLVM_DIR}/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
1057 ${LLVM_DIR}/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
1058 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp
1059 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
1060 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
1061 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
1062 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
1063 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
1064 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
1065 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp
1066 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
1067 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
1068 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
1069 ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
1070 ${LLVM_DIR}/lib/Target/Mips/Mips16FrameLowering.cpp
1071 ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloat.cpp
1072 ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloatInfo.cpp
1073 ${LLVM_DIR}/lib/Target/Mips/Mips16InstrInfo.cpp
1074 ${LLVM_DIR}/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
1075 ${LLVM_DIR}/lib/Target/Mips/Mips16ISelLowering.cpp
1076 ${LLVM_DIR}/lib/Target/Mips/Mips16RegisterInfo.cpp
1077 ${LLVM_DIR}/lib/Target/Mips/MipsAnalyzeImmediate.cpp
1078 ${LLVM_DIR}/lib/Target/Mips/MipsAsmPrinter.cpp
1079 ${LLVM_DIR}/lib/Target/Mips/MipsCallLowering.cpp
1080 ${LLVM_DIR}/lib/Target/Mips/MipsCCState.cpp
1081 ${LLVM_DIR}/lib/Target/Mips/MipsConstantIslandPass.cpp
1082 ${LLVM_DIR}/lib/Target/Mips/MipsDelaySlotFiller.cpp
1083 ${LLVM_DIR}/lib/Target/Mips/MipsExpandPseudo.cpp
1084 ${LLVM_DIR}/lib/Target/Mips/MipsFastISel.cpp
1085 ${LLVM_DIR}/lib/Target/Mips/MipsInstrInfo.cpp
1086 ${LLVM_DIR}/lib/Target/Mips/MipsInstructionSelector.cpp
1087 ${LLVM_DIR}/lib/Target/Mips/MipsISelDAGToDAG.cpp
1088 ${LLVM_DIR}/lib/Target/Mips/MipsISelLowering.cpp
1089 ${LLVM_DIR}/lib/Target/Mips/MipsFrameLowering.cpp
1090 ${LLVM_DIR}/lib/Target/Mips/MipsLegalizerInfo.cpp
1091 ${LLVM_DIR}/lib/Target/Mips/MipsBranchExpansion.cpp
1092 ${LLVM_DIR}/lib/Target/Mips/MipsMCInstLower.cpp
1093 ${LLVM_DIR}/lib/Target/Mips/MipsMachineFunction.cpp
1094 ${LLVM_DIR}/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
1095 ${LLVM_DIR}/lib/Target/Mips/MipsOptimizePICCall.cpp
1096 ${LLVM_DIR}/lib/Target/Mips/MipsOs16.cpp
1097 ${LLVM_DIR}/lib/Target/Mips/MipsRegisterBankInfo.cpp
1098 ${LLVM_DIR}/lib/Target/Mips/MipsRegisterInfo.cpp
1099 ${LLVM_DIR}/lib/Target/Mips/MipsSEFrameLowering.cpp
1100 ${LLVM_DIR}/lib/Target/Mips/MipsSEInstrInfo.cpp
1101 ${LLVM_DIR}/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
1102 ${LLVM_DIR}/lib/Target/Mips/MipsSEISelLowering.cpp
1103 ${LLVM_DIR}/lib/Target/Mips/MipsSERegisterInfo.cpp
1104 ${LLVM_DIR}/lib/Target/Mips/MipsSubtarget.cpp
1105 ${LLVM_DIR}/lib/Target/Mips/MipsTargetMachine.cpp
1106 ${LLVM_DIR}/lib/Target/Mips/MipsTargetObjectFile.cpp
1107 ${LLVM_DIR}/lib/Target/Mips/MicroMipsSizeReduction.cpp
1108 ${LLVM_DIR}/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
1109 )
1110elseif(ARCH STREQUAL "aarch64")
1111 list(APPEND LLVM_LIST
1112 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
1113 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
1114 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
1115 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
1116 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
1117 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
1118 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
1119 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
1120 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
1121 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
1122 ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
1123 ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelLowering.cpp
1124 ${LLVM_DIR}/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp
1125 ${LLVM_DIR}/lib/Target/AArch64/AArch64FastISel.cpp
1126 ${LLVM_DIR}/lib/Target/AArch64/AArch64InstrInfo.cpp
1127 ${LLVM_DIR}/lib/Target/AArch64/AArch64PromoteConstant.cpp
1128 ${LLVM_DIR}/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp
1129 ${LLVM_DIR}/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
1130 ${LLVM_DIR}/lib/Target/AArch64/AArch64InstructionSelector.cpp
1131 ${LLVM_DIR}/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
1132 ${LLVM_DIR}/lib/Target/AArch64/AArch64A53Fix835769.cpp
1133 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetMachine.cpp
1134 ${LLVM_DIR}/lib/Target/AArch64/AArch64CallLowering.cpp
1135 ${LLVM_DIR}/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp
1136 ${LLVM_DIR}/lib/Target/AArch64/AArch64Subtarget.cpp
1137 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetObjectFile.cpp
1138 ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterInfo.cpp
1139 ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
1140 ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
1141 ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
1142 ${LLVM_DIR}/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
1143 ${LLVM_DIR}/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
1144 ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionalCompares.cpp
1145 ${LLVM_DIR}/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
1146 ${LLVM_DIR}/lib/Target/AArch64/AArch64LegalizerInfo.cpp
1147 ${LLVM_DIR}/lib/Target/AArch64/AArch64StorePairSuppress.cpp
1148 ${LLVM_DIR}/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
1149 ${LLVM_DIR}/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp
1150 ${LLVM_DIR}/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
1151 ${LLVM_DIR}/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
1152 ${LLVM_DIR}/lib/Target/AArch64/AArch64MCInstLower.cpp
1153 ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
1154 ${LLVM_DIR}/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
1155 ${LLVM_DIR}/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
1156 ${LLVM_DIR}/lib/Target/AArch64/AArch64CollectLOH.cpp
1157 ${LLVM_DIR}/lib/Target/AArch64/AArch64AsmPrinter.cpp
1158 ${LLVM_DIR}/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
1159 ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
1160 ${LLVM_DIR}/lib/Target/AArch64/AArch64CondBrTuning.cpp
1161 ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
1162 ${LLVM_DIR}/lib/Target/AArch64/AArch64FrameLowering.cpp
1163 ${LLVM_DIR}/lib/Target/AArch64/AArch64MacroFusion.cpp
1164 )
1165elseif(ARCH STREQUAL "arm")
1166 list(APPEND LLVM_LIST
1167 ${LLVM_DIR}/lib/Target/ARM/ARMConstantIslandPass.cpp
1168 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
1169 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
1170 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
1171 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
1172 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
1173 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp
1174 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
1175 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
1176 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
1177 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
1178 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
1179 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
1180 ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp
1181 ${LLVM_DIR}/lib/Target/ARM/ThumbRegisterInfo.cpp
1182 ${LLVM_DIR}/lib/Target/ARM/ARMMachineFunctionInfo.cpp
1183 ${LLVM_DIR}/lib/Target/ARM/ARMFrameLowering.cpp
1184 ${LLVM_DIR}/lib/Target/ARM/ARMBaseRegisterInfo.cpp
1185 ${LLVM_DIR}/lib/Target/ARM/ARMCallLowering.cpp
1186 ${LLVM_DIR}/lib/Target/ARM/ARMTargetMachine.cpp
1187 ${LLVM_DIR}/lib/Target/ARM/ARMBaseInstrInfo.cpp
1188 ${LLVM_DIR}/lib/Target/ARM/Thumb1FrameLowering.cpp
1189 ${LLVM_DIR}/lib/Target/ARM/ARMRegisterBankInfo.cpp
1190 ${LLVM_DIR}/lib/Target/ARM/Utils/ARMBaseInfo.cpp
1191 ${LLVM_DIR}/lib/Target/ARM/ARMComputeBlockSize.cpp
1192 ${LLVM_DIR}/lib/Target/ARM/ARMSelectionDAGInfo.cpp
1193 ${LLVM_DIR}/lib/Target/ARM/ARMInstructionSelector.cpp
1194 ${LLVM_DIR}/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
1195 ${LLVM_DIR}/lib/Target/ARM/ARMTargetObjectFile.cpp
1196 ${LLVM_DIR}/lib/Target/ARM/ARMISelLowering.cpp
1197 ${LLVM_DIR}/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
1198 ${LLVM_DIR}/lib/Target/ARM/ARMExpandPseudoInsts.cpp
1199 ${LLVM_DIR}/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
1200 ${LLVM_DIR}/lib/Target/ARM/ARMInstrInfo.cpp
1201 ${LLVM_DIR}/lib/Target/ARM/MLxExpansionPass.cpp
1202 ${LLVM_DIR}/lib/Target/ARM/Thumb2SizeReduction.cpp
1203 ${LLVM_DIR}/lib/Target/ARM/ARMConstantPoolValue.cpp
1204 ${LLVM_DIR}/lib/Target/ARM/Thumb2InstrInfo.cpp
1205 ${LLVM_DIR}/lib/Target/ARM/ARMRegisterInfo.cpp
1206 ${LLVM_DIR}/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
1207 ${LLVM_DIR}/lib/Target/ARM/ARMSubtarget.cpp
1208 ${LLVM_DIR}/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
1209 ${LLVM_DIR}/lib/Target/ARM/ARMParallelDSP.cpp
1210 ${LLVM_DIR}/lib/Target/ARM/ARMISelDAGToDAG.cpp
1211 ${LLVM_DIR}/lib/Target/ARM/A15SDOptimizer.cpp
1212 ${LLVM_DIR}/lib/Target/ARM/Thumb2ITBlockPass.cpp
1213 ${LLVM_DIR}/lib/Target/ARM/ARMFastISel.cpp
1214 ${LLVM_DIR}/lib/Target/ARM/ARMMacroFusion.cpp
1215 ${LLVM_DIR}/lib/Target/ARM/ARMAsmPrinter.cpp
1216 ${LLVM_DIR}/lib/Target/ARM/ARMMCInstLower.cpp
1217 ${LLVM_DIR}/lib/Target/ARM/ARMHazardRecognizer.cpp
1218 ${LLVM_DIR}/lib/Target/ARM/ARMCodeGenPrepare.cpp
1219 ${LLVM_DIR}/lib/Target/ARM/ARMTargetTransformInfo.cpp
1220 ${LLVM_DIR}/lib/Target/ARM/Thumb1InstrInfo.cpp
1221 ${LLVM_DIR}/lib/Target/ARM/ARMLegalizerInfo.cpp
1222 ${LLVM_DIR}/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
1223 )
Ben Claytonac07ed82019-03-26 14:17:41 +00001224endif()
1225
1226if(REACTOR_EMIT_DEBUG_INFO)
1227 list(APPEND LLVM_LIST
1228 ${LLVM_DIR}/lib/Demangle/ItaniumDemangle.cpp
1229 )
1230endif(REACTOR_EMIT_DEBUG_INFO)
Nicolas Capens7d0b8a32018-10-30 16:36:52 -04001231
Logan Chien0eedc8c2018-08-21 09:34:28 +08001232set(LLVM_INCLUDE_DIR "")
1233
1234if(WIN32)
Nicolas Capensd7a21cc2018-09-11 13:09:28 -04001235 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/windows/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001236 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/windows/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001237elseif(LINUX)
1238 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/linux/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001239 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/linux/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001240elseif(APPLE)
Nicolas Capens2337f062018-10-30 13:49:46 -04001241 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/darwin/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001242 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/darwin/include)
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001243elseif(ANDROID)
1244 list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/android/include)
Ben Claytonac07ed82019-03-26 14:17:41 +00001245 list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/android/include)
Logan Chien0eedc8c2018-08-21 09:34:28 +08001246endif()
1247
1248list(APPEND LLVM_INCLUDE_DIR
1249 ${LLVM_DIR}/include
Logan Chien009fecb2018-08-21 15:14:16 +08001250 ${LLVM_DIR}/lib/Target/AArch64
1251 ${LLVM_DIR}/lib/Target/ARM
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001252 ${LLVM_DIR}/lib/Target/Mips
Logan Chien0eedc8c2018-08-21 09:34:28 +08001253 ${LLVM_DIR}/lib/Target/X86
1254 ${LLVM_CONFIG_DIR}/common/include
1255 ${LLVM_CONFIG_DIR}/common/lib/IR
Logan Chien009fecb2018-08-21 15:14:16 +08001256 ${LLVM_CONFIG_DIR}/common/lib/Target/AArch64
1257 ${LLVM_CONFIG_DIR}/common/lib/Target/ARM
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001258 ${LLVM_CONFIG_DIR}/common/lib/Target/Mips
Logan Chien0eedc8c2018-08-21 09:34:28 +08001259 ${LLVM_CONFIG_DIR}/common/lib/Target/X86
1260 ${LLVM_CONFIG_DIR}/common/lib/Transforms/InstCombine
1261)
1262
Ben Clayton81be8c62019-02-26 16:50:31 +00001263# Suppress known LLVM warnings
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001264set(LLVM_COMPILE_OPTIONS)
Ben Clayton81be8c62019-02-26 16:50:31 +00001265if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001266 list(APPEND LLVM_COMPILE_OPTIONS
Ben Clayton81be8c62019-02-26 16:50:31 +00001267 "-Wno-noexcept-type" # mangled name for ‘X’ will change in C++17 because the exception specification is part of a function type
1268 "-Wno-maybe-uninitialized" # ‘X’ may be used uninitialized in this function
1269 "-Wno-unused-but-set-variable" # variable ‘X’ set but not used
1270 )
Ben Claytonedd7d412019-04-14 08:41:27 -04001271elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001272 list(APPEND LLVM_COMPILE_OPTIONS
Ben Claytonedd7d412019-04-14 08:41:27 -04001273 "/wd4141" # 'inline': used more than once
1274 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
1275 "/wd4244" # 'X': conversion from 'uint64_t' to 'const unsigned int', possible loss of data
1276 "/wd4267" # 'X': conversion from 'size_t' to 'unsigned int', possible loss of data
1277 "/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
1278 "/wd4319" # 'X': zero extending 'unsigned int' to 'uint64_t' of greater size
1279 "/wd4624" # 'X': destructor was implicitly defined as deleted
1280 "/wd4805" # 'X': unsafe mix of type 'unsigned int' and type 'bool' in operation
1281 "/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.
1282 )
Ben Clayton81be8c62019-02-26 16:50:31 +00001283endif()
Ben Clayton81be8c62019-02-26 16:50:31 +00001284
Nicolas Capens5a105bc2015-12-22 22:04:28 -05001285add_library(llvm STATIC ${LLVM_LIST})
Corentin Wallez0866b292015-12-09 13:49:40 -05001286set_target_properties(llvm PROPERTIES
1287 POSITION_INDEPENDENT_CODE 1
1288 INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIR}"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001289 COMPILE_OPTIONS "${LLVM_COMPILE_OPTIONS}"
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001290 COMPILE_DEFINITIONS "__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001291 FOLDER "LLVM"
1292)
1293
Ben Clayton8f71f732019-02-01 09:38:45 +00001294# Add required libraries for LLVM
1295if(LINUX)
1296 target_link_libraries(llvm dl)
1297endif(LINUX)
1298
Corentin Wallez0866b292015-12-09 13:49:40 -05001299###########################################################
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001300# Subzero
1301###########################################################
1302
Nicolas Capens26690ed2017-03-31 10:34:20 -04001303if(${REACTOR_BACKEND} STREQUAL "Subzero")
1304 set(SUBZERO_LIST
1305 ${SUBZERO_DIR}/src/IceAssembler.cpp
1306 ${SUBZERO_DIR}/src/IceCfg.cpp
1307 ${SUBZERO_DIR}/src/IceCfgNode.cpp
1308 ${SUBZERO_DIR}/src/IceClFlags.cpp
1309 ${SUBZERO_DIR}/src/IceELFObjectWriter.cpp
1310 ${SUBZERO_DIR}/src/IceELFSection.cpp
1311 ${SUBZERO_DIR}/src/IceFixups.cpp
1312 ${SUBZERO_DIR}/src/IceGlobalContext.cpp
1313 ${SUBZERO_DIR}/src/IceGlobalInits.cpp
1314 ${SUBZERO_DIR}/src/IceInst.cpp
1315 ${SUBZERO_DIR}/src/IceInstrumentation.cpp
1316 ${SUBZERO_DIR}/src/IceIntrinsics.cpp
1317 ${SUBZERO_DIR}/src/IceLiveness.cpp
1318 ${SUBZERO_DIR}/src/IceLoopAnalyzer.cpp
1319 ${SUBZERO_DIR}/src/IceMangling.cpp
1320 ${SUBZERO_DIR}/src/IceMemory.cpp
1321 ${SUBZERO_DIR}/src/IceOperand.cpp
1322 ${SUBZERO_DIR}/src/IceRangeSpec.cpp
1323 ${SUBZERO_DIR}/src/IceRegAlloc.cpp
1324 ${SUBZERO_DIR}/src/IceRevision.cpp
1325 ${SUBZERO_DIR}/src/IceRNG.cpp
1326 ${SUBZERO_DIR}/src/IceSwitchLowering.cpp
1327 ${SUBZERO_DIR}/src/IceTargetLowering.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001328 ${SUBZERO_DIR}/src/IceThreading.cpp
1329 ${SUBZERO_DIR}/src/IceTimerTree.cpp
1330 ${SUBZERO_DIR}/src/IceTypes.cpp
1331 ${SUBZERO_DIR}/src/IceVariableSplitting.cpp
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001332 )
Nicolas Capens26690ed2017-03-31 10:34:20 -04001333
Nicolas Capens75753f92018-10-02 15:01:30 -04001334 # FIXME: Shouldn't depend on external source files directly.
1335 list(APPEND SUBZERO_LIST
1336 ${SOURCE_DIR}/Common/Memory.cpp
1337 )
1338
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001339 if(ARCH STREQUAL "x86_64")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001340 list(APPEND SUBZERO_LIST
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001341 ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001342 ${SUBZERO_DIR}/src/IceInstX8664.cpp
1343 ${SUBZERO_DIR}/src/IceTargetLoweringX8664.cpp
1344 )
1345 set(SUBZERO_TARGET X8664)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001346 elseif(ARCH STREQUAL "x86")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001347 list(APPEND SUBZERO_LIST
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001348 ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001349 ${SUBZERO_DIR}/src/IceInstX8632.cpp
1350 ${SUBZERO_DIR}/src/IceTargetLoweringX8632.cpp
1351 )
1352 set(SUBZERO_TARGET X8632)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001353 elseif(ARCH STREQUAL "arm")
1354 list(APPEND SUBZERO_LIST
1355 ${SUBZERO_DIR}/src/IceAssemblerARM32.cpp
1356 ${SUBZERO_DIR}/src/IceInstARM32.cpp
1357 ${SUBZERO_DIR}/src/IceTargetLoweringARM32.cpp
1358 )
1359 set(SUBZERO_TARGET ARM32)
Gordana Cmiljanovic082dfec2018-10-19 11:36:15 +02001360 elseif(ARCH STREQUAL "mipsel")
1361 list(APPEND SUBZERO_LIST
1362 ${SUBZERO_DIR}/src/IceAssemblerMIPS32.cpp
1363 ${SUBZERO_DIR}/src/IceInstMIPS32.cpp
1364 ${SUBZERO_DIR}/src/IceTargetLoweringMIPS32.cpp
1365 )
1366 set(SUBZERO_TARGET MIPS32)
Nicolas Capens30cd7d42017-04-25 15:17:25 -04001367 else()
1368 message(FATAL_ERROR "Architecture '${ARCH}' not supported by Subzero")
Nicolas Capens26690ed2017-03-31 10:34:20 -04001369 endif()
1370
1371 file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
1372 ${SUBZERO_LLVM_DIR}/*.cpp
1373 ${SUBZERO_LLVM_DIR}/*.c
1374 ${SUBZERO_LLVM_DIR}/*.h
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001375 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001376
Nicolas Capens26690ed2017-03-31 10:34:20 -04001377 set(SUBZERO_REACTOR_LIST
Nicolas Capensb6d4ce32019-03-12 23:00:24 -04001378 ${SOURCE_DIR}/Reactor/Reactor.cpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001379 ${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
1380 ${SOURCE_DIR}/Reactor/Routine.cpp
1381 ${SOURCE_DIR}/Reactor/Optimizer.cpp
1382 ${SOURCE_DIR}/Reactor/Nucleus.hpp
1383 ${SOURCE_DIR}/Reactor/Routine.hpp
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001384 ${SOURCE_DIR}/Reactor/Debug.cpp
1385 ${SOURCE_DIR}/Reactor/Debug.hpp
Nicolas Capens1a3ce872018-10-10 10:42:36 -04001386 ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1387 ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
Nicolas Capens26690ed2017-03-31 10:34:20 -04001388 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001389
Nicolas Capens26690ed2017-03-31 10:34:20 -04001390 set(SUBZERO_INCLUDE_DIR
1391 ${SUBZERO_DIR}/
1392 ${SUBZERO_LLVM_DIR}/include/
1393 ${SUBZERO_DIR}/pnacl-llvm/include/
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001394 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001395
Nicolas Capens26690ed2017-03-31 10:34:20 -04001396 if(WIN32)
1397 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Windows/include/)
1398 elseif(LINUX)
1399 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Linux/include/)
1400 elseif(APPLE)
1401 list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/MacOS/include/)
1402 endif()
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001403
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001404 if(WIN32)
1405 list(APPEND SUBZERO_COMPILE_OPTIONS
1406 "/wd4334" # ''operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
1407 "/wd4996" # The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name.
1408 )
1409 endif()
1410
Nicolas Capens26690ed2017-03-31 10:34:20 -04001411 add_library(ReactorSubzero STATIC
1412 ${SUBZERO_LIST}
1413 ${SUBZERO_DEPENDENCIES_LIST}
1414 ${SUBZERO_REACTOR_LIST}
1415 )
Nicolas Capens26690ed2017-03-31 10:34:20 -04001416 set_target_properties(ReactorSubzero PROPERTIES
1417 POSITION_INDEPENDENT_CODE 1
1418 INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
Antonio Maiorano5bce1f42019-05-10 16:03:49 -04001419 COMPILE_OPTIONS "${SUBZERO_COMPILE_OPTIONS};${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens26690ed2017-03-31 10:34:20 -04001420 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;"
1421 FOLDER "Subzero"
1422 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001423
Nicolas Capens26690ed2017-03-31 10:34:20 -04001424 if(WIN32)
1425 target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
1426 endif()
Nicolas Capens19291ef2017-01-09 13:35:14 -05001427endif()
1428
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001429###########################################################
Corentin Wallez0866b292015-12-09 13:49:40 -05001430# Include Directories
1431###########################################################
1432
1433set(COMMON_INCLUDE_DIR
1434 ${SOURCE_DIR}
Erwin Jansend46faeb2018-11-19 16:01:37 -08001435 ${CMAKE_CURRENT_SOURCE_DIR}/include
Corentin Wallez0866b292015-12-09 13:49:40 -05001436 ${LLVM_INCLUDE_DIR}
Ben Claytonac07ed82019-03-26 14:17:41 +00001437 ${LIBBACKTRACE_INCLUDE_DIR}
Corentin Wallez0866b292015-12-09 13:49:40 -05001438)
1439set(OPENGL_INCLUDE_DIR
1440 ${OPENGL_DIR}
Corentin Wallez0866b292015-12-09 13:49:40 -05001441 ${COMMON_INCLUDE_DIR}
1442)
1443
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001444set(VULKAN_INCLUDE_DIR
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001445 ${COMMON_INCLUDE_DIR}
1446)
1447
Corentin Wallez0866b292015-12-09 13:49:40 -05001448###########################################################
1449# File Lists
1450###########################################################
1451
1452file(GLOB_RECURSE SWIFTSHADER_LIST
1453 ${SOURCE_DIR}/Common/*.cpp
1454 ${SOURCE_DIR}/Common/*.h
1455 ${SOURCE_DIR}/Common/*.hpp
1456 ${SOURCE_DIR}/Renderer/*.cpp
1457 ${SOURCE_DIR}/Renderer/*.h
1458 ${SOURCE_DIR}/Renderer/*.hpp
1459 ${SOURCE_DIR}/Shader/*.cpp
1460 ${SOURCE_DIR}/Shader/*.h
1461 ${SOURCE_DIR}/Shader/*.hpp
1462)
1463list(APPEND SWIFTSHADER_LIST
1464 ${SOURCE_DIR}/Main/Config.cpp
1465 ${SOURCE_DIR}/Main/Config.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001466 ${SOURCE_DIR}/Main/FrameBuffer.cpp
1467 ${SOURCE_DIR}/Main/FrameBuffer.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001468 ${SOURCE_DIR}/Main/SwiftConfig.cpp
1469 ${SOURCE_DIR}/Main/SwiftConfig.hpp
1470)
1471list(REMOVE_ITEM SWIFTSHADER_LIST
1472 ${SOURCE_DIR}/Common/DebugAndroid.cpp
1473 ${SOURCE_DIR}/Common/DebugAndroid.hpp
1474 ${SOURCE_DIR}/Common/GrallocAndroid.cpp
1475 ${SOURCE_DIR}/Common/GrallocAndroid.hpp
1476)
1477
Ben Claytonac07ed82019-03-26 14:17:41 +00001478if(REACTOR_EMIT_DEBUG_INFO)
1479 set(LIBBACKTRACE_LIST
1480 ${LIBBACKTRACE_DIR}/atomic.c
1481 ${LIBBACKTRACE_DIR}/backtrace.c
1482 ${LIBBACKTRACE_DIR}/backtrace.h
1483 ${LIBBACKTRACE_DIR}/dwarf.c
1484 ${LIBBACKTRACE_DIR}/fileline.c
1485 ${LIBBACKTRACE_DIR}/filenames.h
1486 ${LIBBACKTRACE_DIR}/internal.h
1487 ${LIBBACKTRACE_DIR}/mmap.c
1488 ${LIBBACKTRACE_DIR}/mmapio.c
1489 ${LIBBACKTRACE_DIR}/posix.c
1490 ${LIBBACKTRACE_DIR}/print.c
1491 ${LIBBACKTRACE_DIR}/simple.c
1492 ${LIBBACKTRACE_DIR}/sort.c
1493 ${LIBBACKTRACE_DIR}/state.c
1494 ${LIBBACKTRACE_INCLUDE_DIR}/backtrace-supported.h
1495 ${LIBBACKTRACE_INCLUDE_DIR}/config.h
1496 )
1497
1498 if(WIN32)
1499 list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/pecoff.c)
1500 elseif(LINUX)
1501 list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/elf.c)
1502 elseif(APPLE)
1503 message(FATAL_ERROR "libbacktrace does not support mach-o yet")
1504 endif()
1505endif(REACTOR_EMIT_DEBUG_INFO)
1506
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001507set(REACTOR_LLVM_LIST
Nicolas Capensb6d4ce32019-03-12 23:00:24 -04001508 ${SOURCE_DIR}/Reactor/Reactor.cpp
Nicolas Capens5763d172016-09-26 13:44:20 -04001509 ${SOURCE_DIR}/Reactor/LLVMReactor.cpp
Ben Claytonac07ed82019-03-26 14:17:41 +00001510 ${SOURCE_DIR}/Reactor/LLVMReactor.hpp
1511 ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.cpp
1512 ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001513 ${SOURCE_DIR}/Reactor/Nucleus.hpp
1514 ${SOURCE_DIR}/Reactor/Routine.cpp
1515 ${SOURCE_DIR}/Reactor/Routine.hpp
Nicolas Capensdaa5d912016-09-28 16:56:36 -04001516 ${SOURCE_DIR}/Reactor/LLVMRoutine.cpp
1517 ${SOURCE_DIR}/Reactor/LLVMRoutine.hpp
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001518 ${SOURCE_DIR}/Reactor/CPUID.cpp
1519 ${SOURCE_DIR}/Reactor/CPUID.hpp
1520 ${SOURCE_DIR}/Reactor/Debug.cpp
1521 ${SOURCE_DIR}/Reactor/Debug.hpp
Nicolas Capens1a3ce872018-10-10 10:42:36 -04001522 ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
1523 ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001524)
1525
1526file(GLOB_RECURSE EGL_LIST
1527 ${OPENGL_DIR}/libEGL/*.cpp
1528 ${OPENGL_DIR}/libEGL/*.h
1529 ${OPENGL_DIR}/libEGL/*.hpp
1530 ${OPENGL_DIR}/common/Object.cpp
1531 ${OPENGL_DIR}/common/Object.hpp
1532 ${OPENGL_DIR}/common/debug.cpp
1533 ${OPENGL_DIR}/common/debug.h
Chris Forbesf8374cf2018-12-06 13:25:59 -08001534 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1535 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001536 ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001537)
1538
Corentin Wallez0866b292015-12-09 13:49:40 -05001539file(GLOB_RECURSE GLES2_LIST
1540 ${OPENGL_DIR}/libGLESv2/*.cpp
1541 ${OPENGL_DIR}/libGLESv2/*.h
1542 ${OPENGL_DIR}/libGLESv2/*.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001543 ${OPENGL_DIR}/common/*.cpp
1544 ${OPENGL_DIR}/common/*.h
1545 ${OPENGL_DIR}/common/*.hpp
Chris Forbesf8374cf2018-12-06 13:25:59 -08001546 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1547 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001548 ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
1549 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES2/*.h
1550 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES3/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001551)
1552
1553file(GLOB_RECURSE GLES_CM_LIST
1554 ${OPENGL_DIR}/libGLES_CM/*.cpp
1555 ${OPENGL_DIR}/libGLES_CM/*.h
1556 ${OPENGL_DIR}/libGLES_CM/*.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001557 ${OPENGL_DIR}/common/*.cpp
1558 ${OPENGL_DIR}/common/*.h
1559 ${OPENGL_DIR}/common/*.hpp
Chris Forbesf8374cf2018-12-06 13:25:59 -08001560 ${SOURCE_DIR}/Common/SharedLibrary.cpp
1561 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001562 ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
1563 ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES/*.h
Corentin Wallez0866b292015-12-09 13:49:40 -05001564)
1565
1566file(GLOB_RECURSE OPENGL_COMPILER_LIST
1567 ${OPENGL_COMPILER_DIR}/*.cpp
1568 ${OPENGL_COMPILER_DIR}/*.h
1569 ${OPENGL_COMPILER_DIR}/*.hpp
1570)
1571file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
1572 ${OPENGL_COMPILER_DIR}/ossource*.cpp
1573 ${OPENGL_COMPILER_DIR}/ossource*.h
1574 ${OPENGL_COMPILER_DIR}/ossource*.hpp
1575)
1576list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
1577
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001578file(GLOB_RECURSE VULKAN_LIST
1579 ${VULKAN_DIR}/*.cpp
1580 ${VULKAN_DIR}/*.h
Alexis Hetue70c3512018-10-17 13:18:04 -04001581 ${VULKAN_DIR}/*.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001582 ${SOURCE_DIR}/System/CPUID.cpp
1583 ${SOURCE_DIR}/System/CPUID.hpp
1584 ${SOURCE_DIR}/System/Configurator.cpp
1585 ${SOURCE_DIR}/System/Configurator.hpp
Chris Forbesc730c382018-12-05 16:48:33 -08001586 ${SOURCE_DIR}/System/Debug.cpp
1587 ${SOURCE_DIR}/System/Debug.hpp
Alexis Hetuc0f92f22018-11-15 16:25:38 -05001588 ${SOURCE_DIR}/System/Half.cpp
1589 ${SOURCE_DIR}/System/Half.hpp
1590 ${SOURCE_DIR}/System/Math.cpp
1591 ${SOURCE_DIR}/System/Math.hpp
1592 ${SOURCE_DIR}/System/Memory.cpp
1593 ${SOURCE_DIR}/System/Memory.hpp
1594 ${SOURCE_DIR}/System/Resource.cpp
1595 ${SOURCE_DIR}/System/Resource.hpp
1596 ${SOURCE_DIR}/System/Socket.cpp
1597 ${SOURCE_DIR}/System/Socket.hpp
1598 ${SOURCE_DIR}/System/Thread.cpp
1599 ${SOURCE_DIR}/System/Thread.hpp
1600 ${SOURCE_DIR}/System/Timer.cpp
1601 ${SOURCE_DIR}/System/Timer.hpp
1602 ${SOURCE_DIR}/Device/*.cpp
1603 ${SOURCE_DIR}/Device/*.hpp
1604 ${SOURCE_DIR}/Pipeline/*.cpp
1605 ${SOURCE_DIR}/Pipeline/*.hpp
Hernan Liatisc6eb41b2019-02-22 11:12:59 -08001606 ${SOURCE_DIR}/WSI/VkSurfaceKHR.cpp
1607 ${SOURCE_DIR}/WSI/VkSurfaceKHR.hpp
Hernan Liatisc7943e92019-02-25 19:29:54 -08001608 ${SOURCE_DIR}/WSI/VkSwapchainKHR.cpp
1609 ${SOURCE_DIR}/WSI/VkSwapchainKHR.hpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001610 ${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/*.h}
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001611)
1612
Corentin Wallez0866b292015-12-09 13:49:40 -05001613###########################################################
1614# Append OS specific files to lists
1615###########################################################
1616
1617if(WIN32)
1618 list(APPEND SWIFTSHADER_LIST
1619 ${SOURCE_DIR}/Main/FrameBufferDD.cpp
1620 ${SOURCE_DIR}/Main/FrameBufferDD.hpp
1621 ${SOURCE_DIR}/Main/FrameBufferGDI.cpp
1622 ${SOURCE_DIR}/Main/FrameBufferGDI.hpp
1623 ${SOURCE_DIR}/Main/FrameBufferWin.cpp
1624 ${SOURCE_DIR}/Main/FrameBufferWin.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001625 )
1626 list(APPEND OPENGL_COMPILER_LIST ${OPENGL_COMPILER_DIR}/ossource_win.cpp)
1627 list(APPEND EGL_LIST ${OPENGL_DIR}/libEGL/libEGL.rc)
Corentin Wallez0866b292015-12-09 13:49:40 -05001628 list(APPEND GLES2_LIST ${OPENGL_DIR}/libGLESv2/libGLESv2.rc)
1629 list(APPEND GLES_CM_LIST ${OPENGL_DIR}/libGLES_CM/libGLES_CM.rc)
1630elseif(LINUX)
1631 list(APPEND SWIFTSHADER_LIST
1632 ${SOURCE_DIR}/Main/FrameBufferX11.cpp
1633 ${SOURCE_DIR}/Main/FrameBufferX11.hpp
Nicolas Capens681d97b2016-05-17 16:02:32 -04001634 ${SOURCE_DIR}/Common/SharedLibrary.hpp
1635 ${SOURCE_DIR}/Main/libX11.cpp
1636 ${SOURCE_DIR}/Main/libX11.hpp
1637 )
1638 list(APPEND EGL_LIST
1639 ${SOURCE_DIR}/Common/SharedLibrary.hpp
Corentin Wallez0866b292015-12-09 13:49:40 -05001640 ${SOURCE_DIR}/Main/libX11.cpp
1641 ${SOURCE_DIR}/Main/libX11.hpp
1642 )
1643 list(APPEND OPENGL_COMPILER_LIST
1644 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1645 )
Hernan Liatisc6eb41b2019-02-22 11:12:59 -08001646
1647 list(APPEND VULKAN_LIST
1648 ${SOURCE_DIR}/WSI/libX11.cpp
1649 ${SOURCE_DIR}/WSI/libX11.hpp
1650 ${SOURCE_DIR}/WSI/XlibSurfaceKHR.cpp
1651 ${SOURCE_DIR}/WSI/XlibSurfaceKHR.hpp
1652 )
Corentin Wallez27654c22015-12-09 15:22:08 -05001653elseif(APPLE)
1654 list(APPEND SWIFTSHADER_LIST
1655 ${SOURCE_DIR}/Main/FrameBufferOSX.mm
1656 ${SOURCE_DIR}/Main/FrameBufferOSX.hpp
1657 )
Corentin Wallezcd0a4572015-12-10 15:59:28 -05001658 list(APPEND EGL_LIST
1659 ${OPENGL_DIR}/libEGL/OSXUtils.mm
1660 ${OPENGL_DIR}/libEGL/OSXUtils.hpp
1661 )
Corentin Wallez27654c22015-12-09 15:22:08 -05001662 list(APPEND OPENGL_COMPILER_LIST
1663 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1664 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001665elseif(ANDROID)
1666 list(APPEND SWIFTSHADER_LIST
1667 ${SOURCE_DIR}/Main/FrameBufferAndroid.cpp
1668 ${SOURCE_DIR}/Main/FrameBufferAndroid.hpp
1669 )
1670 list(APPEND OPENGL_COMPILER_LIST
1671 ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
1672 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001673endif()
1674
1675if(WIN32)
1676 set(OS_LIBS odbc32 odbccp32 WS2_32 dxguid)
1677elseif(LINUX)
Nicolas Capens681d97b2016-05-17 16:02:32 -04001678 set(OS_LIBS dl pthread)
Corentin Wallezcd0a4572015-12-10 15:59:28 -05001679elseif(APPLE)
1680 find_library(COCOA_FRAMEWORK Cocoa)
1681 find_library(QUARTZ_FRAMEWORK Quartz)
Alexis Hetud23cf632018-04-10 10:48:42 -04001682 find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
1683 find_library(IOSURFACE_FRAMEWORK IOSurface)
1684 set(OS_LIBS "${COCOA_FRAMEWORK}" "${QUARTZ_FRAMEWORK}" "${CORE_FOUNDATION_FRAMEWORK}" "${IOSURFACE_FRAMEWORK}")
Corentin Wallez0866b292015-12-09 13:49:40 -05001685endif()
1686
1687###########################################################
Nicolas Capens5a105bc2015-12-22 22:04:28 -05001688# SwiftShader Targets
Corentin Wallez0866b292015-12-09 13:49:40 -05001689###########################################################
1690
1691add_library(SwiftShader STATIC ${SWIFTSHADER_LIST})
1692set_target_properties(SwiftShader PROPERTIES
1693 INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
1694 POSITION_INDEPENDENT_CODE 1
1695 FOLDER "Core"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001696 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens506cc5e2017-07-24 11:30:55 -04001697 COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001698)
1699target_link_libraries(SwiftShader ${OS_LIBS})
1700
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001701if(${REACTOR_BACKEND} STREQUAL "LLVM")
1702 add_library(ReactorLLVM STATIC ${REACTOR_LLVM_LIST})
1703 set_target_properties(ReactorLLVM PROPERTIES
1704 INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
Ben Claytonac07ed82019-03-26 14:17:41 +00001705 POSITION_INDEPENDENT_CODE 1
1706 FOLDER "Core"
Ben Clayton09a7f452019-04-25 15:22:43 +01001707 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Ben Claytonac07ed82019-03-26 14:17:41 +00001708 )
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001709 target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
Ben Claytonac07ed82019-03-26 14:17:41 +00001710
Ben Claytonb99bc1f2019-04-15 13:56:08 -04001711 if(REACTOR_EMIT_DEBUG_INFO)
1712 add_library(Libbacktrace STATIC ${LIBBACKTRACE_LIST})
1713 set_target_properties(Libbacktrace PROPERTIES
1714 INCLUDE_DIRECTORIES "${LIBBACKTRACE_INCLUDE_DIR}"
1715 POSITION_INDEPENDENT_CODE 1
1716 FOLDER "Core"
1717 )
1718 target_link_libraries(Libbacktrace ${OS_LIBS})
1719 target_link_libraries(ReactorLLVM Libbacktrace)
1720 endif(REACTOR_EMIT_DEBUG_INFO)
1721
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001722 set(Reactor ReactorLLVM)
1723elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
1724 set(Reactor ReactorSubzero)
1725else()
1726 message(FATAL_ERROR "REACTOR_BACKEND must be 'LLVM' or 'Subzero'")
1727endif()
Corentin Wallez0866b292015-12-09 13:49:40 -05001728
Corentin Wallez0866b292015-12-09 13:49:40 -05001729add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
1730set_target_properties(GLCompiler PROPERTIES
1731 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
1732 POSITION_INDEPENDENT_CODE 1
1733 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001734 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Corentin Wallez0866b292015-12-09 13:49:40 -05001735)
1736target_link_libraries(GLCompiler ${OS_LIBS})
1737
Nicolas Capens6f422092015-12-23 15:12:45 -05001738if(CMAKE_SIZEOF_VOID_P EQUAL 8)
1739 set(LIB_PREFIX "lib64")
1740else()
1741 set(LIB_PREFIX "lib")
1742endif()
1743
Corentin Wallez0866b292015-12-09 13:49:40 -05001744if(BUILD_EGL)
1745 add_library(libEGL SHARED ${EGL_LIST})
1746 set_target_properties(libEGL PROPERTIES
1747 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
1748 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001749 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Antonio Maioranob0a68ed2019-04-26 15:34:22 -04001750 COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
Corentin Wallez0866b292015-12-09 13:49:40 -05001751 PREFIX ""
1752 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001753 if (ANDROID)
1754 set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
1755 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04001756 set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
Corentin Wallez0866b292015-12-09 13:49:40 -05001757 target_link_libraries(libEGL ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05001758 add_custom_command(
1759 TARGET libEGL
1760 POST_BUILD
1761 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
1762 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 -04001763 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
1764 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Nicolas Capens6f422092015-12-23 15:12:45 -05001765 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001766endif()
1767
Corentin Wallez0866b292015-12-09 13:49:40 -05001768if(BUILD_GLESv2)
1769 add_library(libGLESv2 SHARED ${GLES2_LIST})
1770 set_target_properties(libGLESv2 PROPERTIES
1771 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
1772 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001773 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens8e6ed2e2018-05-31 16:21:02 -04001774 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001775 PREFIX ""
1776 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001777 if (ANDROID)
1778 set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
1779 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04001780 set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001781 target_link_libraries(libGLESv2 SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05001782 add_custom_command(
1783 TARGET libGLESv2
1784 POST_BUILD
1785 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
1786 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 -04001787 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
1788 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Nicolas Capens6f422092015-12-23 15:12:45 -05001789 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001790endif()
1791
1792if(BUILD_GLES_CM)
1793 add_library(libGLES_CM SHARED ${GLES_CM_LIST})
1794 set_target_properties(libGLES_CM PROPERTIES
1795 INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
1796 FOLDER "OpenGL"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001797 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens8e6ed2e2018-05-31 16:21:02 -04001798 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
Corentin Wallez0866b292015-12-09 13:49:40 -05001799 PREFIX ""
1800 )
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001801 if (ANDROID)
1802 set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
1803 endif ()
Nicolas Capens499bb762018-06-29 13:30:57 -04001804 set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001805 target_link_libraries(libGLES_CM SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
Nicolas Capens6f422092015-12-23 15:12:45 -05001806 add_custom_command(
1807 TARGET libGLES_CM
1808 POST_BUILD
1809 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
1810 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
1811 )
Corentin Wallez0866b292015-12-09 13:49:40 -05001812endif()
1813
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001814if(BUILD_VULKAN)
Dan Sinclair6480d4e2019-03-11 10:48:19 -04001815 if (NOT TARGET SPIRV-Tools)
1816 # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
1817 set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
1818 list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
Nicolas Capens4e9f5772019-01-31 15:17:13 -05001819
Dan Sinclair6480d4e2019-03-11 10:48:19 -04001820 add_subdirectory(third_party/SPIRV-Tools)
1821 endif()
Nicolas Capens4c9f04b2019-01-31 22:09:03 -05001822
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001823 add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
1824 set_target_properties(libvk_swiftshader PROPERTIES
1825 INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
1826 FOLDER "Vulkan"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001827 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Antonio Maioranob0a68ed2019-04-26 15:34:22 -04001828 COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001829 PREFIX ""
1830 )
1831 set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
Nicolas Capensa69ca602019-02-04 16:23:25 -05001832 target_link_libraries(libvk_swiftshader ${Reactor} ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001833 add_custom_command(
1834 TARGET libvk_swiftshader
1835 POST_BUILD
1836 COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
1837 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04001838 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
1839 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001840 )
Ben Claytond9ce2582019-02-06 11:54:15 +00001841 configure_file(
1842 "${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
Dan Sinclair1b8cd2d2019-03-14 10:51:05 -04001843 "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
Chris Forbes3d27f2e2018-09-26 09:24:39 -07001844endif()
1845
Corentin Wallez0866b292015-12-09 13:49:40 -05001846###########################################################
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001847# Sample programs
Corentin Wallez0866b292015-12-09 13:49:40 -05001848###########################################################
1849
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001850if(BUILD_SAMPLES)
1851 if(WIN32)
1852 add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
1853 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08001854 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001855 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001856 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
1857 FOLDER "Samples"
1858 )
1859 target_link_libraries(OGLES2HelloAPI libEGL libGLESv2)
1860 set_property(TARGET OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
1861 set(CMAKE_DEFAULT_STARTUP_PROJECT OGLES2HelloAPI)
1862 elseif(LINUX)
Chinmay Garde204ec082016-08-10 17:01:21 -07001863 add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
Nicolas Capensb94a2fc2016-10-26 16:57:35 -04001864 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08001865 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001866 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capensb94a2fc2016-10-26 16:57:35 -04001867 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
1868 )
Nicolas Capensf53adbd2017-01-06 12:47:46 -05001869 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 -07001870 elseif(APPLE)
1871 add_executable(OGLES2HelloAPI MACOSX_BUNDLE
1872 ${HELLO2_DIR}/OGLES2HelloAPI_OSX.mm
1873 ${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib
1874 )
1875 set_target_properties(OGLES2HelloAPI PROPERTIES
Erwin Jansend46faeb2018-11-19 16:01:37 -08001876 INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001877 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};-Wno-deprecated-declarations" # 'NSTitledWindowMask', 'NSClosableWindowMask' is deprecated
Chinmay Garde204ec082016-08-10 17:01:21 -07001878 COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
1879 MACOSX_BUNDLE_INFO_PLIST "${HELLO2_DIR}/Build/OSX/Info.plist"
1880 )
1881 target_link_libraries(OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS})
1882 set_source_files_properties(${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib PROPERTIES
1883 MACOSX_PACKAGE_LOCATION "Resources"
1884 )
1885 endif()
Corentin Wallez0866b292015-12-09 13:49:40 -05001886endif()
Nicolas Capens16594842017-04-26 10:01:37 -04001887
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001888if(BUILD_TESTS)
1889 set(REACTOR_UNIT_TESTS_LIST
1890 ${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
Erwin Jansend46faeb2018-11-19 16:01:37 -08001891 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
Nicolas Capens16594842017-04-26 10:01:37 -04001892 )
1893
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001894 set(REACTOR_UNIT_TESTS_INCLUDE_DIR
Erwin Jansend46faeb2018-11-19 16:01:37 -08001895 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include
1896 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
Nicolas Capens16594842017-04-26 10:01:37 -04001897 )
1898
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001899 add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
1900 set_target_properties(ReactorUnitTests PROPERTIES
1901 INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001902 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens16594842017-04-26 10:01:37 -04001903 FOLDER "Tests"
1904 )
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001905
1906 if(NOT WIN32 AND ${REACTOR_BACKEND} STREQUAL "Subzero")
1907 target_link_libraries(ReactorUnitTests ${Reactor} pthread dl)
Nicolas Capens16594842017-04-26 10:01:37 -04001908 else()
Nicolas Capensc07dc4b2018-08-06 14:20:45 -04001909 target_link_libraries(ReactorUnitTests ${Reactor})
Nicolas Capens16594842017-04-26 10:01:37 -04001910 endif()
1911endif()
Nicolas Capens39760e12018-06-04 15:55:45 -04001912
1913if(BUILD_TESTS)
Ben Claytoneba396c2019-04-07 12:42:43 +01001914 set(GLES_UNITTESTS_LIST
Erwin Jansend46faeb2018-11-19 16:01:37 -08001915 ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
1916 ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
1917 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
Nicolas Capens39760e12018-06-04 15:55:45 -04001918 )
1919
Ben Claytoneba396c2019-04-07 12:42:43 +01001920 set(GLES_UNITTESTS_INCLUDE_DIR
Erwin Jansend46faeb2018-11-19 16:01:37 -08001921 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
1922 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
1923 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
1924 ${CMAKE_CURRENT_SOURCE_DIR}/include/
Nicolas Capens39760e12018-06-04 15:55:45 -04001925 )
1926
Ben Claytoneba396c2019-04-07 12:42:43 +01001927 add_executable(gles-unittests ${GLES_UNITTESTS_LIST})
1928 set_target_properties(gles-unittests PROPERTIES
1929 INCLUDE_DIRECTORIES "${GLES_UNITTESTS_INCLUDE_DIR}"
Nicolas Capens39760e12018-06-04 15:55:45 -04001930 FOLDER "Tests"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001931 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Nicolas Capens39760e12018-06-04 15:55:45 -04001932 COMPILE_DEFINITIONS "STANDALONE"
1933 )
1934
Ben Claytoneba396c2019-04-07 12:42:43 +01001935 target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS})
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001936 if(ANDROID)
Ben Claytoneba396c2019-04-07 12:42:43 +01001937 target_link_libraries(gles-unittests -landroid)
Stephen Whitee6ab01f2019-04-04 14:31:25 -04001938 endif()
Nicolas Capens39760e12018-06-04 15:55:45 -04001939endif()
Ben Clayton654540e2019-02-01 13:08:23 +00001940
1941if(BUILD_TESTS AND BUILD_VULKAN)
Ben Claytoneba396c2019-04-07 12:42:43 +01001942 set(VK_UNITTESTS_LIST
Ben Claytonabb57852019-03-01 14:33:35 +00001943 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Device.cpp
Ben Clayton654540e2019-02-01 13:08:23 +00001944 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
1945 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
1946 ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
1947 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
1948 )
1949
Ben Claytoneba396c2019-04-07 12:42:43 +01001950 set(VK_UNITTESTS_INCLUDE_DIR
Ben Clayton654540e2019-02-01 13:08:23 +00001951 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
1952 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
1953 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
Ben Claytonabb57852019-03-01 14:33:35 +00001954 ${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Tools/include
Ben Clayton654540e2019-02-01 13:08:23 +00001955 ${CMAKE_CURRENT_SOURCE_DIR}/include/
1956 )
1957
Ben Claytoneba396c2019-04-07 12:42:43 +01001958 add_executable(vk-unittests ${VK_UNITTESTS_LIST})
Ben Clayton654540e2019-02-01 13:08:23 +00001959 set_target_properties(vk-unittests PROPERTIES
Ben Claytoneba396c2019-04-07 12:42:43 +01001960 INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
Ben Clayton654540e2019-02-01 13:08:23 +00001961 FOLDER "Tests"
Ben Clayton4ceb77d2019-04-24 12:09:59 +01001962 COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
Ben Clayton654540e2019-02-01 13:08:23 +00001963 COMPILE_DEFINITIONS "STANDALONE"
1964 )
1965
Ben Claytonabb57852019-03-01 14:33:35 +00001966 target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools)
Ben Clayton654540e2019-02-01 13:08:23 +00001967endif()