CMakeLists.txt 94 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157
  1. cmake_minimum_required(VERSION 2.8)
  2. project(SwiftShader C CXX)
  3. # On Windows we use custom solution and project files, except for certain third-
  4. # party projects which use CMake-generated ones. They are manually (re)generated
  5. # and made path relative using build/cmake.sh, so they can be checked into the
  6. # repository. Therefore they should not be auto-regenerated and left using
  7. # absolute paths by CMake's ZERO_CHECK.
  8. if(WIN32)
  9. # Disable automatically regenerating project files on CMakeLists.txt changes.
  10. set(CMAKE_SUPPRESS_REGENERATION true)
  11. endif()
  12. ###########################################################
  13. # Detect system
  14. ###########################################################
  15. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  16. set(LINUX ON)
  17. elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
  18. set(ANDROID ON)
  19. set(CMAKE_CXX_FLAGS "-DANDROID_NDK_BUILD")
  20. elseif(WIN32)
  21. elseif(APPLE)
  22. else()
  23. message(FATAL_ERROR "Platform is not supported")
  24. endif()
  25. if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch")
  26. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  27. set(ARCH "aarch64")
  28. else()
  29. set(ARCH "arm")
  30. endif()
  31. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips*")
  32. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  33. set(ARCH "mips64el")
  34. else()
  35. set(ARCH "mipsel")
  36. endif()
  37. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc*")
  38. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  39. set(ARCH "ppc64le")
  40. else()
  41. message(FATAL_ERROR "Architecture is not supported")
  42. endif()
  43. else()
  44. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  45. set(ARCH "x86_64")
  46. else()
  47. set(ARCH "x86")
  48. endif()
  49. endif()
  50. set(CMAKE_MACOSX_RPATH ON)
  51. if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (CMAKE_GENERATOR_TOOLSET STREQUAL ""))
  52. message(WARNING "Visual Studio generators use the x86 host compiler by "
  53. "default, even for 64-bit targets. This can result in linker "
  54. "instability and out of memory errors. To use the 64-bit "
  55. "host compiler, pass -Thost=x64 on the CMake command line.")
  56. endif()
  57. # Use CCache if available
  58. find_program(CCACHE_FOUND ccache)
  59. if(CCACHE_FOUND)
  60. message(STATUS "Using ccache")
  61. set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
  62. set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
  63. endif(CCACHE_FOUND)
  64. ###########################################################
  65. # Options
  66. ###########################################################
  67. if(NOT CMAKE_BUILD_TYPE)
  68. set(CMAKE_BUILD_TYPE "Release" CACHE STRING "The type of build: Debug Release MinSizeRel RelWithDebInfo." FORCE)
  69. endif()
  70. set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release MinSizeRel RelWithDebInfo)
  71. option(BUILD_EGL "Build the EGL library" 1)
  72. option(BUILD_GLESv2 "Build the OpenGL ES 2 library" 1)
  73. option(BUILD_GLES_CM "Build the OpenGL ES 1.1 library" 1)
  74. option(BUILD_VULKAN "Build the Vulkan library" 1)
  75. option(USE_GROUP_SOURCES "Group the source files in a folder tree for Visual Studio" 1)
  76. option(BUILD_SAMPLES "Build sample programs" 1)
  77. option(BUILD_TESTS "Build test programs" 1)
  78. option(MSAN "Build with memory sanitizer" 0)
  79. option(ASAN "Build with address sanitizer" 0)
  80. option(TSAN "Build with thread sanitizer" 0)
  81. option(UBSAN "Build with undefined behavior sanitizer" 0)
  82. option(WARNINGS_AS_ERRORS "Treat all warnings as errors" 1)
  83. option(DCHECK_ALWAYS_ON "Check validation macros even in release builds" 0)
  84. option(REACTOR_EMIT_DEBUG_INFO "Emit debug info for JIT functions" 0)
  85. option(REACTOR_EMIT_PRINT_LOCATION "Emit printing of location info for JIT functions" 0)
  86. option(REACTOR_VERIFY_LLVM_IR "Check reactor-generated LLVM IR is valid even in release builds" 0)
  87. if(ARCH STREQUAL "arm")
  88. set(DEFAULT_REACTOR_BACKEND "Subzero")
  89. else()
  90. set(DEFAULT_REACTOR_BACKEND "LLVM")
  91. endif()
  92. set(REACTOR_BACKEND ${DEFAULT_REACTOR_BACKEND} CACHE STRING "JIT compiler back-end used by Reactor")
  93. set_property(CACHE REACTOR_BACKEND PROPERTY STRINGS LLVM Subzero)
  94. # LLVM disallows calling cmake . from the main LLVM dir, the reason is that
  95. # it builds header files that could overwrite the orignal ones. Here we
  96. # want to include LLVM as a subdirectory and even though it wouldn't cause
  97. # the problem, if cmake . is called from the main dir, the condition that
  98. # LLVM checkes, "CMAKE_CURRENT_SOURCE_DIR == CMAKE_CURRENT_BINARY_DIR" will be true. So we
  99. # disallow it ourselves too to. In addition if there are remining CMakeFiles
  100. # and CMakeCache in the directory, cmake .. from a subdirectory will still
  101. # try to build from the main directory so we instruct users to delete these
  102. # files when they get the error.
  103. if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
  104. 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.")
  105. endif()
  106. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  107. ###########################################################
  108. # Initialize submodules
  109. ###########################################################
  110. if (NOT TARGET gtest)
  111. if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/.git)
  112. message(WARNING "
  113. third_party/googletest submodule missing.
  114. Running 'git submodule update --init' to download it:
  115. ")
  116. execute_process(COMMAND git submodule update --init)
  117. endif()
  118. endif()
  119. if (NOT TARGET libbacktrace)
  120. if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src/.git)
  121. message(WARNING "
  122. third_party/libbacktrace/src submodule missing.
  123. Running 'git submodule update --init' to download it:
  124. ")
  125. execute_process(COMMAND git submodule update --init)
  126. endif()
  127. endif()
  128. # Boost is downloaded if necessary
  129. # From https://www.boost.org/users/download/
  130. set(BOOST_VER 1.70.0)
  131. set(BOOST_HASH_TARGZ "882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9")
  132. set(BOOST_HASH_ZIP "48f379b2e90dd1084429aae87d6bdbde9670139fa7569ee856c8c86dd366039d")
  133. string(REPLACE "." "_" BOOST_VER_FNAME ${BOOST_VER})
  134. set(BOOST_THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_${BOOST_VER_FNAME})
  135. function(DownloadBoost)
  136. if (LINUX)
  137. set(BOOST_EXT "tar.gz")
  138. set(BOOST_HASH ${BOOST_HASH_TARGZ})
  139. else()
  140. set(BOOST_EXT "zip")
  141. set(BOOST_HASH ${BOOST_HASH_ZIP})
  142. endif()
  143. # Note: bintray.com has rate limiting, so use the sourceforge mirror
  144. # set(BOOST_URL https://dl.bintray.com/boostorg/release/${BOOST_VER}/source/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
  145. set(BOOST_URL https://iweb.dl.sourceforge.net/project/boost/boost/${BOOST_VER}/boost_${BOOST_VER_FNAME}.${BOOST_EXT})
  146. if (NOT TARGET Boost::boost)
  147. if(NOT EXISTS ${BOOST_THIRD_PARTY_DIR})
  148. message(WARNING "
  149. third_party/boost is missing.
  150. Downloading and extracting boost:
  151. ")
  152. set(BOOST_ARCHIVE ${CMAKE_BINARY_DIR}/temp/boost_archive)
  153. message(STATUS "Downloading ${BOOST_URL} to ${BOOST_ARCHIVE}...")
  154. file(DOWNLOAD ${BOOST_URL} ${BOOST_ARCHIVE} EXPECTED_HASH SHA256=${BOOST_HASH})
  155. message(STATUS "Extracting ${BOOST_ARCHIVE} to ${BOOST_THIRD_PARTY_DIR}...")
  156. execute_process(
  157. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party
  158. COMMAND cmake -E tar xf ${BOOST_ARCHIVE}
  159. )
  160. endif()
  161. endif()
  162. endfunction()
  163. ###########################################################
  164. # Convenience macros
  165. ###########################################################
  166. # Recursively calls source_group on the files of the directory
  167. # so that Visual Studio has the files in a folder tree
  168. macro(group_all_sources directory)
  169. file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${directory} ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/*)
  170. foreach(file ${files})
  171. if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
  172. group_all_sources(${directory}/${file})
  173. else()
  174. string(REPLACE "/" "\\" groupname ${directory})
  175. source_group(${groupname} FILES ${CMAKE_CURRENT_SOURCE_DIR}/${directory}/${file})
  176. endif()
  177. endforeach()
  178. endmacro()
  179. # Takes target library and a directory where the export map is
  180. # and add the linker options so that only the API symbols are
  181. # exported.
  182. macro(set_shared_library_export_map TARGET DIR)
  183. if(MSVC)
  184. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:\"${DIR}/${TARGET}.def\"")
  185. elseif(APPLE)
  186. # The exported symbols list only exports the API functions and
  187. # hides all the others.
  188. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS "-exported_symbols_list ${DIR}/${TARGET}.exports")
  189. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.exports;")
  190. # Don't allow undefined symbols, unless it's a Sanitizer build.
  191. if(NOT MSAN AND NOT ASAN AND NOT TSAN AND NOT UBSAN)
  192. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-undefined,error")
  193. endif()
  194. elseif(LINUX)
  195. # The version script only exports the API functions and
  196. # hides all the others.
  197. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${DIR}/${TARGET}.lds")
  198. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_DEPENDS "${DIR}/${TARGET}.lds;")
  199. # Don't allow symbols to be overridden by another module.
  200. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY COMPILE_FLAGS " -fvisibility=protected")
  201. if(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
  202. # MIPS supports sysv hash-style only.
  203. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=sysv")
  204. else()
  205. # Both hash-style are needed, because we want both gold and
  206. # GNU ld to be able to read our libraries.
  207. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--hash-style=both")
  208. endif()
  209. # Gc sections is used in combination with each functions being
  210. # in its own section, to reduce the binary size.
  211. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--gc-sections")
  212. # Don't allow undefined symbols, unless it's a Sanitizer build.
  213. if(NOT MSAN AND NOT ASAN AND NOT TSAN AND NOT UBSAN)
  214. set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-undefined")
  215. endif()
  216. endif()
  217. endmacro()
  218. if(USE_GROUP_SOURCES)
  219. group_all_sources(src)
  220. endif()
  221. ###########################################################
  222. # Directories
  223. ###########################################################
  224. set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
  225. set(OPENGL_DIR ${SOURCE_DIR}/OpenGL)
  226. set(OPENGL_COMPILER_DIR ${OPENGL_DIR}/compiler)
  227. set(VULKAN_DIR ${SOURCE_DIR}/Vulkan)
  228. set(LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/llvm)
  229. set(LLVM_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-7.0/configs)
  230. set(LIBBACKTRACE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
  231. set(LIBBACKTRACE_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/config)
  232. set(LIBBACKTRACE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libbacktrace/src)
  233. set(SUBZERO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/subzero)
  234. set(SUBZERO_LLVM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-subzero)
  235. set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
  236. set(HELLO2_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
  237. ###########################################################
  238. # Compile flags
  239. ###########################################################
  240. # Flags for project code (non 3rd party)
  241. set(SWIFTSHADER_COMPILE_OPTIONS "")
  242. macro(set_cpp_flag FLAG)
  243. if(${ARGC} GREATER 1)
  244. set(CMAKE_CXX_FLAGS_${ARGV1} "${CMAKE_CXX_FLAGS_${ARGV1}} ${FLAG}")
  245. else()
  246. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
  247. endif()
  248. endmacro()
  249. macro(set_linker_flag FLAG)
  250. if(${ARGC} GREATER 1)
  251. set(CMAKE_EXE_LINKER_FLAGS ${ARGV1} "${CMAKE_EXE_LINKER_FLAGS ${ARGV1}} ${FLAG}")
  252. else()
  253. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}")
  254. endif()
  255. endmacro()
  256. if(MSVC)
  257. set_cpp_flag("/MP")
  258. add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  259. add_definitions(-D_SCL_SECURE_NO_WARNINGS)
  260. add_definitions(-D_SBCS) # Single Byte Character Set (ASCII)
  261. if(WARNINGS_AS_ERRORS)
  262. set_cpp_flag("/WX") # Treat all warnings as errors
  263. endif()
  264. # Disable specific warnings
  265. # TODO: Not all of these should be disabled, but for now, we want a warning-free msvc build. Remove these one by one
  266. # and fix the actual warnings in code.
  267. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  268. "/wd4005" # 'identifier' : macro redefinition
  269. "/wd4018" # 'expression' : signed/unsigned mismatch
  270. "/wd4065" # switch statement contains 'default' but no 'case' labels
  271. "/wd4141" # 'modifier' : used more than once
  272. "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
  273. "/wd4244" # 'conversion' conversion from 'type1' to 'type2', possible loss of data
  274. "/wd4267" # 'var' : conversion from 'size_t' to 'type', possible loss of data
  275. "/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
  276. "/wd4309" # 'conversion' : truncation of constant value
  277. "/wd4624" # 'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted
  278. "/wd4800" # 'type' : forcing value to bool 'true' or 'false' (performance warning)
  279. "/wd4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
  280. "/wd5030" # attribute 'attribute' is not recognized
  281. "/wd5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
  282. )
  283. # Treat specific warnings as errors
  284. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  285. "/we4018" # 'expression' : signed/unsigned mismatch
  286. "/we4471" # 'enumeration': a forward declaration of an unscoped enumeration must have an underlying type (int assumed)
  287. "/we4838" # conversion from 'type_1' to 'type_2' requires a narrowing conversion
  288. "/we5038" # data member 'member1' will be initialized after data member 'member2' data member 'member' will be initialized after base class 'base_class'
  289. )
  290. else()
  291. set_cpp_flag("--std=c++11")
  292. set_cpp_flag("-fno-exceptions")
  293. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  294. "-Wall"
  295. "-Wreorder"
  296. "-Wsign-compare"
  297. "-Wmissing-braces"
  298. )
  299. if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  300. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  301. "-Wunused-lambda-capture"
  302. "-Wstring-conversion"
  303. "-Wextra-semi"
  304. "-Wignored-qualifiers"
  305. # Silence errors caused by unknown warnings when building with older
  306. # versions of Clang. This demands checking that warnings added above
  307. # are spelled correctly and work as intended!
  308. "-Wno-unknown-warning-option"
  309. )
  310. endif()
  311. # Remove xor, and, or and friends from the list of keywords, they are used
  312. # by Reactor
  313. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  314. "-fno-operator-names"
  315. )
  316. # LLVM headers requires these flags to be set
  317. set_cpp_flag("-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
  318. if(ARCH STREQUAL "x86")
  319. set_cpp_flag("-m32")
  320. set_cpp_flag("-msse2")
  321. set_cpp_flag("-mfpmath=sse")
  322. set_cpp_flag("-march=pentium4")
  323. set_cpp_flag("-mtune=generic")
  324. endif()
  325. if(ARCH STREQUAL "x86_64")
  326. set_cpp_flag("-m64")
  327. set_cpp_flag("-fPIC")
  328. set_cpp_flag("-march=x86-64")
  329. set_cpp_flag("-mtune=generic")
  330. endif()
  331. if(ARCH STREQUAL "mipsel")
  332. set_cpp_flag("-march=mips32r2")
  333. set_cpp_flag("-fPIC")
  334. set_cpp_flag("-mhard-float")
  335. set_cpp_flag("-mfp32")
  336. endif()
  337. if(ARCH STREQUAL "mips64el")
  338. set_cpp_flag("-march=mips64r2")
  339. set_cpp_flag("-mabi=64")
  340. set_cpp_flag("-fPIC")
  341. endif()
  342. if(WIN32)
  343. set_cpp_flag("-DVK_USE_PLATFORM_WIN32_KHR")
  344. elseif(LINUX)
  345. set_cpp_flag("-DUSE_X11=1")
  346. set_cpp_flag("-DVK_USE_PLATFORM_XLIB_KHR")
  347. elseif(APPLE)
  348. set_cpp_flag("-DVK_USE_PLATFORM_MACOS_MVK")
  349. endif()
  350. # Use -g3 to have even more debug info
  351. set_cpp_flag("-g -g3" DEBUG)
  352. set_cpp_flag("-g -g3" RELWITHDEBINFO)
  353. if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  354. # Treated as an unused argument with clang
  355. set_cpp_flag("-s" RELEASE)
  356. endif()
  357. if(WARNINGS_AS_ERRORS)
  358. set_cpp_flag("-Werror") # Treat all warnings as errors
  359. endif()
  360. if(DCHECK_ALWAYS_ON)
  361. list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DDCHECK_ALWAYS_ON")
  362. endif()
  363. # Disable pedanitc warnings
  364. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  365. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  366. "-Wno-ignored-attributes" # ignoring attributes on template argument 'X'
  367. "-Wno-attributes" # 'X' attribute ignored
  368. "-Wno-strict-aliasing" # dereferencing type-punned pointer will break strict-aliasing rules
  369. "-Wno-comment" # multi-line comment
  370. )
  371. elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  372. list(APPEND SWIFTSHADER_COMPILE_OPTIONS
  373. "-Wno-unneeded-internal-declaration" # function 'X' is not needed and will not be emitted
  374. "-Wno-unused-private-field" # private field 'offset' is not used - TODO: Consider enabling this once Vulkan is further implemented.
  375. "-Wno-comment" # multi-line comment
  376. "-Wno-undefined-var-template" # instantiation of variable 'X' required here, but no definition is available
  377. )
  378. endif()
  379. # For distribution it is more important to be slim than super optimized
  380. set_cpp_flag("-Os" RELEASE)
  381. set_cpp_flag("-Os" RELWITHDEBINFO)
  382. set_cpp_flag("-DNDEBUG" RELEASE)
  383. set_cpp_flag("-DNDEBUG" RELWITHDEBINFO)
  384. set_cpp_flag("-DANGLE_DISABLE_TRACE" RELEASE)
  385. set_cpp_flag("-DANGLE_DISABLE_TRACE" RELWITHDEBINFO)
  386. # Put each variable and function in its own section so that when linking
  387. # with -gc-sections unused functions and variables are removed.
  388. set_cpp_flag("-ffunction-sections" RELEASE)
  389. set_cpp_flag("-fdata-sections" RELEASE)
  390. set_cpp_flag("-fomit-frame-pointer" RELEASE)
  391. if(MSAN)
  392. set_cpp_flag("-fsanitize=memory")
  393. set_linker_flag("-fsanitize=memory")
  394. elseif(ASAN)
  395. set_cpp_flag("-fsanitize=address")
  396. set_linker_flag("-fsanitize=address")
  397. elseif(TSAN)
  398. set_cpp_flag("-fsanitize=thread")
  399. set_linker_flag("-fsanitize=thread")
  400. elseif(UBSAN)
  401. set_cpp_flag("-fsanitize=undefined")
  402. set_linker_flag("-fsanitize=undefined")
  403. endif()
  404. endif()
  405. if(REACTOR_EMIT_PRINT_LOCATION)
  406. # This feature depends on REACTOR_EMIT_DEBUG_INFO, so enable it
  407. set(REACTOR_EMIT_DEBUG_INFO "On")
  408. list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_EMIT_PRINT_LOCATION")
  409. endif()
  410. if(REACTOR_EMIT_DEBUG_INFO)
  411. message(WARNING "REACTOR_EMIT_DEBUG_INFO is enabled. This will likely affect performance.")
  412. list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_DEBUG_INFO")
  413. endif()
  414. if(REACTOR_VERIFY_LLVM_IR)
  415. list(APPEND SWIFTSHADER_COMPILE_OPTIONS "-DENABLE_RR_LLVM_IR_VERIFICATION")
  416. endif()
  417. if(WIN32)
  418. add_definitions(-DWINVER=0x501 -DNOMINMAX -DSTRICT)
  419. set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "" "lib")
  420. endif()
  421. ###########################################################
  422. # LLVM
  423. ###########################################################
  424. set(LLVM_LIST
  425. ${LLVM_DIR}/lib/Analysis/AliasAnalysis.cpp
  426. ${LLVM_DIR}/lib/Analysis/AliasAnalysisSummary.cpp
  427. ${LLVM_DIR}/lib/Analysis/AliasSetTracker.cpp
  428. ${LLVM_DIR}/lib/Analysis/AssumptionCache.cpp
  429. ${LLVM_DIR}/lib/Analysis/BasicAliasAnalysis.cpp
  430. ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfo.cpp
  431. ${LLVM_DIR}/lib/Analysis/BlockFrequencyInfoImpl.cpp
  432. ${LLVM_DIR}/lib/Analysis/BranchProbabilityInfo.cpp
  433. ${LLVM_DIR}/lib/Analysis/CallGraph.cpp
  434. ${LLVM_DIR}/lib/Analysis/CallGraphSCCPass.cpp
  435. ${LLVM_DIR}/lib/Analysis/CaptureTracking.cpp
  436. ${LLVM_DIR}/lib/Analysis/CFG.cpp
  437. ${LLVM_DIR}/lib/Analysis/CFLAndersAliasAnalysis.cpp
  438. ${LLVM_DIR}/lib/Analysis/CFLSteensAliasAnalysis.cpp
  439. ${LLVM_DIR}/lib/Analysis/CmpInstAnalysis.cpp
  440. ${LLVM_DIR}/lib/Analysis/CodeMetrics.cpp
  441. ${LLVM_DIR}/lib/Analysis/ConstantFolding.cpp
  442. ${LLVM_DIR}/lib/Analysis/DemandedBits.cpp
  443. ${LLVM_DIR}/lib/Analysis/DependenceAnalysis.cpp
  444. ${LLVM_DIR}/lib/Analysis/DivergenceAnalysis.cpp
  445. ${LLVM_DIR}/lib/Analysis/DominanceFrontier.cpp
  446. ${LLVM_DIR}/lib/Analysis/EHPersonalities.cpp
  447. ${LLVM_DIR}/lib/Analysis/GlobalsModRef.cpp
  448. ${LLVM_DIR}/lib/Analysis/InlineCost.cpp
  449. ${LLVM_DIR}/lib/Analysis/InstructionSimplify.cpp
  450. ${LLVM_DIR}/lib/Analysis/IteratedDominanceFrontier.cpp
  451. ${LLVM_DIR}/lib/Analysis/IVUsers.cpp
  452. ${LLVM_DIR}/lib/Analysis/LazyBlockFrequencyInfo.cpp
  453. ${LLVM_DIR}/lib/Analysis/LazyBranchProbabilityInfo.cpp
  454. ${LLVM_DIR}/lib/Analysis/LazyValueInfo.cpp
  455. ${LLVM_DIR}/lib/Analysis/Loads.cpp
  456. ${LLVM_DIR}/lib/Analysis/LoopAnalysisManager.cpp
  457. ${LLVM_DIR}/lib/Analysis/LoopInfo.cpp
  458. ${LLVM_DIR}/lib/Analysis/LoopPass.cpp
  459. ${LLVM_DIR}/lib/Analysis/MemoryBuiltins.cpp
  460. ${LLVM_DIR}/lib/Analysis/MemoryDependenceAnalysis.cpp
  461. ${LLVM_DIR}/lib/Analysis/MemoryLocation.cpp
  462. ${LLVM_DIR}/lib/Analysis/MemorySSA.cpp
  463. ${LLVM_DIR}/lib/Analysis/MemorySSAUpdater.cpp
  464. ${LLVM_DIR}/lib/Analysis/MustExecute.cpp
  465. ${LLVM_DIR}/lib/Analysis/ObjCARCAliasAnalysis.cpp
  466. ${LLVM_DIR}/lib/Analysis/ObjCARCAnalysisUtils.cpp
  467. ${LLVM_DIR}/lib/Analysis/ObjCARCInstKind.cpp
  468. ${LLVM_DIR}/lib/Analysis/OptimizationRemarkEmitter.cpp
  469. ${LLVM_DIR}/lib/Analysis/OrderedBasicBlock.cpp
  470. ${LLVM_DIR}/lib/Analysis/PHITransAddr.cpp
  471. ${LLVM_DIR}/lib/Analysis/PhiValues.cpp
  472. ${LLVM_DIR}/lib/Analysis/PostDominators.cpp
  473. ${LLVM_DIR}/lib/Analysis/ProfileSummaryInfo.cpp
  474. ${LLVM_DIR}/lib/Analysis/PtrUseVisitor.cpp
  475. ${LLVM_DIR}/lib/Analysis/ScalarEvolution.cpp
  476. ${LLVM_DIR}/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
  477. ${LLVM_DIR}/lib/Analysis/ScalarEvolutionExpander.cpp
  478. ${LLVM_DIR}/lib/Analysis/ScalarEvolutionNormalization.cpp
  479. ${LLVM_DIR}/lib/Analysis/ScopedNoAliasAA.cpp
  480. ${LLVM_DIR}/lib/Analysis/TargetLibraryInfo.cpp
  481. ${LLVM_DIR}/lib/Analysis/TargetTransformInfo.cpp
  482. ${LLVM_DIR}/lib/Analysis/TypeBasedAliasAnalysis.cpp
  483. ${LLVM_DIR}/lib/Analysis/ValueLattice.cpp
  484. ${LLVM_DIR}/lib/Analysis/ValueLatticeUtils.cpp
  485. ${LLVM_DIR}/lib/Analysis/ValueTracking.cpp
  486. ${LLVM_DIR}/lib/Analysis/VectorUtils.cpp
  487. ${LLVM_DIR}/lib/AsmParser/LLLexer.cpp
  488. ${LLVM_DIR}/lib/AsmParser/LLParser.cpp
  489. ${LLVM_DIR}/lib/AsmParser/Parser.cpp
  490. ${LLVM_DIR}/lib/BinaryFormat/Dwarf.cpp
  491. ${LLVM_DIR}/lib/BinaryFormat/Magic.cpp
  492. ${LLVM_DIR}/lib/BinaryFormat/Wasm.cpp
  493. ${LLVM_DIR}/lib/Bitcode/Reader/BitcodeReader.cpp
  494. ${LLVM_DIR}/lib/Bitcode/Reader/BitstreamReader.cpp
  495. ${LLVM_DIR}/lib/Bitcode/Reader/MetadataLoader.cpp
  496. ${LLVM_DIR}/lib/Bitcode/Reader/ValueList.cpp
  497. ${LLVM_DIR}/lib/CodeGen/AggressiveAntiDepBreaker.cpp
  498. ${LLVM_DIR}/lib/CodeGen/AllocationOrder.cpp
  499. ${LLVM_DIR}/lib/CodeGen/Analysis.cpp
  500. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AccelTable.cpp
  501. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AddressPool.cpp
  502. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/ARMException.cpp
  503. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  504. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
  505. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
  506. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  507. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp
  508. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
  509. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DebugLocStream.cpp
  510. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIE.cpp
  511. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DIEHash.cpp
  512. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
  513. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
  514. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  515. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
  516. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfFile.cpp
  517. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
  518. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  519. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/EHStreamer.cpp
  520. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinCFGuard.cpp
  521. ${LLVM_DIR}/lib/CodeGen/AsmPrinter/WinException.cpp
  522. ${LLVM_DIR}/lib/CodeGen/AtomicExpandPass.cpp
  523. ${LLVM_DIR}/lib/CodeGen/BasicTargetTransformInfo.cpp
  524. ${LLVM_DIR}/lib/CodeGen/BranchFolding.cpp
  525. ${LLVM_DIR}/lib/CodeGen/BranchRelaxation.cpp
  526. ${LLVM_DIR}/lib/CodeGen/BreakFalseDeps.cpp
  527. ${LLVM_DIR}/lib/CodeGen/CalcSpillWeights.cpp
  528. ${LLVM_DIR}/lib/CodeGen/CallingConvLower.cpp
  529. ${LLVM_DIR}/lib/CodeGen/CFIInstrInserter.cpp
  530. ${LLVM_DIR}/lib/CodeGen/CodeGen.cpp
  531. ${LLVM_DIR}/lib/CodeGen/CodeGenPrepare.cpp
  532. ${LLVM_DIR}/lib/CodeGen/CriticalAntiDepBreaker.cpp
  533. ${LLVM_DIR}/lib/CodeGen/DeadMachineInstructionElim.cpp
  534. ${LLVM_DIR}/lib/CodeGen/DetectDeadLanes.cpp
  535. ${LLVM_DIR}/lib/CodeGen/DFAPacketizer.cpp
  536. ${LLVM_DIR}/lib/CodeGen/DwarfEHPrepare.cpp
  537. ${LLVM_DIR}/lib/CodeGen/EarlyIfConversion.cpp
  538. ${LLVM_DIR}/lib/CodeGen/EdgeBundles.cpp
  539. ${LLVM_DIR}/lib/CodeGen/ExecutionDomainFix.cpp
  540. ${LLVM_DIR}/lib/CodeGen/ExpandISelPseudos.cpp
  541. ${LLVM_DIR}/lib/CodeGen/ExpandMemCmp.cpp
  542. ${LLVM_DIR}/lib/CodeGen/ExpandPostRAPseudos.cpp
  543. ${LLVM_DIR}/lib/CodeGen/ExpandReductions.cpp
  544. ${LLVM_DIR}/lib/CodeGen/FaultMaps.cpp
  545. ${LLVM_DIR}/lib/CodeGen/FEntryInserter.cpp
  546. ${LLVM_DIR}/lib/CodeGen/FuncletLayout.cpp
  547. ${LLVM_DIR}/lib/CodeGen/GCMetadata.cpp
  548. ${LLVM_DIR}/lib/CodeGen/GCMetadataPrinter.cpp
  549. ${LLVM_DIR}/lib/CodeGen/GCRootLowering.cpp
  550. ${LLVM_DIR}/lib/CodeGen/GCStrategy.cpp
  551. ${LLVM_DIR}/lib/CodeGen/GlobalISel/CallLowering.cpp
  552. ${LLVM_DIR}/lib/CodeGen/GlobalISel/GlobalISel.cpp
  553. ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelect.cpp
  554. ${LLVM_DIR}/lib/CodeGen/GlobalISel/InstructionSelector.cpp
  555. ${LLVM_DIR}/lib/CodeGen/GlobalISel/IRTranslator.cpp
  556. ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalityPredicates.cpp
  557. ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
  558. ${LLVM_DIR}/lib/CodeGen/GlobalISel/Legalizer.cpp
  559. ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
  560. ${LLVM_DIR}/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
  561. ${LLVM_DIR}/lib/CodeGen/GlobalISel/Localizer.cpp
  562. ${LLVM_DIR}/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
  563. ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegBankSelect.cpp
  564. ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBank.cpp
  565. ${LLVM_DIR}/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
  566. ${LLVM_DIR}/lib/CodeGen/GlobalISel/Utils.cpp
  567. ${LLVM_DIR}/lib/CodeGen/IfConversion.cpp
  568. ${LLVM_DIR}/lib/CodeGen/ImplicitNullChecks.cpp
  569. ${LLVM_DIR}/lib/CodeGen/IndirectBrExpandPass.cpp
  570. ${LLVM_DIR}/lib/CodeGen/InlineSpiller.cpp
  571. ${LLVM_DIR}/lib/CodeGen/InterferenceCache.cpp
  572. ${LLVM_DIR}/lib/CodeGen/InterleavedAccessPass.cpp
  573. ${LLVM_DIR}/lib/CodeGen/IntrinsicLowering.cpp
  574. ${LLVM_DIR}/lib/CodeGen/LatencyPriorityQueue.cpp
  575. ${LLVM_DIR}/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp
  576. ${LLVM_DIR}/lib/CodeGen/LexicalScopes.cpp
  577. ${LLVM_DIR}/lib/CodeGen/LiveDebugValues.cpp
  578. ${LLVM_DIR}/lib/CodeGen/LiveDebugVariables.cpp
  579. ${LLVM_DIR}/lib/CodeGen/LiveInterval.cpp
  580. ${LLVM_DIR}/lib/CodeGen/LiveIntervals.cpp
  581. ${LLVM_DIR}/lib/CodeGen/LiveIntervalUnion.cpp
  582. ${LLVM_DIR}/lib/CodeGen/LivePhysRegs.cpp
  583. ${LLVM_DIR}/lib/CodeGen/LiveRangeCalc.cpp
  584. ${LLVM_DIR}/lib/CodeGen/LiveRangeEdit.cpp
  585. ${LLVM_DIR}/lib/CodeGen/LiveRangeShrink.cpp
  586. ${LLVM_DIR}/lib/CodeGen/LiveRegMatrix.cpp
  587. ${LLVM_DIR}/lib/CodeGen/LiveRegUnits.cpp
  588. ${LLVM_DIR}/lib/CodeGen/LiveStacks.cpp
  589. ${LLVM_DIR}/lib/CodeGen/LiveVariables.cpp
  590. ${LLVM_DIR}/lib/CodeGen/LLVMTargetMachine.cpp
  591. ${LLVM_DIR}/lib/CodeGen/LocalStackSlotAllocation.cpp
  592. ${LLVM_DIR}/lib/CodeGen/LoopTraversal.cpp
  593. ${LLVM_DIR}/lib/CodeGen/LowerEmuTLS.cpp
  594. ${LLVM_DIR}/lib/CodeGen/LowLevelType.cpp
  595. ${LLVM_DIR}/lib/CodeGen/MachineBasicBlock.cpp
  596. ${LLVM_DIR}/lib/CodeGen/MachineBlockFrequencyInfo.cpp
  597. ${LLVM_DIR}/lib/CodeGen/MachineBlockPlacement.cpp
  598. ${LLVM_DIR}/lib/CodeGen/MachineBranchProbabilityInfo.cpp
  599. ${LLVM_DIR}/lib/CodeGen/MachineCombiner.cpp
  600. ${LLVM_DIR}/lib/CodeGen/MachineCopyPropagation.cpp
  601. ${LLVM_DIR}/lib/CodeGen/MachineCSE.cpp
  602. ${LLVM_DIR}/lib/CodeGen/MachineDominanceFrontier.cpp
  603. ${LLVM_DIR}/lib/CodeGen/MachineDominators.cpp
  604. ${LLVM_DIR}/lib/CodeGen/MachineFrameInfo.cpp
  605. ${LLVM_DIR}/lib/CodeGen/MachineFunction.cpp
  606. ${LLVM_DIR}/lib/CodeGen/MachineFunctionPass.cpp
  607. ${LLVM_DIR}/lib/CodeGen/MachineFunctionPrinterPass.cpp
  608. ${LLVM_DIR}/lib/CodeGen/MachineInstr.cpp
  609. ${LLVM_DIR}/lib/CodeGen/MachineInstrBundle.cpp
  610. ${LLVM_DIR}/lib/CodeGen/MachineLICM.cpp
  611. ${LLVM_DIR}/lib/CodeGen/MachineLoopInfo.cpp
  612. ${LLVM_DIR}/lib/CodeGen/MachineModuleInfo.cpp
  613. ${LLVM_DIR}/lib/CodeGen/MachineModuleInfoImpls.cpp
  614. ${LLVM_DIR}/lib/CodeGen/MachineOperand.cpp
  615. ${LLVM_DIR}/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
  616. ${LLVM_DIR}/lib/CodeGen/MachineOutliner.cpp
  617. ${LLVM_DIR}/lib/CodeGen/MachinePassRegistry.cpp
  618. ${LLVM_DIR}/lib/CodeGen/MachinePipeliner.cpp
  619. ${LLVM_DIR}/lib/CodeGen/MachinePostDominators.cpp
  620. ${LLVM_DIR}/lib/CodeGen/MachineRegionInfo.cpp
  621. ${LLVM_DIR}/lib/CodeGen/MachineRegisterInfo.cpp
  622. ${LLVM_DIR}/lib/CodeGen/MachineScheduler.cpp
  623. ${LLVM_DIR}/lib/CodeGen/MachineSink.cpp
  624. ${LLVM_DIR}/lib/CodeGen/MachineSSAUpdater.cpp
  625. ${LLVM_DIR}/lib/CodeGen/MachineTraceMetrics.cpp
  626. ${LLVM_DIR}/lib/CodeGen/MachineVerifier.cpp
  627. ${LLVM_DIR}/lib/CodeGen/MacroFusion.cpp
  628. ${LLVM_DIR}/lib/CodeGen/MIRCanonicalizerPass.cpp
  629. ${LLVM_DIR}/lib/CodeGen/MIRPrinter.cpp
  630. ${LLVM_DIR}/lib/CodeGen/MIRPrintingPass.cpp
  631. ${LLVM_DIR}/lib/CodeGen/OptimizePHIs.cpp
  632. ${LLVM_DIR}/lib/CodeGen/PatchableFunction.cpp
  633. ${LLVM_DIR}/lib/CodeGen/PeepholeOptimizer.cpp
  634. ${LLVM_DIR}/lib/CodeGen/PHIElimination.cpp
  635. ${LLVM_DIR}/lib/CodeGen/PHIEliminationUtils.cpp
  636. ${LLVM_DIR}/lib/CodeGen/PostRAHazardRecognizer.cpp
  637. ${LLVM_DIR}/lib/CodeGen/PostRASchedulerList.cpp
  638. ${LLVM_DIR}/lib/CodeGen/PreISelIntrinsicLowering.cpp
  639. ${LLVM_DIR}/lib/CodeGen/ProcessImplicitDefs.cpp
  640. ${LLVM_DIR}/lib/CodeGen/PrologEpilogInserter.cpp
  641. ${LLVM_DIR}/lib/CodeGen/PseudoSourceValue.cpp
  642. ${LLVM_DIR}/lib/CodeGen/ReachingDefAnalysis.cpp
  643. ${LLVM_DIR}/lib/CodeGen/RegAllocBase.cpp
  644. ${LLVM_DIR}/lib/CodeGen/RegAllocBasic.cpp
  645. ${LLVM_DIR}/lib/CodeGen/RegAllocFast.cpp
  646. ${LLVM_DIR}/lib/CodeGen/RegAllocGreedy.cpp
  647. ${LLVM_DIR}/lib/CodeGen/RegisterClassInfo.cpp
  648. ${LLVM_DIR}/lib/CodeGen/RegisterCoalescer.cpp
  649. ${LLVM_DIR}/lib/CodeGen/RegisterPressure.cpp
  650. ${LLVM_DIR}/lib/CodeGen/RegisterScavenging.cpp
  651. ${LLVM_DIR}/lib/CodeGen/RegisterUsageInfo.cpp
  652. ${LLVM_DIR}/lib/CodeGen/RegUsageInfoCollector.cpp
  653. ${LLVM_DIR}/lib/CodeGen/RegUsageInfoPropagate.cpp
  654. ${LLVM_DIR}/lib/CodeGen/RenameIndependentSubregs.cpp
  655. ${LLVM_DIR}/lib/CodeGen/ResetMachineFunctionPass.cpp
  656. ${LLVM_DIR}/lib/CodeGen/SafeStack.cpp
  657. ${LLVM_DIR}/lib/CodeGen/SafeStackColoring.cpp
  658. ${LLVM_DIR}/lib/CodeGen/SafeStackLayout.cpp
  659. ${LLVM_DIR}/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
  660. ${LLVM_DIR}/lib/CodeGen/ScheduleDAG.cpp
  661. ${LLVM_DIR}/lib/CodeGen/ScheduleDAGInstrs.cpp
  662. ${LLVM_DIR}/lib/CodeGen/ScheduleDAGPrinter.cpp
  663. ${LLVM_DIR}/lib/CodeGen/ScoreboardHazardRecognizer.cpp
  664. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  665. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FastISel.cpp
  666. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
  667. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
  668. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  669. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
  670. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  671. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
  672. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
  673. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
  674. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  675. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp
  676. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
  677. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
  678. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
  679. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  680. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
  681. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  682. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
  683. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  684. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
  685. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/SelectionDAGTargetInfo.cpp
  686. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  687. ${LLVM_DIR}/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  688. ${LLVM_DIR}/lib/CodeGen/ShadowStackGCLowering.cpp
  689. ${LLVM_DIR}/lib/CodeGen/ShrinkWrap.cpp
  690. ${LLVM_DIR}/lib/CodeGen/SjLjEHPrepare.cpp
  691. ${LLVM_DIR}/lib/CodeGen/SlotIndexes.cpp
  692. ${LLVM_DIR}/lib/CodeGen/SpillPlacement.cpp
  693. ${LLVM_DIR}/lib/CodeGen/SplitKit.cpp
  694. ${LLVM_DIR}/lib/CodeGen/StackColoring.cpp
  695. ${LLVM_DIR}/lib/CodeGen/StackMapLivenessAnalysis.cpp
  696. ${LLVM_DIR}/lib/CodeGen/StackMaps.cpp
  697. ${LLVM_DIR}/lib/CodeGen/StackProtector.cpp
  698. ${LLVM_DIR}/lib/CodeGen/StackSlotColoring.cpp
  699. ${LLVM_DIR}/lib/CodeGen/TailDuplication.cpp
  700. ${LLVM_DIR}/lib/CodeGen/TailDuplicator.cpp
  701. ${LLVM_DIR}/lib/CodeGen/TargetFrameLoweringImpl.cpp
  702. ${LLVM_DIR}/lib/CodeGen/TargetInstrInfo.cpp
  703. ${LLVM_DIR}/lib/CodeGen/TargetLoweringBase.cpp
  704. ${LLVM_DIR}/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
  705. ${LLVM_DIR}/lib/CodeGen/TargetOptionsImpl.cpp
  706. ${LLVM_DIR}/lib/CodeGen/TargetPassConfig.cpp
  707. ${LLVM_DIR}/lib/CodeGen/TargetRegisterInfo.cpp
  708. ${LLVM_DIR}/lib/CodeGen/TargetSchedule.cpp
  709. ${LLVM_DIR}/lib/CodeGen/TargetSubtargetInfo.cpp
  710. ${LLVM_DIR}/lib/CodeGen/TwoAddressInstructionPass.cpp
  711. ${LLVM_DIR}/lib/CodeGen/UnreachableBlockElim.cpp
  712. ${LLVM_DIR}/lib/CodeGen/ValueTypes.cpp
  713. ${LLVM_DIR}/lib/CodeGen/VirtRegMap.cpp
  714. ${LLVM_DIR}/lib/CodeGen/WasmEHPrepare.cpp
  715. ${LLVM_DIR}/lib/CodeGen/WinEHPrepare.cpp
  716. ${LLVM_DIR}/lib/CodeGen/XRayInstrumentation.cpp
  717. ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewError.cpp
  718. ${LLVM_DIR}/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
  719. ${LLVM_DIR}/lib/DebugInfo/CodeView/ContinuationRecordBuilder.cpp
  720. ${LLVM_DIR}/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
  721. ${LLVM_DIR}/lib/DebugInfo/CodeView/Formatters.cpp
  722. ${LLVM_DIR}/lib/DebugInfo/CodeView/GlobalTypeTableBuilder.cpp
  723. ${LLVM_DIR}/lib/DebugInfo/CodeView/Line.cpp
  724. ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordName.cpp
  725. ${LLVM_DIR}/lib/DebugInfo/CodeView/RecordSerialization.cpp
  726. ${LLVM_DIR}/lib/DebugInfo/CodeView/SimpleTypeSerializer.cpp
  727. ${LLVM_DIR}/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
  728. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
  729. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeHashing.cpp
  730. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndex.cpp
  731. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
  732. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeRecordMapping.cpp
  733. ${LLVM_DIR}/lib/DebugInfo/CodeView/TypeTableCollection.cpp
  734. ${LLVM_DIR}/lib/ExecutionEngine/ExecutionEngine.cpp
  735. ${LLVM_DIR}/lib/ExecutionEngine/GDBRegistrationListener.cpp
  736. ${LLVM_DIR}/lib/ExecutionEngine/Orc/Core.cpp
  737. ${LLVM_DIR}/lib/ExecutionEngine/Orc/Legacy.cpp
  738. ${LLVM_DIR}/lib/ExecutionEngine/Orc/OrcError.cpp
  739. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp
  740. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
  741. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
  742. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
  743. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp
  744. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
  745. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
  746. ${LLVM_DIR}/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldELFMips.cpp
  747. ${LLVM_DIR}/lib/ExecutionEngine/SectionMemoryManager.cpp
  748. ${LLVM_DIR}/lib/ExecutionEngine/TargetSelect.cpp
  749. ${LLVM_DIR}/lib/IR/AsmWriter.cpp
  750. ${LLVM_DIR}/lib/IR/Attributes.cpp
  751. ${LLVM_DIR}/lib/IR/AutoUpgrade.cpp
  752. ${LLVM_DIR}/lib/IR/BasicBlock.cpp
  753. ${LLVM_DIR}/lib/IR/Comdat.cpp
  754. ${LLVM_DIR}/lib/IR/ConstantFold.cpp
  755. ${LLVM_DIR}/lib/IR/ConstantRange.cpp
  756. ${LLVM_DIR}/lib/IR/Constants.cpp
  757. ${LLVM_DIR}/lib/IR/DataLayout.cpp
  758. ${LLVM_DIR}/lib/IR/DebugInfo.cpp
  759. ${LLVM_DIR}/lib/IR/DebugInfoMetadata.cpp
  760. ${LLVM_DIR}/lib/IR/DebugLoc.cpp
  761. ${LLVM_DIR}/lib/IR/DiagnosticHandler.cpp
  762. ${LLVM_DIR}/lib/IR/DiagnosticInfo.cpp
  763. ${LLVM_DIR}/lib/IR/DiagnosticPrinter.cpp
  764. ${LLVM_DIR}/lib/IR/DIBuilder.cpp
  765. ${LLVM_DIR}/lib/IR/Dominators.cpp
  766. ${LLVM_DIR}/lib/IR/Function.cpp
  767. ${LLVM_DIR}/lib/IR/Globals.cpp
  768. ${LLVM_DIR}/lib/IR/GVMaterializer.cpp
  769. ${LLVM_DIR}/lib/IR/InlineAsm.cpp
  770. ${LLVM_DIR}/lib/IR/Instruction.cpp
  771. ${LLVM_DIR}/lib/IR/Instructions.cpp
  772. ${LLVM_DIR}/lib/IR/IntrinsicInst.cpp
  773. ${LLVM_DIR}/lib/IR/IRBuilder.cpp
  774. ${LLVM_DIR}/lib/IR/IRPrintingPasses.cpp
  775. ${LLVM_DIR}/lib/IR/LegacyPassManager.cpp
  776. ${LLVM_DIR}/lib/IR/LLVMContext.cpp
  777. ${LLVM_DIR}/lib/IR/LLVMContextImpl.cpp
  778. ${LLVM_DIR}/lib/IR/Mangler.cpp
  779. ${LLVM_DIR}/lib/IR/MDBuilder.cpp
  780. ${LLVM_DIR}/lib/IR/Metadata.cpp
  781. ${LLVM_DIR}/lib/IR/Module.cpp
  782. ${LLVM_DIR}/lib/IR/Operator.cpp
  783. ${LLVM_DIR}/lib/IR/OptBisect.cpp
  784. ${LLVM_DIR}/lib/IR/Pass.cpp
  785. ${LLVM_DIR}/lib/IR/PassManager.cpp
  786. ${LLVM_DIR}/lib/IR/PassRegistry.cpp
  787. ${LLVM_DIR}/lib/IR/ProfileSummary.cpp
  788. ${LLVM_DIR}/lib/IR/Statepoint.cpp
  789. ${LLVM_DIR}/lib/IR/Type.cpp
  790. ${LLVM_DIR}/lib/IR/TypeFinder.cpp
  791. ${LLVM_DIR}/lib/IR/Use.cpp
  792. ${LLVM_DIR}/lib/IR/User.cpp
  793. ${LLVM_DIR}/lib/IR/Value.cpp
  794. ${LLVM_DIR}/lib/IR/ValueSymbolTable.cpp
  795. ${LLVM_DIR}/lib/IR/Verifier.cpp
  796. ${LLVM_DIR}/lib/MC/ELFObjectWriter.cpp
  797. ${LLVM_DIR}/lib/MC/MachObjectWriter.cpp
  798. ${LLVM_DIR}/lib/MC/MCAsmBackend.cpp
  799. ${LLVM_DIR}/lib/MC/MCAsmInfo.cpp
  800. ${LLVM_DIR}/lib/MC/MCAsmInfoCOFF.cpp
  801. ${LLVM_DIR}/lib/MC/MCAsmInfoDarwin.cpp
  802. ${LLVM_DIR}/lib/MC/MCAsmInfoELF.cpp
  803. ${LLVM_DIR}/lib/MC/MCAsmMacro.cpp
  804. ${LLVM_DIR}/lib/MC/MCAsmStreamer.cpp
  805. ${LLVM_DIR}/lib/MC/MCAssembler.cpp
  806. ${LLVM_DIR}/lib/MC/MCCodeEmitter.cpp
  807. ${LLVM_DIR}/lib/MC/MCCodePadder.cpp
  808. ${LLVM_DIR}/lib/MC/MCCodeView.cpp
  809. ${LLVM_DIR}/lib/MC/MCContext.cpp
  810. ${LLVM_DIR}/lib/MC/MCDisassembler/MCRelocationInfo.cpp
  811. ${LLVM_DIR}/lib/MC/MCDwarf.cpp
  812. ${LLVM_DIR}/lib/MC/MCELFObjectTargetWriter.cpp
  813. ${LLVM_DIR}/lib/MC/MCELFStreamer.cpp
  814. ${LLVM_DIR}/lib/MC/MCExpr.cpp
  815. ${LLVM_DIR}/lib/MC/MCFragment.cpp
  816. ${LLVM_DIR}/lib/MC/MCInst.cpp
  817. ${LLVM_DIR}/lib/MC/MCInstPrinter.cpp
  818. ${LLVM_DIR}/lib/MC/MCInstrAnalysis.cpp
  819. ${LLVM_DIR}/lib/MC/MCInstrDesc.cpp
  820. ${LLVM_DIR}/lib/MC/MCLinkerOptimizationHint.cpp
  821. ${LLVM_DIR}/lib/MC/MCMachObjectTargetWriter.cpp
  822. ${LLVM_DIR}/lib/MC/MCMachOStreamer.cpp
  823. ${LLVM_DIR}/lib/MC/MCNullStreamer.cpp
  824. ${LLVM_DIR}/lib/MC/MCObjectFileInfo.cpp
  825. ${LLVM_DIR}/lib/MC/MCObjectStreamer.cpp
  826. ${LLVM_DIR}/lib/MC/MCObjectWriter.cpp
  827. ${LLVM_DIR}/lib/MC/MCParser/AsmLexer.cpp
  828. ${LLVM_DIR}/lib/MC/MCParser/AsmParser.cpp
  829. ${LLVM_DIR}/lib/MC/MCParser/COFFAsmParser.cpp
  830. ${LLVM_DIR}/lib/MC/MCParser/DarwinAsmParser.cpp
  831. ${LLVM_DIR}/lib/MC/MCParser/ELFAsmParser.cpp
  832. ${LLVM_DIR}/lib/MC/MCParser/MCAsmLexer.cpp
  833. ${LLVM_DIR}/lib/MC/MCParser/MCAsmParser.cpp
  834. ${LLVM_DIR}/lib/MC/MCParser/MCAsmParserExtension.cpp
  835. ${LLVM_DIR}/lib/MC/MCParser/MCTargetAsmParser.cpp
  836. ${LLVM_DIR}/lib/MC/MCRegisterInfo.cpp
  837. ${LLVM_DIR}/lib/MC/MCSchedule.cpp
  838. ${LLVM_DIR}/lib/MC/MCSection.cpp
  839. ${LLVM_DIR}/lib/MC/MCSectionCOFF.cpp
  840. ${LLVM_DIR}/lib/MC/MCSectionELF.cpp
  841. ${LLVM_DIR}/lib/MC/MCSectionMachO.cpp
  842. ${LLVM_DIR}/lib/MC/MCSectionWasm.cpp
  843. ${LLVM_DIR}/lib/MC/MCStreamer.cpp
  844. ${LLVM_DIR}/lib/MC/MCSubtargetInfo.cpp
  845. ${LLVM_DIR}/lib/MC/MCSymbol.cpp
  846. ${LLVM_DIR}/lib/MC/MCSymbolELF.cpp
  847. ${LLVM_DIR}/lib/MC/MCTargetOptions.cpp
  848. ${LLVM_DIR}/lib/MC/MCValue.cpp
  849. ${LLVM_DIR}/lib/MC/MCWasmStreamer.cpp
  850. ${LLVM_DIR}/lib/MC/MCWin64EH.cpp
  851. ${LLVM_DIR}/lib/MC/MCWinCOFFStreamer.cpp
  852. ${LLVM_DIR}/lib/MC/MCWinEH.cpp
  853. ${LLVM_DIR}/lib/MC/StringTableBuilder.cpp
  854. ${LLVM_DIR}/lib/MC/SubtargetFeature.cpp
  855. ${LLVM_DIR}/lib/MC/WasmObjectWriter.cpp
  856. ${LLVM_DIR}/lib/MC/WinCOFFObjectWriter.cpp
  857. ${LLVM_DIR}/lib/Object/Archive.cpp
  858. ${LLVM_DIR}/lib/Object/Binary.cpp
  859. ${LLVM_DIR}/lib/Object/COFFObjectFile.cpp
  860. ${LLVM_DIR}/lib/Object/ELF.cpp
  861. ${LLVM_DIR}/lib/Object/ELFObjectFile.cpp
  862. ${LLVM_DIR}/lib/Object/Error.cpp
  863. ${LLVM_DIR}/lib/Object/IRObjectFile.cpp
  864. ${LLVM_DIR}/lib/Object/IRSymtab.cpp
  865. ${LLVM_DIR}/lib/Object/MachOObjectFile.cpp
  866. ${LLVM_DIR}/lib/Object/MachOUniversal.cpp
  867. ${LLVM_DIR}/lib/Object/ModuleSymbolTable.cpp
  868. ${LLVM_DIR}/lib/Object/ObjectFile.cpp
  869. ${LLVM_DIR}/lib/Object/RecordStreamer.cpp
  870. ${LLVM_DIR}/lib/Object/SymbolicFile.cpp
  871. ${LLVM_DIR}/lib/Object/WasmObjectFile.cpp
  872. ${LLVM_DIR}/lib/Object/WindowsResource.cpp
  873. ${LLVM_DIR}/lib/ProfileData/InstrProf.cpp
  874. ${LLVM_DIR}/lib/Support/APFloat.cpp
  875. ${LLVM_DIR}/lib/Support/APInt.cpp
  876. ${LLVM_DIR}/lib/Support/APSInt.cpp
  877. ${LLVM_DIR}/lib/Support/ARMAttributeParser.cpp
  878. ${LLVM_DIR}/lib/Support/ARMBuildAttrs.cpp
  879. ${LLVM_DIR}/lib/Support/Atomic.cpp
  880. ${LLVM_DIR}/lib/Support/BinaryStreamError.cpp
  881. ${LLVM_DIR}/lib/Support/BinaryStreamReader.cpp
  882. ${LLVM_DIR}/lib/Support/BinaryStreamRef.cpp
  883. ${LLVM_DIR}/lib/Support/BinaryStreamWriter.cpp
  884. ${LLVM_DIR}/lib/Support/BlockFrequency.cpp
  885. ${LLVM_DIR}/lib/Support/BranchProbability.cpp
  886. ${LLVM_DIR}/lib/Support/Chrono.cpp
  887. ${LLVM_DIR}/lib/Support/circular_raw_ostream.cpp
  888. ${LLVM_DIR}/lib/Support/CodeGenCoverage.cpp
  889. ${LLVM_DIR}/lib/Support/CommandLine.cpp
  890. ${LLVM_DIR}/lib/Support/Compression.cpp
  891. ${LLVM_DIR}/lib/Support/ConvertUTF.cpp
  892. ${LLVM_DIR}/lib/Support/ConvertUTFWrapper.cpp
  893. ${LLVM_DIR}/lib/Support/DataExtractor.cpp
  894. ${LLVM_DIR}/lib/Support/Debug.cpp
  895. ${LLVM_DIR}/lib/Support/DebugCounter.cpp
  896. ${LLVM_DIR}/lib/Support/DJB.cpp
  897. ${LLVM_DIR}/lib/Support/DynamicLibrary.cpp
  898. ${LLVM_DIR}/lib/Support/Errno.cpp
  899. ${LLVM_DIR}/lib/Support/Error.cpp
  900. ${LLVM_DIR}/lib/Support/ErrorHandling.cpp
  901. ${LLVM_DIR}/lib/Support/FoldingSet.cpp
  902. ${LLVM_DIR}/lib/Support/FormattedStream.cpp
  903. ${LLVM_DIR}/lib/Support/FormatVariadic.cpp
  904. ${LLVM_DIR}/lib/Support/GraphWriter.cpp
  905. ${LLVM_DIR}/lib/Support/Hashing.cpp
  906. ${LLVM_DIR}/lib/Support/Host.cpp
  907. ${LLVM_DIR}/lib/Support/IntEqClasses.cpp
  908. ${LLVM_DIR}/lib/Support/IntervalMap.cpp
  909. ${LLVM_DIR}/lib/Support/JamCRC.cpp
  910. ${LLVM_DIR}/lib/Support/KnownBits.cpp
  911. ${LLVM_DIR}/lib/Support/LEB128.cpp
  912. ${LLVM_DIR}/lib/Support/LineIterator.cpp
  913. ${LLVM_DIR}/lib/Support/Locale.cpp
  914. ${LLVM_DIR}/lib/Support/LowLevelType.cpp
  915. ${LLVM_DIR}/lib/Support/ManagedStatic.cpp
  916. ${LLVM_DIR}/lib/Support/MathExtras.cpp
  917. ${LLVM_DIR}/lib/Support/MD5.cpp
  918. ${LLVM_DIR}/lib/Support/Memory.cpp
  919. ${LLVM_DIR}/lib/Support/MemoryBuffer.cpp
  920. ${LLVM_DIR}/lib/Support/Mutex.cpp
  921. ${LLVM_DIR}/lib/Support/NativeFormatting.cpp
  922. ${LLVM_DIR}/lib/Support/Path.cpp
  923. ${LLVM_DIR}/lib/Support/PrettyStackTrace.cpp
  924. ${LLVM_DIR}/lib/Support/Process.cpp
  925. ${LLVM_DIR}/lib/Support/Program.cpp
  926. ${LLVM_DIR}/lib/Support/RandomNumberGenerator.cpp
  927. ${LLVM_DIR}/lib/Support/raw_ostream.cpp
  928. ${LLVM_DIR}/lib/Support/regcomp.c
  929. ${LLVM_DIR}/lib/Support/regerror.c
  930. ${LLVM_DIR}/lib/Support/Regex.cpp
  931. ${LLVM_DIR}/lib/Support/regexec.c
  932. ${LLVM_DIR}/lib/Support/regfree.c
  933. ${LLVM_DIR}/lib/Support/regstrlcpy.c
  934. ${LLVM_DIR}/lib/Support/RWMutex.cpp
  935. ${LLVM_DIR}/lib/Support/ScaledNumber.cpp
  936. ${LLVM_DIR}/lib/Support/ScopedPrinter.cpp
  937. ${LLVM_DIR}/lib/Support/SHA1.cpp
  938. ${LLVM_DIR}/lib/Support/Signals.cpp
  939. ${LLVM_DIR}/lib/Support/SmallPtrSet.cpp
  940. ${LLVM_DIR}/lib/Support/SmallVector.cpp
  941. ${LLVM_DIR}/lib/Support/SourceMgr.cpp
  942. ${LLVM_DIR}/lib/Support/Statistic.cpp
  943. ${LLVM_DIR}/lib/Support/StringExtras.cpp
  944. ${LLVM_DIR}/lib/Support/StringMap.cpp
  945. ${LLVM_DIR}/lib/Support/StringRef.cpp
  946. ${LLVM_DIR}/lib/Support/StringSaver.cpp
  947. ${LLVM_DIR}/lib/Support/TargetParser.cpp
  948. ${LLVM_DIR}/lib/Support/TargetRegistry.cpp
  949. ${LLVM_DIR}/lib/Support/Threading.cpp
  950. ${LLVM_DIR}/lib/Support/Timer.cpp
  951. ${LLVM_DIR}/lib/Support/ToolOutputFile.cpp
  952. ${LLVM_DIR}/lib/Support/Triple.cpp
  953. ${LLVM_DIR}/lib/Support/Twine.cpp
  954. ${LLVM_DIR}/lib/Support/Unicode.cpp
  955. ${LLVM_DIR}/lib/Support/UnicodeCaseFold.cpp
  956. ${LLVM_DIR}/lib/Support/Valgrind.cpp
  957. ${LLVM_DIR}/lib/Support/YAMLParser.cpp
  958. ${LLVM_DIR}/lib/Support/YAMLTraits.cpp
  959. ${LLVM_DIR}/lib/Target/TargetLoweringObjectFile.cpp
  960. ${LLVM_DIR}/lib/Target/TargetMachine.cpp
  961. ${LLVM_DIR}/lib/Transforms/Coroutines/CoroCleanup.cpp
  962. ${LLVM_DIR}/lib/Transforms/Coroutines/CoroEarly.cpp
  963. ${LLVM_DIR}/lib/Transforms/Coroutines/CoroElide.cpp
  964. ${LLVM_DIR}/lib/Transforms/Coroutines/CoroFrame.cpp
  965. ${LLVM_DIR}/lib/Transforms/Coroutines/CoroSplit.cpp
  966. ${LLVM_DIR}/lib/Transforms/Coroutines/Coroutines.cpp
  967. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAddSub.cpp
  968. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  969. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCalls.cpp
  970. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCasts.cpp
  971. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineCompares.cpp
  972. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  973. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  974. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombinePHI.cpp
  975. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSelect.cpp
  976. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineShifts.cpp
  977. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
  978. ${LLVM_DIR}/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
  979. ${LLVM_DIR}/lib/Transforms/InstCombine/InstructionCombining.cpp
  980. ${LLVM_DIR}/lib/Transforms/IPO/BarrierNoopPass.cpp
  981. ${LLVM_DIR}/lib/Transforms/Scalar/ADCE.cpp
  982. ${LLVM_DIR}/lib/Transforms/Scalar/ConstantHoisting.cpp
  983. ${LLVM_DIR}/lib/Transforms/Scalar/DeadStoreElimination.cpp
  984. ${LLVM_DIR}/lib/Transforms/Scalar/EarlyCSE.cpp
  985. ${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
  986. ${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
  987. ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
  988. ${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  989. ${LLVM_DIR}/lib/Transforms/Scalar/MergeICmps.cpp
  990. ${LLVM_DIR}/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp
  991. ${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
  992. ${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
  993. ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
  994. ${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
  995. ${LLVM_DIR}/lib/Transforms/Scalar/SROA.cpp
  996. ${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
  997. ${LLVM_DIR}/lib/Transforms/Utils/BreakCriticalEdges.cpp
  998. ${LLVM_DIR}/lib/Transforms/Utils/BuildLibCalls.cpp
  999. ${LLVM_DIR}/lib/Transforms/Utils/BypassSlowDivision.cpp
  1000. ${LLVM_DIR}/lib/Transforms/Utils/CloneFunction.cpp
  1001. ${LLVM_DIR}/lib/Transforms/Utils/DemoteRegToStack.cpp
  1002. ${LLVM_DIR}/lib/Transforms/Utils/EntryExitInstrumenter.cpp
  1003. ${LLVM_DIR}/lib/Transforms/Utils/EscapeEnumerator.cpp
  1004. ${LLVM_DIR}/lib/Transforms/Utils/InlineFunction.cpp
  1005. ${LLVM_DIR}/lib/Transforms/Utils/LCSSA.cpp
  1006. ${LLVM_DIR}/lib/Transforms/Utils/Local.cpp
  1007. ${LLVM_DIR}/lib/Transforms/Utils/LoopSimplify.cpp
  1008. ${LLVM_DIR}/lib/Transforms/Utils/LoopUtils.cpp
  1009. ${LLVM_DIR}/lib/Transforms/Utils/LowerInvoke.cpp
  1010. ${LLVM_DIR}/lib/Transforms/Utils/OrderedInstructions.cpp
  1011. ${LLVM_DIR}/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
  1012. ${LLVM_DIR}/lib/Transforms/Utils/SimplifyCFG.cpp
  1013. ${LLVM_DIR}/lib/Transforms/Utils/SimplifyLibCalls.cpp
  1014. ${LLVM_DIR}/lib/Transforms/Utils/SSAUpdater.cpp
  1015. ${LLVM_DIR}/lib/Transforms/Utils/SymbolRewriter.cpp
  1016. ${LLVM_DIR}/lib/Transforms/Utils/ValueMapper.cpp
  1017. ${LLVM_DIR}/lib/Transforms/Utils/VNCoercion.cpp
  1018. ${LLVM_DIR}/../stubs/Stubs.cpp
  1019. )
  1020. if(ARCH STREQUAL "x86" OR ARCH STREQUAL "x86_64")
  1021. list(APPEND LLVM_LIST
  1022. ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
  1023. ${LLVM_DIR}/lib/Target/X86/AsmParser/X86AsmParser.cpp
  1024. ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
  1025. ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstComments.cpp
  1026. ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp
  1027. ${LLVM_DIR}/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
  1028. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
  1029. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
  1030. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
  1031. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
  1032. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
  1033. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
  1034. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
  1035. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
  1036. ${LLVM_DIR}/lib/Target/X86/MCTargetDesc/X86WinCOFFTargetStreamer.cpp
  1037. ${LLVM_DIR}/lib/Target/X86/ShadowCallStack.cpp
  1038. ${LLVM_DIR}/lib/Target/X86/TargetInfo/X86TargetInfo.cpp
  1039. ${LLVM_DIR}/lib/Target/X86/Utils/X86ShuffleDecode.cpp
  1040. ${LLVM_DIR}/lib/Target/X86/X86AsmPrinter.cpp
  1041. ${LLVM_DIR}/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
  1042. ${LLVM_DIR}/lib/Target/X86/X86CallFrameOptimization.cpp
  1043. ${LLVM_DIR}/lib/Target/X86/X86CallingConv.cpp
  1044. ${LLVM_DIR}/lib/Target/X86/X86CallLowering.cpp
  1045. ${LLVM_DIR}/lib/Target/X86/X86CmovConversion.cpp
  1046. ${LLVM_DIR}/lib/Target/X86/X86DomainReassignment.cpp
  1047. ${LLVM_DIR}/lib/Target/X86/X86EvexToVex.cpp
  1048. ${LLVM_DIR}/lib/Target/X86/X86ExpandPseudo.cpp
  1049. ${LLVM_DIR}/lib/Target/X86/X86FastISel.cpp
  1050. ${LLVM_DIR}/lib/Target/X86/X86FixupBWInsts.cpp
  1051. ${LLVM_DIR}/lib/Target/X86/X86FixupLEAs.cpp
  1052. ${LLVM_DIR}/lib/Target/X86/X86FixupSetCC.cpp
  1053. ${LLVM_DIR}/lib/Target/X86/X86FlagsCopyLowering.cpp
  1054. ${LLVM_DIR}/lib/Target/X86/X86FloatingPoint.cpp
  1055. ${LLVM_DIR}/lib/Target/X86/X86FrameLowering.cpp
  1056. ${LLVM_DIR}/lib/Target/X86/X86IndirectBranchTracking.cpp
  1057. ${LLVM_DIR}/lib/Target/X86/X86InstrFMA3Info.cpp
  1058. ${LLVM_DIR}/lib/Target/X86/X86InstrFoldTables.cpp
  1059. ${LLVM_DIR}/lib/Target/X86/X86InstrInfo.cpp
  1060. ${LLVM_DIR}/lib/Target/X86/X86InstructionSelector.cpp
  1061. ${LLVM_DIR}/lib/Target/X86/X86InterleavedAccess.cpp
  1062. ${LLVM_DIR}/lib/Target/X86/X86ISelDAGToDAG.cpp
  1063. ${LLVM_DIR}/lib/Target/X86/X86ISelLowering.cpp
  1064. ${LLVM_DIR}/lib/Target/X86/X86LegalizerInfo.cpp
  1065. ${LLVM_DIR}/lib/Target/X86/X86MachineFunctionInfo.cpp
  1066. ${LLVM_DIR}/lib/Target/X86/X86MacroFusion.cpp
  1067. ${LLVM_DIR}/lib/Target/X86/X86MCInstLower.cpp
  1068. ${LLVM_DIR}/lib/Target/X86/X86OptimizeLEAs.cpp
  1069. ${LLVM_DIR}/lib/Target/X86/X86PadShortFunction.cpp
  1070. ${LLVM_DIR}/lib/Target/X86/X86RegisterBankInfo.cpp
  1071. ${LLVM_DIR}/lib/Target/X86/X86RegisterInfo.cpp
  1072. ${LLVM_DIR}/lib/Target/X86/X86RetpolineThunks.cpp
  1073. ${LLVM_DIR}/lib/Target/X86/X86SelectionDAGInfo.cpp
  1074. ${LLVM_DIR}/lib/Target/X86/X86ShuffleDecodeConstantPool.cpp
  1075. ${LLVM_DIR}/lib/Target/X86/X86SpeculativeLoadHardening.cpp
  1076. ${LLVM_DIR}/lib/Target/X86/X86Subtarget.cpp
  1077. ${LLVM_DIR}/lib/Target/X86/X86TargetMachine.cpp
  1078. ${LLVM_DIR}/lib/Target/X86/X86TargetObjectFile.cpp
  1079. ${LLVM_DIR}/lib/Target/X86/X86TargetTransformInfo.cpp
  1080. ${LLVM_DIR}/lib/Target/X86/X86VZeroUpper.cpp
  1081. ${LLVM_DIR}/lib/Target/X86/X86WinAllocaExpander.cpp
  1082. ${LLVM_DIR}/lib/Target/X86/X86WinEHState.cpp
  1083. )
  1084. elseif(ARCH STREQUAL "mipsel" OR ARCH STREQUAL "mips64el")
  1085. list(APPEND LLVM_LIST
  1086. ${LLVM_DIR}/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  1087. ${LLVM_DIR}/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
  1088. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp
  1089. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
  1090. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
  1091. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
  1092. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
  1093. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
  1094. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
  1095. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
  1096. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
  1097. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
  1098. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp
  1099. ${LLVM_DIR}/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
  1100. ${LLVM_DIR}/lib/Target/Mips/MicroMipsSizeReduction.cpp
  1101. ${LLVM_DIR}/lib/Target/Mips/Mips16FrameLowering.cpp
  1102. ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloat.cpp
  1103. ${LLVM_DIR}/lib/Target/Mips/Mips16HardFloatInfo.cpp
  1104. ${LLVM_DIR}/lib/Target/Mips/Mips16InstrInfo.cpp
  1105. ${LLVM_DIR}/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
  1106. ${LLVM_DIR}/lib/Target/Mips/Mips16ISelLowering.cpp
  1107. ${LLVM_DIR}/lib/Target/Mips/Mips16RegisterInfo.cpp
  1108. ${LLVM_DIR}/lib/Target/Mips/MipsAnalyzeImmediate.cpp
  1109. ${LLVM_DIR}/lib/Target/Mips/MipsAsmPrinter.cpp
  1110. ${LLVM_DIR}/lib/Target/Mips/MipsBranchExpansion.cpp
  1111. ${LLVM_DIR}/lib/Target/Mips/MipsCallLowering.cpp
  1112. ${LLVM_DIR}/lib/Target/Mips/MipsCCState.cpp
  1113. ${LLVM_DIR}/lib/Target/Mips/MipsConstantIslandPass.cpp
  1114. ${LLVM_DIR}/lib/Target/Mips/MipsDelaySlotFiller.cpp
  1115. ${LLVM_DIR}/lib/Target/Mips/MipsExpandPseudo.cpp
  1116. ${LLVM_DIR}/lib/Target/Mips/MipsFastISel.cpp
  1117. ${LLVM_DIR}/lib/Target/Mips/MipsFrameLowering.cpp
  1118. ${LLVM_DIR}/lib/Target/Mips/MipsInstrInfo.cpp
  1119. ${LLVM_DIR}/lib/Target/Mips/MipsInstructionSelector.cpp
  1120. ${LLVM_DIR}/lib/Target/Mips/MipsISelDAGToDAG.cpp
  1121. ${LLVM_DIR}/lib/Target/Mips/MipsISelLowering.cpp
  1122. ${LLVM_DIR}/lib/Target/Mips/MipsLegalizerInfo.cpp
  1123. ${LLVM_DIR}/lib/Target/Mips/MipsMachineFunction.cpp
  1124. ${LLVM_DIR}/lib/Target/Mips/MipsMCInstLower.cpp
  1125. ${LLVM_DIR}/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
  1126. ${LLVM_DIR}/lib/Target/Mips/MipsOptimizePICCall.cpp
  1127. ${LLVM_DIR}/lib/Target/Mips/MipsOs16.cpp
  1128. ${LLVM_DIR}/lib/Target/Mips/MipsRegisterBankInfo.cpp
  1129. ${LLVM_DIR}/lib/Target/Mips/MipsRegisterInfo.cpp
  1130. ${LLVM_DIR}/lib/Target/Mips/MipsSEFrameLowering.cpp
  1131. ${LLVM_DIR}/lib/Target/Mips/MipsSEInstrInfo.cpp
  1132. ${LLVM_DIR}/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
  1133. ${LLVM_DIR}/lib/Target/Mips/MipsSEISelLowering.cpp
  1134. ${LLVM_DIR}/lib/Target/Mips/MipsSERegisterInfo.cpp
  1135. ${LLVM_DIR}/lib/Target/Mips/MipsSubtarget.cpp
  1136. ${LLVM_DIR}/lib/Target/Mips/MipsTargetMachine.cpp
  1137. ${LLVM_DIR}/lib/Target/Mips/MipsTargetObjectFile.cpp
  1138. ${LLVM_DIR}/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp
  1139. )
  1140. elseif(ARCH STREQUAL "aarch64")
  1141. list(APPEND LLVM_LIST
  1142. ${LLVM_DIR}/lib/CodeGen/GlobalMerge.cpp
  1143. ${LLVM_DIR}/lib/CodeGen/RegAllocPBQP.cpp
  1144. ${LLVM_DIR}/lib/MC/ConstantPools.cpp
  1145. ${LLVM_DIR}/lib/Target/AArch64/AArch64A53Fix835769.cpp
  1146. ${LLVM_DIR}/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp
  1147. ${LLVM_DIR}/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
  1148. ${LLVM_DIR}/lib/Target/AArch64/AArch64AsmPrinter.cpp
  1149. ${LLVM_DIR}/lib/Target/AArch64/AArch64CallLowering.cpp
  1150. ${LLVM_DIR}/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
  1151. ${LLVM_DIR}/lib/Target/AArch64/AArch64CollectLOH.cpp
  1152. ${LLVM_DIR}/lib/Target/AArch64/AArch64CondBrTuning.cpp
  1153. ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionalCompares.cpp
  1154. ${LLVM_DIR}/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
  1155. ${LLVM_DIR}/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
  1156. ${LLVM_DIR}/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  1157. ${LLVM_DIR}/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp
  1158. ${LLVM_DIR}/lib/Target/AArch64/AArch64FastISel.cpp
  1159. ${LLVM_DIR}/lib/Target/AArch64/AArch64FrameLowering.cpp
  1160. ${LLVM_DIR}/lib/Target/AArch64/AArch64InstrInfo.cpp
  1161. ${LLVM_DIR}/lib/Target/AArch64/AArch64InstructionSelector.cpp
  1162. ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  1163. ${LLVM_DIR}/lib/Target/AArch64/AArch64ISelLowering.cpp
  1164. ${LLVM_DIR}/lib/Target/AArch64/AArch64LegalizerInfo.cpp
  1165. ${LLVM_DIR}/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
  1166. ${LLVM_DIR}/lib/Target/AArch64/AArch64MacroFusion.cpp
  1167. ${LLVM_DIR}/lib/Target/AArch64/AArch64MCInstLower.cpp
  1168. ${LLVM_DIR}/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp
  1169. ${LLVM_DIR}/lib/Target/AArch64/AArch64PromoteConstant.cpp
  1170. ${LLVM_DIR}/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
  1171. ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
  1172. ${LLVM_DIR}/lib/Target/AArch64/AArch64RegisterInfo.cpp
  1173. ${LLVM_DIR}/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
  1174. ${LLVM_DIR}/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp
  1175. ${LLVM_DIR}/lib/Target/AArch64/AArch64StorePairSuppress.cpp
  1176. ${LLVM_DIR}/lib/Target/AArch64/AArch64Subtarget.cpp
  1177. ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetMachine.cpp
  1178. ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetObjectFile.cpp
  1179. ${LLVM_DIR}/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  1180. ${LLVM_DIR}/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  1181. ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
  1182. ${LLVM_DIR}/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
  1183. ${LLVM_DIR}/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp
  1184. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
  1185. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
  1186. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
  1187. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
  1188. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
  1189. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
  1190. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
  1191. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
  1192. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
  1193. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
  1194. ${LLVM_DIR}/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
  1195. ${LLVM_DIR}/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp
  1196. ${LLVM_DIR}/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
  1197. ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
  1198. ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
  1199. )
  1200. elseif(ARCH STREQUAL "arm")
  1201. list(APPEND LLVM_LIST
  1202. ${LLVM_DIR}/lib/Target/ARM/A15SDOptimizer.cpp
  1203. ${LLVM_DIR}/lib/Target/ARM/ARMAsmPrinter.cpp
  1204. ${LLVM_DIR}/lib/Target/ARM/ARMBaseInstrInfo.cpp
  1205. ${LLVM_DIR}/lib/Target/ARM/ARMBaseRegisterInfo.cpp
  1206. ${LLVM_DIR}/lib/Target/ARM/ARMCallLowering.cpp
  1207. ${LLVM_DIR}/lib/Target/ARM/ARMCodeGenPrepare.cpp
  1208. ${LLVM_DIR}/lib/Target/ARM/ARMComputeBlockSize.cpp
  1209. ${LLVM_DIR}/lib/Target/ARM/ARMConstantIslandPass.cpp
  1210. ${LLVM_DIR}/lib/Target/ARM/ARMConstantPoolValue.cpp
  1211. ${LLVM_DIR}/lib/Target/ARM/ARMExpandPseudoInsts.cpp
  1212. ${LLVM_DIR}/lib/Target/ARM/ARMFastISel.cpp
  1213. ${LLVM_DIR}/lib/Target/ARM/ARMFrameLowering.cpp
  1214. ${LLVM_DIR}/lib/Target/ARM/ARMHazardRecognizer.cpp
  1215. ${LLVM_DIR}/lib/Target/ARM/ARMInstrInfo.cpp
  1216. ${LLVM_DIR}/lib/Target/ARM/ARMInstructionSelector.cpp
  1217. ${LLVM_DIR}/lib/Target/ARM/ARMISelDAGToDAG.cpp
  1218. ${LLVM_DIR}/lib/Target/ARM/ARMISelLowering.cpp
  1219. ${LLVM_DIR}/lib/Target/ARM/ARMLegalizerInfo.cpp
  1220. ${LLVM_DIR}/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
  1221. ${LLVM_DIR}/lib/Target/ARM/ARMMachineFunctionInfo.cpp
  1222. ${LLVM_DIR}/lib/Target/ARM/ARMMacroFusion.cpp
  1223. ${LLVM_DIR}/lib/Target/ARM/ARMMCInstLower.cpp
  1224. ${LLVM_DIR}/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
  1225. ${LLVM_DIR}/lib/Target/ARM/ARMParallelDSP.cpp
  1226. ${LLVM_DIR}/lib/Target/ARM/ARMRegisterBankInfo.cpp
  1227. ${LLVM_DIR}/lib/Target/ARM/ARMRegisterInfo.cpp
  1228. ${LLVM_DIR}/lib/Target/ARM/ARMSelectionDAGInfo.cpp
  1229. ${LLVM_DIR}/lib/Target/ARM/ARMSubtarget.cpp
  1230. ${LLVM_DIR}/lib/Target/ARM/ARMTargetMachine.cpp
  1231. ${LLVM_DIR}/lib/Target/ARM/ARMTargetObjectFile.cpp
  1232. ${LLVM_DIR}/lib/Target/ARM/ARMTargetTransformInfo.cpp
  1233. ${LLVM_DIR}/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  1234. ${LLVM_DIR}/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
  1235. ${LLVM_DIR}/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
  1236. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
  1237. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
  1238. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
  1239. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
  1240. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp
  1241. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
  1242. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
  1243. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
  1244. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
  1245. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
  1246. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp
  1247. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
  1248. ${LLVM_DIR}/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
  1249. ${LLVM_DIR}/lib/Target/ARM/MLxExpansionPass.cpp
  1250. ${LLVM_DIR}/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp
  1251. ${LLVM_DIR}/lib/Target/ARM/Thumb1FrameLowering.cpp
  1252. ${LLVM_DIR}/lib/Target/ARM/Thumb1InstrInfo.cpp
  1253. ${LLVM_DIR}/lib/Target/ARM/Thumb2InstrInfo.cpp
  1254. ${LLVM_DIR}/lib/Target/ARM/Thumb2ITBlockPass.cpp
  1255. ${LLVM_DIR}/lib/Target/ARM/Thumb2SizeReduction.cpp
  1256. ${LLVM_DIR}/lib/Target/ARM/ThumbRegisterInfo.cpp
  1257. ${LLVM_DIR}/lib/Target/ARM/Utils/ARMBaseInfo.cpp
  1258. )
  1259. elseif(ARCH STREQUAL "ppc64le")
  1260. list(APPEND LLVM_LIST
  1261. ${LLVM_DIR}/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
  1262. ${LLVM_DIR}/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
  1263. ${LLVM_DIR}/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
  1264. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
  1265. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
  1266. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
  1267. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
  1268. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
  1269. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
  1270. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
  1271. ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
  1272. ${LLVM_DIR}/lib/Target/PowerPC/PPCAsmPrinter.cpp
  1273. ${LLVM_DIR}/lib/Target/PowerPC/PPCBoolRetToInt.cpp
  1274. ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchCoalescing.cpp
  1275. ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchSelector.cpp
  1276. ${LLVM_DIR}/lib/Target/PowerPC/PPCCCState.cpp
  1277. ${LLVM_DIR}/lib/Target/PowerPC/PPCCTRLoops.cpp
  1278. ${LLVM_DIR}/lib/Target/PowerPC/PPCEarlyReturn.cpp
  1279. ${LLVM_DIR}/lib/Target/PowerPC/PPCExpandISEL.cpp
  1280. ${LLVM_DIR}/lib/Target/PowerPC/PPCFastISel.cpp
  1281. ${LLVM_DIR}/lib/Target/PowerPC/PPCFrameLowering.cpp
  1282. ${LLVM_DIR}/lib/Target/PowerPC/PPCHazardRecognizers.cpp
  1283. ${LLVM_DIR}/lib/Target/PowerPC/PPCInstrInfo.cpp
  1284. ${LLVM_DIR}/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
  1285. ${LLVM_DIR}/lib/Target/PowerPC/PPCISelLowering.cpp
  1286. ${LLVM_DIR}/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
  1287. ${LLVM_DIR}/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp
  1288. ${LLVM_DIR}/lib/Target/PowerPC/PPCMCInstLower.cpp
  1289. ${LLVM_DIR}/lib/Target/PowerPC/PPCMIPeephole.cpp
  1290. ${LLVM_DIR}/lib/Target/PowerPC/PPCPreEmitPeephole.cpp
  1291. ${LLVM_DIR}/lib/Target/PowerPC/PPCQPXLoadSplat.cpp
  1292. ${LLVM_DIR}/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
  1293. ${LLVM_DIR}/lib/Target/PowerPC/PPCRegisterInfo.cpp
  1294. ${LLVM_DIR}/lib/Target/PowerPC/PPCSubtarget.cpp
  1295. ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetMachine.cpp
  1296. ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetObjectFile.cpp
  1297. ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
  1298. ${LLVM_DIR}/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
  1299. ${LLVM_DIR}/lib/Target/PowerPC/PPCTOCRegDeps.cpp
  1300. ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXCopy.cpp
  1301. ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXFMAMutate.cpp
  1302. ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp
  1303. ${LLVM_DIR}/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
  1304. )
  1305. endif()
  1306. if(REACTOR_EMIT_DEBUG_INFO)
  1307. list(APPEND LLVM_LIST
  1308. ${LLVM_DIR}/lib/Demangle/ItaniumDemangle.cpp
  1309. )
  1310. endif(REACTOR_EMIT_DEBUG_INFO)
  1311. set(LLVM_INCLUDE_DIR "")
  1312. if(WIN32)
  1313. list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/windows/include)
  1314. elseif(LINUX)
  1315. list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/linux/include)
  1316. list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/linux/include)
  1317. elseif(APPLE)
  1318. list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/darwin/include)
  1319. list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/darwin/include)
  1320. elseif(ANDROID)
  1321. list(APPEND LLVM_INCLUDE_DIR ${LLVM_CONFIG_DIR}/android/include)
  1322. list(APPEND LIBBACKTRACE_INCLUDE_DIR ${LIBBACKTRACE_CONFIG_DIR}/android/include)
  1323. endif()
  1324. list(APPEND LLVM_INCLUDE_DIR
  1325. ${LLVM_DIR}/include
  1326. ${LLVM_DIR}/lib/Target/AArch64
  1327. ${LLVM_DIR}/lib/Target/ARM
  1328. ${LLVM_DIR}/lib/Target/Mips
  1329. ${LLVM_DIR}/lib/Target/PowerPC
  1330. ${LLVM_DIR}/lib/Target/X86
  1331. ${LLVM_CONFIG_DIR}/common/include
  1332. ${LLVM_CONFIG_DIR}/common/lib/IR
  1333. ${LLVM_CONFIG_DIR}/common/lib/Target/AArch64
  1334. ${LLVM_CONFIG_DIR}/common/lib/Target/ARM
  1335. ${LLVM_CONFIG_DIR}/common/lib/Target/Mips
  1336. ${LLVM_CONFIG_DIR}/common/lib/Target/PowerPC
  1337. ${LLVM_CONFIG_DIR}/common/lib/Target/X86
  1338. ${LLVM_CONFIG_DIR}/common/lib/Transforms/InstCombine
  1339. )
  1340. # Suppress known LLVM warnings
  1341. set(LLVM_COMPILE_OPTIONS)
  1342. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  1343. list(APPEND LLVM_COMPILE_OPTIONS
  1344. "-Wno-noexcept-type" # mangled name for ‘X’ will change in C++17 because the exception specification is part of a function type
  1345. "-Wno-maybe-uninitialized" # ‘X’ may be used uninitialized in this function
  1346. "-Wno-unused-but-set-variable" # variable ‘X’ set but not used
  1347. )
  1348. if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8)
  1349. list(APPEND LLVM_COMPILE_OPTIONS
  1350. "-Wno-class-memaccess" # memset/memcmp used on non-trivial class object
  1351. )
  1352. endif()
  1353. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  1354. list(APPEND LLVM_COMPILE_OPTIONS
  1355. "/wd4141" # 'inline': used more than once
  1356. "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
  1357. "/wd4244" # 'X': conversion from 'uint64_t' to 'const unsigned int', possible loss of data
  1358. "/wd4267" # 'X': conversion from 'size_t' to 'unsigned int', possible loss of data
  1359. "/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
  1360. "/wd4319" # 'X': zero extending 'unsigned int' to 'uint64_t' of greater size
  1361. "/wd4624" # 'X': destructor was implicitly defined as deleted
  1362. "/wd4805" # 'X': unsafe mix of type 'unsigned int' and type 'bool' in operation
  1363. "/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.
  1364. )
  1365. endif()
  1366. add_library(llvm STATIC ${LLVM_LIST})
  1367. set_target_properties(llvm PROPERTIES
  1368. POSITION_INDEPENDENT_CODE 1
  1369. INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIR}"
  1370. COMPILE_OPTIONS "${LLVM_COMPILE_OPTIONS}"
  1371. COMPILE_DEFINITIONS "__STDC_CONSTANT_MACROS; __STDC_LIMIT_MACROS;"
  1372. FOLDER "LLVM"
  1373. )
  1374. # Add required libraries for LLVM
  1375. if(LINUX)
  1376. target_link_libraries(llvm dl)
  1377. endif(LINUX)
  1378. ###########################################################
  1379. # Subzero
  1380. ###########################################################
  1381. if(${REACTOR_BACKEND} STREQUAL "Subzero")
  1382. set(SUBZERO_LIST
  1383. ${SUBZERO_DIR}/src/IceAssembler.cpp
  1384. ${SUBZERO_DIR}/src/IceCfg.cpp
  1385. ${SUBZERO_DIR}/src/IceCfgNode.cpp
  1386. ${SUBZERO_DIR}/src/IceClFlags.cpp
  1387. ${SUBZERO_DIR}/src/IceELFObjectWriter.cpp
  1388. ${SUBZERO_DIR}/src/IceELFSection.cpp
  1389. ${SUBZERO_DIR}/src/IceFixups.cpp
  1390. ${SUBZERO_DIR}/src/IceGlobalContext.cpp
  1391. ${SUBZERO_DIR}/src/IceGlobalInits.cpp
  1392. ${SUBZERO_DIR}/src/IceInst.cpp
  1393. ${SUBZERO_DIR}/src/IceInstrumentation.cpp
  1394. ${SUBZERO_DIR}/src/IceIntrinsics.cpp
  1395. ${SUBZERO_DIR}/src/IceLiveness.cpp
  1396. ${SUBZERO_DIR}/src/IceLoopAnalyzer.cpp
  1397. ${SUBZERO_DIR}/src/IceMangling.cpp
  1398. ${SUBZERO_DIR}/src/IceMemory.cpp
  1399. ${SUBZERO_DIR}/src/IceOperand.cpp
  1400. ${SUBZERO_DIR}/src/IceRangeSpec.cpp
  1401. ${SUBZERO_DIR}/src/IceRegAlloc.cpp
  1402. ${SUBZERO_DIR}/src/IceRevision.cpp
  1403. ${SUBZERO_DIR}/src/IceRNG.cpp
  1404. ${SUBZERO_DIR}/src/IceSwitchLowering.cpp
  1405. ${SUBZERO_DIR}/src/IceTargetLowering.cpp
  1406. ${SUBZERO_DIR}/src/IceThreading.cpp
  1407. ${SUBZERO_DIR}/src/IceTimerTree.cpp
  1408. ${SUBZERO_DIR}/src/IceTypes.cpp
  1409. ${SUBZERO_DIR}/src/IceVariableSplitting.cpp
  1410. )
  1411. # FIXME: Shouldn't depend on external source files directly.
  1412. list(APPEND SUBZERO_LIST
  1413. ${SOURCE_DIR}/Common/Memory.cpp
  1414. )
  1415. if(ARCH STREQUAL "x86_64")
  1416. list(APPEND SUBZERO_LIST
  1417. ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
  1418. ${SUBZERO_DIR}/src/IceInstX8664.cpp
  1419. ${SUBZERO_DIR}/src/IceTargetLoweringX8664.cpp
  1420. )
  1421. set(SUBZERO_TARGET X8664)
  1422. elseif(ARCH STREQUAL "x86")
  1423. list(APPEND SUBZERO_LIST
  1424. ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
  1425. ${SUBZERO_DIR}/src/IceInstX8632.cpp
  1426. ${SUBZERO_DIR}/src/IceTargetLoweringX8632.cpp
  1427. )
  1428. set(SUBZERO_TARGET X8632)
  1429. elseif(ARCH STREQUAL "arm")
  1430. list(APPEND SUBZERO_LIST
  1431. ${SUBZERO_DIR}/src/IceAssemblerARM32.cpp
  1432. ${SUBZERO_DIR}/src/IceInstARM32.cpp
  1433. ${SUBZERO_DIR}/src/IceTargetLoweringARM32.cpp
  1434. )
  1435. set(SUBZERO_TARGET ARM32)
  1436. elseif(ARCH STREQUAL "mipsel")
  1437. list(APPEND SUBZERO_LIST
  1438. ${SUBZERO_DIR}/src/IceAssemblerMIPS32.cpp
  1439. ${SUBZERO_DIR}/src/IceInstMIPS32.cpp
  1440. ${SUBZERO_DIR}/src/IceTargetLoweringMIPS32.cpp
  1441. )
  1442. set(SUBZERO_TARGET MIPS32)
  1443. else()
  1444. message(FATAL_ERROR "Architecture '${ARCH}' not supported by Subzero")
  1445. endif()
  1446. file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
  1447. ${SUBZERO_LLVM_DIR}/*.cpp
  1448. ${SUBZERO_LLVM_DIR}/*.c
  1449. ${SUBZERO_LLVM_DIR}/*.h
  1450. )
  1451. set(SUBZERO_REACTOR_LIST
  1452. ${SOURCE_DIR}/Reactor/Reactor.cpp
  1453. ${SOURCE_DIR}/Reactor/Reactor.hpp
  1454. ${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
  1455. ${SOURCE_DIR}/Reactor/Routine.cpp
  1456. ${SOURCE_DIR}/Reactor/Optimizer.cpp
  1457. ${SOURCE_DIR}/Reactor/Nucleus.hpp
  1458. ${SOURCE_DIR}/Reactor/Routine.hpp
  1459. ${SOURCE_DIR}/Reactor/Debug.cpp
  1460. ${SOURCE_DIR}/Reactor/Debug.hpp
  1461. ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
  1462. ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
  1463. )
  1464. set(SUBZERO_INCLUDE_DIR
  1465. ${SUBZERO_DIR}/
  1466. ${SUBZERO_LLVM_DIR}/include/
  1467. ${SUBZERO_DIR}/pnacl-llvm/include/
  1468. )
  1469. if(WIN32)
  1470. list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Windows/include/)
  1471. elseif(LINUX)
  1472. list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Linux/include/)
  1473. elseif(APPLE)
  1474. list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/MacOS/include/)
  1475. endif()
  1476. if(WIN32)
  1477. list(APPEND SUBZERO_COMPILE_OPTIONS
  1478. "/wd4334" # ''operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
  1479. "/wd4996" # The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name.
  1480. )
  1481. endif()
  1482. add_library(ReactorSubzero STATIC
  1483. ${SUBZERO_LIST}
  1484. ${SUBZERO_DEPENDENCIES_LIST}
  1485. ${SUBZERO_REACTOR_LIST}
  1486. )
  1487. set_target_properties(ReactorSubzero PROPERTIES
  1488. POSITION_INDEPENDENT_CODE 1
  1489. INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
  1490. COMPILE_OPTIONS "${SUBZERO_COMPILE_OPTIONS};${SWIFTSHADER_COMPILE_OPTIONS}"
  1491. 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;"
  1492. FOLDER "Subzero"
  1493. )
  1494. if(WIN32)
  1495. target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
  1496. endif()
  1497. endif()
  1498. ###########################################################
  1499. # Include Directories
  1500. ###########################################################
  1501. set(COMMON_INCLUDE_DIR
  1502. ${SOURCE_DIR}
  1503. ${CMAKE_CURRENT_SOURCE_DIR}/include
  1504. ${LLVM_INCLUDE_DIR}
  1505. ${LIBBACKTRACE_INCLUDE_DIR}
  1506. )
  1507. set(OPENGL_INCLUDE_DIR
  1508. ${OPENGL_DIR}
  1509. ${COMMON_INCLUDE_DIR}
  1510. )
  1511. set(VULKAN_INCLUDE_DIR
  1512. ${COMMON_INCLUDE_DIR}
  1513. )
  1514. ###########################################################
  1515. # File Lists
  1516. ###########################################################
  1517. file(GLOB_RECURSE SWIFTSHADER_LIST
  1518. ${SOURCE_DIR}/Common/*.cpp
  1519. ${SOURCE_DIR}/Common/*.h
  1520. ${SOURCE_DIR}/Common/*.hpp
  1521. ${SOURCE_DIR}/Renderer/*.cpp
  1522. ${SOURCE_DIR}/Renderer/*.h
  1523. ${SOURCE_DIR}/Renderer/*.hpp
  1524. ${SOURCE_DIR}/Shader/*.cpp
  1525. ${SOURCE_DIR}/Shader/*.h
  1526. ${SOURCE_DIR}/Shader/*.hpp
  1527. )
  1528. list(APPEND SWIFTSHADER_LIST
  1529. ${SOURCE_DIR}/Main/Config.cpp
  1530. ${SOURCE_DIR}/Main/Config.hpp
  1531. ${SOURCE_DIR}/Main/FrameBuffer.cpp
  1532. ${SOURCE_DIR}/Main/FrameBuffer.hpp
  1533. ${SOURCE_DIR}/Main/SwiftConfig.cpp
  1534. ${SOURCE_DIR}/Main/SwiftConfig.hpp
  1535. )
  1536. list(REMOVE_ITEM SWIFTSHADER_LIST
  1537. ${SOURCE_DIR}/Common/DebugAndroid.cpp
  1538. ${SOURCE_DIR}/Common/DebugAndroid.hpp
  1539. ${SOURCE_DIR}/Common/GrallocAndroid.cpp
  1540. ${SOURCE_DIR}/Common/GrallocAndroid.hpp
  1541. )
  1542. if(REACTOR_EMIT_DEBUG_INFO)
  1543. set(LIBBACKTRACE_LIST
  1544. ${LIBBACKTRACE_DIR}/atomic.c
  1545. ${LIBBACKTRACE_DIR}/backtrace.c
  1546. ${LIBBACKTRACE_DIR}/backtrace.h
  1547. ${LIBBACKTRACE_DIR}/dwarf.c
  1548. ${LIBBACKTRACE_DIR}/fileline.c
  1549. ${LIBBACKTRACE_DIR}/filenames.h
  1550. ${LIBBACKTRACE_DIR}/internal.h
  1551. ${LIBBACKTRACE_DIR}/mmap.c
  1552. ${LIBBACKTRACE_DIR}/mmapio.c
  1553. ${LIBBACKTRACE_DIR}/posix.c
  1554. ${LIBBACKTRACE_DIR}/print.c
  1555. ${LIBBACKTRACE_DIR}/simple.c
  1556. ${LIBBACKTRACE_DIR}/sort.c
  1557. ${LIBBACKTRACE_DIR}/state.c
  1558. ${LIBBACKTRACE_INCLUDE_DIR}/backtrace-supported.h
  1559. ${LIBBACKTRACE_INCLUDE_DIR}/config.h
  1560. )
  1561. if(WIN32)
  1562. list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/pecoff.c)
  1563. elseif(LINUX)
  1564. list(APPEND LIBBACKTRACE_LIST ${LIBBACKTRACE_DIR}/elf.c)
  1565. elseif(APPLE)
  1566. message(FATAL_ERROR "libbacktrace does not support mach-o yet")
  1567. endif()
  1568. endif(REACTOR_EMIT_DEBUG_INFO)
  1569. set(REACTOR_LLVM_LIST
  1570. ${SOURCE_DIR}/Reactor/Reactor.cpp
  1571. ${SOURCE_DIR}/Reactor/Reactor.hpp
  1572. ${SOURCE_DIR}/Reactor/LLVMReactor.cpp
  1573. ${SOURCE_DIR}/Reactor/LLVMReactor.hpp
  1574. ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.cpp
  1575. ${SOURCE_DIR}/Reactor/LLVMReactorDebugInfo.hpp
  1576. ${SOURCE_DIR}/Reactor/Nucleus.hpp
  1577. ${SOURCE_DIR}/Reactor/Routine.cpp
  1578. ${SOURCE_DIR}/Reactor/Routine.hpp
  1579. ${SOURCE_DIR}/Reactor/CPUID.cpp
  1580. ${SOURCE_DIR}/Reactor/CPUID.hpp
  1581. ${SOURCE_DIR}/Reactor/Debug.cpp
  1582. ${SOURCE_DIR}/Reactor/Debug.hpp
  1583. ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
  1584. ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
  1585. )
  1586. file(GLOB_RECURSE EGL_LIST
  1587. ${OPENGL_DIR}/libEGL/*.cpp
  1588. ${OPENGL_DIR}/libEGL/*.h
  1589. ${OPENGL_DIR}/libEGL/*.hpp
  1590. ${OPENGL_DIR}/common/Object.cpp
  1591. ${OPENGL_DIR}/common/Object.hpp
  1592. ${OPENGL_DIR}/common/debug.cpp
  1593. ${OPENGL_DIR}/common/debug.h
  1594. ${SOURCE_DIR}/Common/SharedLibrary.cpp
  1595. ${SOURCE_DIR}/Common/SharedLibrary.hpp
  1596. ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
  1597. )
  1598. file(GLOB_RECURSE GLES2_LIST
  1599. ${OPENGL_DIR}/libGLESv2/*.cpp
  1600. ${OPENGL_DIR}/libGLESv2/*.h
  1601. ${OPENGL_DIR}/libGLESv2/*.hpp
  1602. ${OPENGL_DIR}/common/*.cpp
  1603. ${OPENGL_DIR}/common/*.h
  1604. ${OPENGL_DIR}/common/*.hpp
  1605. ${SOURCE_DIR}/Common/SharedLibrary.cpp
  1606. ${SOURCE_DIR}/Common/SharedLibrary.hpp
  1607. ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
  1608. ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES2/*.h
  1609. ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES3/*.h
  1610. )
  1611. file(GLOB_RECURSE GLES_CM_LIST
  1612. ${OPENGL_DIR}/libGLES_CM/*.cpp
  1613. ${OPENGL_DIR}/libGLES_CM/*.h
  1614. ${OPENGL_DIR}/libGLES_CM/*.hpp
  1615. ${OPENGL_DIR}/common/*.cpp
  1616. ${OPENGL_DIR}/common/*.h
  1617. ${OPENGL_DIR}/common/*.hpp
  1618. ${SOURCE_DIR}/Common/SharedLibrary.cpp
  1619. ${SOURCE_DIR}/Common/SharedLibrary.hpp
  1620. ${CMAKE_CURRENT_SOURCE_DIR}/include/KHR/*.h
  1621. ${CMAKE_CURRENT_SOURCE_DIR}/include/GLES/*.h
  1622. )
  1623. file(GLOB_RECURSE OPENGL_COMPILER_LIST
  1624. ${OPENGL_COMPILER_DIR}/*.cpp
  1625. ${OPENGL_COMPILER_DIR}/*.h
  1626. ${OPENGL_COMPILER_DIR}/*.hpp
  1627. )
  1628. file(GLOB_RECURSE OPENGL_COMPILER_OS_SPECIFIC_LIST
  1629. ${OPENGL_COMPILER_DIR}/ossource*.cpp
  1630. ${OPENGL_COMPILER_DIR}/ossource*.h
  1631. ${OPENGL_COMPILER_DIR}/ossource*.hpp
  1632. )
  1633. list(REMOVE_ITEM OPENGL_COMPILER_LIST ${OPENGL_COMPILER_OS_SPECIFIC_LIST})
  1634. file(GLOB_RECURSE VULKAN_LIST
  1635. ${VULKAN_DIR}/*.cpp
  1636. ${VULKAN_DIR}/*.h
  1637. ${VULKAN_DIR}/*.hpp
  1638. ${SOURCE_DIR}/System/CPUID.cpp
  1639. ${SOURCE_DIR}/System/CPUID.hpp
  1640. ${SOURCE_DIR}/System/Configurator.cpp
  1641. ${SOURCE_DIR}/System/Configurator.hpp
  1642. ${SOURCE_DIR}/System/Debug.cpp
  1643. ${SOURCE_DIR}/System/Debug.hpp
  1644. ${SOURCE_DIR}/System/Half.cpp
  1645. ${SOURCE_DIR}/System/Half.hpp
  1646. ${SOURCE_DIR}/System/Math.cpp
  1647. ${SOURCE_DIR}/System/Math.hpp
  1648. ${SOURCE_DIR}/System/Memory.cpp
  1649. ${SOURCE_DIR}/System/Memory.hpp
  1650. ${SOURCE_DIR}/System/Socket.cpp
  1651. ${SOURCE_DIR}/System/Socket.hpp
  1652. ${SOURCE_DIR}/System/Synchronization.hpp
  1653. ${SOURCE_DIR}/System/Timer.cpp
  1654. ${SOURCE_DIR}/System/Timer.hpp
  1655. ${SOURCE_DIR}/Device/*.cpp
  1656. ${SOURCE_DIR}/Device/*.hpp
  1657. ${SOURCE_DIR}/Pipeline/*.cpp
  1658. ${SOURCE_DIR}/Pipeline/*.hpp
  1659. ${SOURCE_DIR}/WSI/VkSurfaceKHR.cpp
  1660. ${SOURCE_DIR}/WSI/VkSurfaceKHR.hpp
  1661. ${SOURCE_DIR}/WSI/VkSwapchainKHR.cpp
  1662. ${SOURCE_DIR}/WSI/VkSwapchainKHR.hpp
  1663. ${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/*.h}
  1664. )
  1665. ###########################################################
  1666. # Append OS specific files to lists
  1667. ###########################################################
  1668. if(WIN32)
  1669. list(APPEND SWIFTSHADER_LIST
  1670. ${SOURCE_DIR}/Main/FrameBufferDD.cpp
  1671. ${SOURCE_DIR}/Main/FrameBufferDD.hpp
  1672. ${SOURCE_DIR}/Main/FrameBufferGDI.cpp
  1673. ${SOURCE_DIR}/Main/FrameBufferGDI.hpp
  1674. ${SOURCE_DIR}/Main/FrameBufferWin.cpp
  1675. ${SOURCE_DIR}/Main/FrameBufferWin.hpp
  1676. )
  1677. list(APPEND OPENGL_COMPILER_LIST ${OPENGL_COMPILER_DIR}/ossource_win.cpp)
  1678. list(APPEND EGL_LIST ${OPENGL_DIR}/libEGL/libEGL.rc)
  1679. list(APPEND GLES2_LIST ${OPENGL_DIR}/libGLESv2/libGLESv2.rc)
  1680. list(APPEND GLES_CM_LIST ${OPENGL_DIR}/libGLES_CM/libGLES_CM.rc)
  1681. elseif(LINUX)
  1682. list(APPEND SWIFTSHADER_LIST
  1683. ${SOURCE_DIR}/Main/FrameBufferX11.cpp
  1684. ${SOURCE_DIR}/Main/FrameBufferX11.hpp
  1685. ${SOURCE_DIR}/Common/SharedLibrary.hpp
  1686. ${SOURCE_DIR}/Main/libX11.cpp
  1687. ${SOURCE_DIR}/Main/libX11.hpp
  1688. )
  1689. list(APPEND EGL_LIST
  1690. ${SOURCE_DIR}/Common/SharedLibrary.hpp
  1691. ${SOURCE_DIR}/Main/libX11.cpp
  1692. ${SOURCE_DIR}/Main/libX11.hpp
  1693. )
  1694. list(APPEND OPENGL_COMPILER_LIST
  1695. ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
  1696. )
  1697. list(APPEND VULKAN_LIST
  1698. ${SOURCE_DIR}/WSI/libX11.cpp
  1699. ${SOURCE_DIR}/WSI/libX11.hpp
  1700. ${SOURCE_DIR}/WSI/XlibSurfaceKHR.cpp
  1701. ${SOURCE_DIR}/WSI/XlibSurfaceKHR.hpp
  1702. )
  1703. elseif(APPLE)
  1704. list(APPEND SWIFTSHADER_LIST
  1705. ${SOURCE_DIR}/Main/FrameBufferOSX.mm
  1706. ${SOURCE_DIR}/Main/FrameBufferOSX.hpp
  1707. )
  1708. list(APPEND EGL_LIST
  1709. ${OPENGL_DIR}/libEGL/OSXUtils.mm
  1710. ${OPENGL_DIR}/libEGL/OSXUtils.hpp
  1711. )
  1712. list(APPEND OPENGL_COMPILER_LIST
  1713. ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
  1714. )
  1715. list(APPEND VULKAN_LIST
  1716. ${SOURCE_DIR}/WSI/MacOSSurfaceMVK.mm
  1717. ${SOURCE_DIR}/WSI/MacOSSurfaceMVK.h
  1718. )
  1719. elseif(ANDROID)
  1720. list(APPEND SWIFTSHADER_LIST
  1721. ${SOURCE_DIR}/Main/FrameBufferAndroid.cpp
  1722. ${SOURCE_DIR}/Main/FrameBufferAndroid.hpp
  1723. )
  1724. list(APPEND OPENGL_COMPILER_LIST
  1725. ${OPENGL_COMPILER_DIR}/ossource_posix.cpp
  1726. )
  1727. endif()
  1728. if(WIN32)
  1729. set(OS_LIBS odbc32 odbccp32 WS2_32 dxguid)
  1730. elseif(LINUX)
  1731. set(OS_LIBS dl pthread)
  1732. elseif(APPLE)
  1733. find_library(COCOA_FRAMEWORK Cocoa)
  1734. find_library(QUARTZ_FRAMEWORK Quartz)
  1735. find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
  1736. find_library(IOSURFACE_FRAMEWORK IOSurface)
  1737. set(OS_LIBS "${COCOA_FRAMEWORK}" "${QUARTZ_FRAMEWORK}" "${CORE_FOUNDATION_FRAMEWORK}" "${IOSURFACE_FRAMEWORK}")
  1738. endif()
  1739. ###########################################################
  1740. # SwiftShader Targets
  1741. ###########################################################
  1742. add_library(SwiftShader STATIC ${SWIFTSHADER_LIST})
  1743. set_target_properties(SwiftShader PROPERTIES
  1744. INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
  1745. POSITION_INDEPENDENT_CODE 1
  1746. FOLDER "Core"
  1747. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1748. COMPILE_DEFINITIONS "NO_SANITIZE_FUNCTION=;"
  1749. )
  1750. target_link_libraries(SwiftShader ${OS_LIBS})
  1751. if(${REACTOR_BACKEND} STREQUAL "LLVM")
  1752. add_library(ReactorLLVM STATIC ${REACTOR_LLVM_LIST})
  1753. set_target_properties(ReactorLLVM PROPERTIES
  1754. INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
  1755. POSITION_INDEPENDENT_CODE 1
  1756. FOLDER "Core"
  1757. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1758. )
  1759. target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
  1760. if(REACTOR_EMIT_DEBUG_INFO)
  1761. if(WIN32)
  1762. # Boost stacktrace uses COM on Windows.
  1763. # On Windows, cache COM instances in TLS for performance.
  1764. target_compile_definitions(ReactorLLVM PRIVATE BOOST_STACKTRACE_USE_WINDBG_CACHED)
  1765. else()
  1766. # Boost stacktrace uses libbacktrace
  1767. target_compile_definitions(ReactorLLVM PRIVATE BOOST_STACKTRACE_USE_BACKTRACE)
  1768. # Boost stacktrace uses exceptions, so force enable it
  1769. set_cpp_flag("-fexceptions")
  1770. add_library(Libbacktrace STATIC ${LIBBACKTRACE_LIST})
  1771. set_target_properties(Libbacktrace PROPERTIES
  1772. INCLUDE_DIRECTORIES "${LIBBACKTRACE_INCLUDE_DIR}"
  1773. POSITION_INDEPENDENT_CODE 1
  1774. FOLDER "Core"
  1775. )
  1776. target_link_libraries(Libbacktrace ${OS_LIBS})
  1777. target_link_libraries(ReactorLLVM Libbacktrace)
  1778. endif()
  1779. # Download boost and use it
  1780. DownloadBoost()
  1781. set(BOOST_INCLUDEDIR ${BOOST_THIRD_PARTY_DIR})
  1782. find_package(Boost REQUIRED)
  1783. target_link_libraries(ReactorLLVM Boost::boost)
  1784. endif(REACTOR_EMIT_DEBUG_INFO)
  1785. set(Reactor ReactorLLVM)
  1786. elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
  1787. set(Reactor ReactorSubzero)
  1788. else()
  1789. message(FATAL_ERROR "REACTOR_BACKEND must be 'LLVM' or 'Subzero'")
  1790. endif()
  1791. add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
  1792. set_target_properties(GLCompiler PROPERTIES
  1793. INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
  1794. POSITION_INDEPENDENT_CODE 1
  1795. FOLDER "OpenGL"
  1796. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1797. )
  1798. target_link_libraries(GLCompiler ${OS_LIBS})
  1799. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  1800. set(LIB_PREFIX "lib64")
  1801. else()
  1802. set(LIB_PREFIX "lib")
  1803. endif()
  1804. if(BUILD_EGL)
  1805. add_library(libEGL SHARED ${EGL_LIST})
  1806. set_target_properties(libEGL PROPERTIES
  1807. INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
  1808. FOLDER "OpenGL"
  1809. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1810. COMPILE_DEFINITIONS "EGL_EGLEXT_PROTOTYPES; EGLAPI=; NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
  1811. PREFIX ""
  1812. )
  1813. if (ANDROID)
  1814. set_target_properties(libEGL PROPERTIES SUFFIX "_swiftshader.so")
  1815. endif ()
  1816. set_shared_library_export_map(libEGL ${SOURCE_DIR}/OpenGL/libEGL)
  1817. target_link_libraries(libEGL ${OS_LIBS})
  1818. add_custom_command(
  1819. TARGET libEGL
  1820. POST_BUILD
  1821. COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
  1822. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
  1823. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1824. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1825. )
  1826. endif()
  1827. if(BUILD_GLESv2)
  1828. add_library(libGLESv2 SHARED ${GLES2_LIST})
  1829. set_target_properties(libGLESv2 PROPERTIES
  1830. INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
  1831. FOLDER "OpenGL"
  1832. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1833. COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; GL_API=; GL_APICALL=; GLAPI=; NO_SANITIZE_FUNCTION=;"
  1834. PREFIX ""
  1835. )
  1836. if (ANDROID)
  1837. set_target_properties(libGLESv2 PROPERTIES SUFFIX "_swiftshader.so")
  1838. endif ()
  1839. set_shared_library_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
  1840. target_link_libraries(libGLESv2 SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
  1841. add_custom_command(
  1842. TARGET libGLESv2
  1843. POST_BUILD
  1844. COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
  1845. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
  1846. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1847. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1848. )
  1849. endif()
  1850. if(BUILD_GLES_CM)
  1851. add_library(libGLES_CM SHARED ${GLES_CM_LIST})
  1852. set_target_properties(libGLES_CM PROPERTIES
  1853. INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
  1854. FOLDER "OpenGL"
  1855. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1856. COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES; EGLAPI=; GL_API=; GL_APICALL=; GLAPI=;"
  1857. PREFIX ""
  1858. )
  1859. if (ANDROID)
  1860. set_target_properties(libGLES_CM PROPERTIES SUFFIX "_swiftshader.so")
  1861. endif ()
  1862. set_shared_library_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
  1863. target_link_libraries(libGLES_CM SwiftShader ${Reactor} GLCompiler ${OS_LIBS})
  1864. add_custom_command(
  1865. TARGET libGLES_CM
  1866. POST_BUILD
  1867. COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLES_CM>/translator
  1868. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLES_CM> $<TARGET_FILE_DIR:libGLES_CM>/translator/${LIB_PREFIX}GLES_CM_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
  1869. )
  1870. endif()
  1871. if(BUILD_VULKAN)
  1872. if (NOT TARGET SPIRV-Tools)
  1873. # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
  1874. set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Headers")
  1875. list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
  1876. add_subdirectory(third_party/SPIRV-Tools)
  1877. endif()
  1878. add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
  1879. set_target_properties(libvk_swiftshader PROPERTIES
  1880. INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
  1881. FOLDER "Vulkan"
  1882. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1883. COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
  1884. PREFIX ""
  1885. )
  1886. set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
  1887. target_link_libraries(libvk_swiftshader ${Reactor} ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
  1888. add_custom_command(
  1889. TARGET libvk_swiftshader
  1890. POST_BUILD
  1891. COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
  1892. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
  1893. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1894. COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
  1895. )
  1896. # The vk_swiftshader_icd.json manifest file will point to ICD_LIBRARY_PATH.
  1897. # Set ICD_LIBRARY_PATH to be a relative path similar to "./libvk_swiftshader.so", so both files can be moved.
  1898. # A relative path is relative to the manifest file.
  1899. # Note that the library name is always "libvk_swiftshader"; we do not use the platform-specific prefix.
  1900. set(ICD_LIBRARY_PATH "libvk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
  1901. if(WIN32)
  1902. # The path is output to a JSON file, which requires backslashes to be escaped.
  1903. set(ICD_LIBRARY_PATH ".\\${ICD_LIBRARY_PATH}")
  1904. else()
  1905. set(ICD_LIBRARY_PATH "./${ICD_LIBRARY_PATH}")
  1906. endif()
  1907. configure_file(
  1908. "${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
  1909. "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
  1910. endif()
  1911. ###########################################################
  1912. # Sample programs
  1913. ###########################################################
  1914. if(BUILD_SAMPLES)
  1915. if(WIN32)
  1916. add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_Windows.cpp)
  1917. set_target_properties(OGLES2HelloAPI PROPERTIES
  1918. INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
  1919. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1920. COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
  1921. FOLDER "Samples"
  1922. )
  1923. target_link_libraries(OGLES2HelloAPI libEGL libGLESv2)
  1924. set_property(TARGET OGLES2HelloAPI APPEND_STRING PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS")
  1925. set(CMAKE_DEFAULT_STARTUP_PROJECT OGLES2HelloAPI)
  1926. elseif(LINUX)
  1927. add_executable(OGLES2HelloAPI ${HELLO2_DIR}/OGLES2HelloAPI_LinuxX11.cpp)
  1928. set_target_properties(OGLES2HelloAPI PROPERTIES
  1929. INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
  1930. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1931. COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
  1932. )
  1933. target_link_libraries(OGLES2HelloAPI dl X11 libEGL libGLESv2) # Explicitly link our "lib*" targets, not the platform provided "EGL" and "GLESv2"
  1934. elseif(APPLE)
  1935. add_executable(OGLES2HelloAPI MACOSX_BUNDLE
  1936. ${HELLO2_DIR}/OGLES2HelloAPI_OSX.mm
  1937. ${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib
  1938. )
  1939. set_target_properties(OGLES2HelloAPI PROPERTIES
  1940. INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
  1941. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};-Wno-deprecated-declarations" # 'NSTitledWindowMask', 'NSClosableWindowMask' is deprecated
  1942. COMPILE_DEFINITIONS "GL_GLEXT_PROTOTYPES"
  1943. MACOSX_BUNDLE_INFO_PLIST "${HELLO2_DIR}/Build/OSX/Info.plist"
  1944. )
  1945. target_link_libraries(OGLES2HelloAPI libEGL libGLESv2 ${OS_LIBS})
  1946. set_source_files_properties(${HELLO2_DIR}/Build/OSX/en.lproj/MainMenu.xib PROPERTIES
  1947. MACOSX_PACKAGE_LOCATION "Resources"
  1948. )
  1949. endif()
  1950. endif()
  1951. if(BUILD_TESTS)
  1952. set(REACTOR_UNIT_TESTS_LIST
  1953. ${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
  1954. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
  1955. )
  1956. set(REACTOR_UNIT_TESTS_INCLUDE_DIR
  1957. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include
  1958. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
  1959. )
  1960. add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
  1961. set_target_properties(ReactorUnitTests PROPERTIES
  1962. INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
  1963. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1964. FOLDER "Tests"
  1965. )
  1966. if(NOT WIN32 AND ${REACTOR_BACKEND} STREQUAL "Subzero")
  1967. target_link_libraries(ReactorUnitTests ${Reactor} pthread dl)
  1968. else()
  1969. target_link_libraries(ReactorUnitTests ${Reactor})
  1970. endif()
  1971. endif()
  1972. if(BUILD_TESTS)
  1973. set(GLES_UNITTESTS_LIST
  1974. ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/main.cpp
  1975. ${CMAKE_CURRENT_SOURCE_DIR}/tests/GLESUnitTests/unittests.cpp
  1976. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
  1977. )
  1978. set(GLES_UNITTESTS_INCLUDE_DIR
  1979. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
  1980. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
  1981. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
  1982. ${CMAKE_CURRENT_SOURCE_DIR}/include/
  1983. )
  1984. add_executable(gles-unittests ${GLES_UNITTESTS_LIST})
  1985. set_target_properties(gles-unittests PROPERTIES
  1986. INCLUDE_DIRECTORIES "${GLES_UNITTESTS_INCLUDE_DIR}"
  1987. FOLDER "Tests"
  1988. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  1989. COMPILE_DEFINITIONS "STANDALONE"
  1990. )
  1991. target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS})
  1992. if(ANDROID)
  1993. target_link_libraries(gles-unittests -landroid)
  1994. endif()
  1995. endif()
  1996. if(BUILD_TESTS AND BUILD_VULKAN)
  1997. set(VK_UNITTESTS_LIST
  1998. ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Device.cpp
  1999. ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/Driver.cpp
  2000. ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/main.cpp
  2001. ${CMAKE_CURRENT_SOURCE_DIR}/tests/VulkanUnitTests/unittests.cpp
  2002. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/src/gtest-all.cc
  2003. )
  2004. set(VK_UNITTESTS_INCLUDE_DIR
  2005. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include/
  2006. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googlemock/include/
  2007. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/
  2008. ${CMAKE_CURRENT_SOURCE_DIR}/third_party/SPIRV-Tools/include
  2009. ${CMAKE_CURRENT_SOURCE_DIR}/include/
  2010. )
  2011. add_executable(vk-unittests ${VK_UNITTESTS_LIST})
  2012. set_target_properties(vk-unittests PROPERTIES
  2013. INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
  2014. FOLDER "Tests"
  2015. COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
  2016. COMPILE_DEFINITIONS "STANDALONE"
  2017. )
  2018. target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools)
  2019. endif()