xmake.lua 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243
  1. set_project("angle")
  2. set_version("6288")
  3. set_languages("c99", "c++17")
  4. add_rules("mode.debug", "mode.release")
  5. add_requires("python 3.x", {kind = "binary"})
  6. add_requires("zlib")
  7. -- add_requires("chromium_zlib")
  8. function angle_define_option(name, opt)
  9. local opt = opt or {}
  10. option(name)
  11. set_default(false)
  12. before_check(function (option)
  13. if opt.default then option:enable(true) end
  14. end)
  15. option_end()
  16. end
  17. -- gni/angle.gni
  18. angle_define_option("enable_cl", {default=false})
  19. angle_define_option("with_capture", {default=false})
  20. angle_define_option("use_x11", {default=is_plat("linux")})
  21. angle_define_option("use_wayland", {default=false})
  22. angle_define_option("use_libpci", {default=false})
  23. if has_config("use_x11") then
  24. add_requires("libx11", "libxext", "libxi")
  25. end
  26. if has_config("use_wayland") then
  27. add_requires("wayland")
  28. end
  29. if has_config("use_libpci") then
  30. add_requires("pciutils")
  31. end
  32. -- backends
  33. angle_define_option("enable_null", {default=false})
  34. angle_define_option("enable_d3d9", {default=is_plat("windows")})
  35. angle_define_option("enable_d3d11", {default=is_plat("windows")})
  36. angle_define_option("enable_gl", {default=true})
  37. angle_define_option("enable_metal", {default=is_plat("macosx")})
  38. angle_define_option("enable_vulkan", {default=false})
  39. angle_define_option("enable_gl_desktop", {default=is_plat("windows", "macosx", "linux")})
  40. angle_define_option("enable_hlsl", {default=is_plat("windows")})
  41. angle_define_option("enable_essl", {default=true})
  42. angle_define_option("enable_glsl", {default=true})
  43. -- loaders
  44. angle_define_option("enable_wgpu", {default=false})
  45. angle_define_option("enable_cgl", {default=is_plat("macosx")})
  46. angle_define_option("enable_eagl", {default=is_plat("iphoneos")})
  47. if has_config("enable_gl_desktop") then
  48. add_requires("opengl")
  49. end
  50. if has_config("enable_vulkan") then
  51. add_requires("vulkansdk")
  52. end
  53. local zlib_wrapper_sources = {
  54. "third_party/zlib/google/compression_utils_portable.cc"
  55. }
  56. -- src/compiler.gni
  57. local angle_translator_sources = {
  58. "src/compiler/translator/BaseTypes.cpp",
  59. "src/compiler/translator/BuiltInFunctionEmulator.cpp",
  60. "src/compiler/translator/CallDAG.cpp",
  61. "src/compiler/translator/CodeGen.cpp",
  62. "src/compiler/translator/CollectVariables.cpp",
  63. "src/compiler/translator/Compiler.cpp",
  64. "src/compiler/translator/ConstantUnion.cpp",
  65. "src/compiler/translator/Declarator.cpp",
  66. "src/compiler/translator/Diagnostics.cpp",
  67. "src/compiler/translator/DirectiveHandler.cpp",
  68. "src/compiler/translator/ExtensionBehavior.cpp",
  69. "src/compiler/translator/FlagStd140Structs.cpp",
  70. "src/compiler/translator/FunctionLookup.cpp",
  71. "src/compiler/translator/HashNames.cpp",
  72. "src/compiler/translator/ImmutableStringBuilder.cpp",
  73. "src/compiler/translator/InfoSink.cpp",
  74. "src/compiler/translator/Initialize.cpp",
  75. "src/compiler/translator/InitializeDll.cpp",
  76. "src/compiler/translator/IntermNode.cpp",
  77. "src/compiler/translator/IsASTDepthBelowLimit.cpp",
  78. "src/compiler/translator/Operator.cpp",
  79. "src/compiler/translator/OutputTree.cpp",
  80. "src/compiler/translator/ParseContext.cpp",
  81. "src/compiler/translator/PoolAlloc.cpp",
  82. "src/compiler/translator/QualifierTypes.cpp",
  83. "src/compiler/translator/ShaderLang.cpp",
  84. "src/compiler/translator/ShaderVars.cpp",
  85. "src/compiler/translator/Symbol.cpp",
  86. "src/compiler/translator/SymbolTable.cpp",
  87. "src/compiler/translator/SymbolUniqueId.cpp",
  88. "src/compiler/translator/Types.cpp",
  89. "src/compiler/translator/ValidateAST.cpp",
  90. "src/compiler/translator/ValidateBarrierFunctionCall.cpp",
  91. "src/compiler/translator/ValidateClipCullDistance.cpp",
  92. "src/compiler/translator/ValidateGlobalInitializer.cpp",
  93. "src/compiler/translator/ValidateLimitations.cpp",
  94. "src/compiler/translator/ValidateMaxParameters.cpp",
  95. "src/compiler/translator/ValidateOutputs.cpp",
  96. "src/compiler/translator/ValidateSwitch.cpp",
  97. "src/compiler/translator/ValidateTypeSizeLimitations.cpp",
  98. "src/compiler/translator/ValidateVaryingLocations.cpp",
  99. "src/compiler/translator/VariablePacker.cpp",
  100. "src/compiler/translator/blocklayout.cpp",
  101. "src/compiler/translator/glslang_lex_autogen.cpp",
  102. "src/compiler/translator/glslang_tab_autogen.cpp",
  103. "src/compiler/translator/tree_ops/ClampFragDepth.cpp",
  104. "src/compiler/translator/tree_ops/ClampIndirectIndices.cpp",
  105. "src/compiler/translator/tree_ops/ClampPointSize.cpp",
  106. "src/compiler/translator/tree_ops/DeclareAndInitBuiltinsForInstancedMultiview.cpp",
  107. "src/compiler/translator/tree_ops/DeclarePerVertexBlocks.cpp",
  108. "src/compiler/translator/tree_ops/DeferGlobalInitializers.cpp",
  109. "src/compiler/translator/tree_ops/EmulateGLFragColorBroadcast.cpp",
  110. "src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.cpp",
  111. "src/compiler/translator/tree_ops/FoldExpressions.cpp",
  112. "src/compiler/translator/tree_ops/ForcePrecisionQualifier.cpp",
  113. "src/compiler/translator/tree_ops/InitializeVariables.cpp",
  114. "src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.cpp",
  115. "src/compiler/translator/tree_ops/PreTransformTextureCubeGradDerivatives.cpp",
  116. "src/compiler/translator/tree_ops/PruneEmptyCases.cpp",
  117. "src/compiler/translator/tree_ops/PruneNoOps.cpp",
  118. "src/compiler/translator/tree_ops/RecordConstantPrecision.cpp",
  119. "src/compiler/translator/tree_ops/RemoveArrayLengthMethod.cpp",
  120. "src/compiler/translator/tree_ops/RemoveAtomicCounterBuiltins.cpp",
  121. "src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp",
  122. "src/compiler/translator/tree_ops/RemoveInactiveInterfaceVariables.cpp",
  123. "src/compiler/translator/tree_ops/RemoveInvariantDeclaration.cpp",
  124. "src/compiler/translator/tree_ops/RemoveUnreferencedVariables.cpp",
  125. "src/compiler/translator/tree_ops/RescopeGlobalVariables.cpp",
  126. "src/compiler/translator/tree_ops/RewriteArrayOfArrayOfOpaqueUniforms.cpp",
  127. "src/compiler/translator/tree_ops/RewriteAtomicCounters.cpp",
  128. "src/compiler/translator/tree_ops/RewriteCubeMapSamplersAs2DArray.cpp",
  129. "src/compiler/translator/tree_ops/RewriteDfdy.cpp",
  130. "src/compiler/translator/tree_ops/RewritePixelLocalStorage.cpp",
  131. "src/compiler/translator/tree_ops/RewriteStructSamplers.cpp",
  132. "src/compiler/translator/tree_ops/RewriteTexelFetchOffset.cpp",
  133. "src/compiler/translator/tree_ops/SeparateDeclarations.cpp",
  134. "src/compiler/translator/tree_ops/SeparateStructFromUniformDeclarations.cpp",
  135. "src/compiler/translator/tree_ops/SimplifyLoopConditions.cpp",
  136. "src/compiler/translator/tree_ops/SplitSequenceOperator.cpp",
  137. "src/compiler/translator/tree_util/DriverUniform.cpp",
  138. "src/compiler/translator/tree_util/FindFunction.cpp",
  139. "src/compiler/translator/tree_util/FindMain.cpp",
  140. "src/compiler/translator/tree_util/FindPreciseNodes.cpp",
  141. "src/compiler/translator/tree_util/FindSymbolNode.cpp",
  142. "src/compiler/translator/tree_util/IntermNodePatternMatcher.cpp",
  143. "src/compiler/translator/tree_util/IntermNode_util.cpp",
  144. "src/compiler/translator/tree_util/IntermTraverse.cpp",
  145. "src/compiler/translator/tree_util/ReplaceArrayOfMatrixVarying.cpp",
  146. "src/compiler/translator/tree_util/ReplaceClipCullDistanceVariable.cpp",
  147. "src/compiler/translator/tree_util/ReplaceShadowingVariables.cpp",
  148. "src/compiler/translator/tree_util/ReplaceVariable.cpp",
  149. "src/compiler/translator/tree_util/RewriteSampleMaskVariable.cpp",
  150. "src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp",
  151. "src/compiler/translator/tree_util/RunAtTheEndOfShader.cpp",
  152. "src/compiler/translator/tree_util/SpecializationConstant.cpp",
  153. "src/compiler/translator/util.cpp",
  154. }
  155. local angle_translator_glsl_base_sources = {
  156. "src/compiler/translator/glsl/OutputGLSLBase.cpp",
  157. }
  158. local angle_translator_glsl_and_vulkan_base_sources = {
  159. "src/compiler/translator/glsl/OutputGLSL.cpp",
  160. }
  161. local angle_translator_essl_sources = {
  162. "src/compiler/translator/glsl/OutputESSL.cpp",
  163. "src/compiler/translator/glsl/TranslatorESSL.cpp",
  164. }
  165. local angle_translator_glsl_sources = {
  166. "src/compiler/translator/glsl/BuiltInFunctionEmulatorGLSL.cpp",
  167. "src/compiler/translator/glsl/ExtensionGLSL.cpp",
  168. "src/compiler/translator/glsl/TranslatorGLSL.cpp",
  169. "src/compiler/translator/glsl/VersionGLSL.cpp",
  170. "src/compiler/translator/tree_ops/glsl/RegenerateStructNames.cpp",
  171. "src/compiler/translator/tree_ops/glsl/RewriteRepeatedAssignToSwizzled.cpp",
  172. "src/compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.cpp",
  173. "src/compiler/translator/tree_ops/glsl/UseInterfaceBlockFields.cpp",
  174. }
  175. local angle_translator_glsl_apple_sources = {
  176. "src/compiler/translator/tree_ops/glsl/apple/AddAndTrueToLoopCondition.cpp",
  177. "src/compiler/translator/tree_ops/glsl/apple/RewriteDoWhile.cpp",
  178. "src/compiler/translator/tree_ops/glsl/apple/RewriteRowMajorMatrices.cpp",
  179. "src/compiler/translator/tree_ops/glsl/apple/RewriteUnaryMinusOperatorFloat.cpp",
  180. "src/compiler/translator/tree_ops/glsl/apple/UnfoldShortCircuitAST.cpp",
  181. }
  182. local angle_translator_hlsl_sources = {
  183. "src/compiler/translator/hlsl/ASTMetadataHLSL.cpp",
  184. "src/compiler/translator/hlsl/AtomicCounterFunctionHLSL.cpp",
  185. "src/compiler/translator/hlsl/BuiltInFunctionEmulatorHLSL.cpp",
  186. "src/compiler/translator/hlsl/ImageFunctionHLSL.cpp",
  187. "src/compiler/translator/hlsl/OutputHLSL.cpp",
  188. "src/compiler/translator/hlsl/ResourcesHLSL.cpp",
  189. "src/compiler/translator/hlsl/ShaderStorageBlockFunctionHLSL.cpp",
  190. "src/compiler/translator/hlsl/ShaderStorageBlockOutputHLSL.cpp",
  191. "src/compiler/translator/hlsl/StructureHLSL.cpp",
  192. "src/compiler/translator/hlsl/TextureFunctionHLSL.cpp",
  193. "src/compiler/translator/hlsl/TranslatorHLSL.cpp",
  194. "src/compiler/translator/hlsl/UtilsHLSL.cpp",
  195. "src/compiler/translator/hlsl/blocklayoutHLSL.cpp",
  196. "src/compiler/translator/hlsl/emulated_builtin_functions_hlsl_autogen.cpp",
  197. "src/compiler/translator/tree_ops/hlsl/AddDefaultReturnStatements.cpp",
  198. "src/compiler/translator/tree_ops/hlsl/AggregateAssignArraysInSSBOs.cpp",
  199. "src/compiler/translator/tree_ops/hlsl/AggregateAssignStructsInSSBOs.cpp",
  200. "src/compiler/translator/tree_ops/hlsl/ArrayReturnValueToOutParameter.cpp",
  201. "src/compiler/translator/tree_ops/hlsl/BreakVariableAliasingInInnerLoops.cpp",
  202. "src/compiler/translator/tree_ops/hlsl/ExpandIntegerPowExpressions.cpp",
  203. "src/compiler/translator/tree_ops/hlsl/RecordUniformBlocksWithLargeArrayMember.cpp",
  204. "src/compiler/translator/tree_ops/hlsl/RemoveSwitchFallThrough.cpp",
  205. "src/compiler/translator/tree_ops/hlsl/RewriteAtomicFunctionExpressions.cpp",
  206. "src/compiler/translator/tree_ops/hlsl/RewriteElseBlocks.cpp",
  207. "src/compiler/translator/tree_ops/hlsl/RewriteExpressionsWithShaderStorageBlock.cpp",
  208. "src/compiler/translator/tree_ops/hlsl/RewriteUnaryMinusOperatorInt.cpp",
  209. "src/compiler/translator/tree_ops/hlsl/SeparateArrayConstructorStatements.cpp",
  210. "src/compiler/translator/tree_ops/hlsl/SeparateArrayInitialization.cpp",
  211. "src/compiler/translator/tree_ops/hlsl/SeparateExpressionsReturningArrays.cpp",
  212. "src/compiler/translator/tree_ops/hlsl/UnfoldShortCircuitToIf.cpp",
  213. "src/compiler/translator/tree_ops/hlsl/WrapSwitchStatementsInBlocks.cpp",
  214. }
  215. local angle_translator_lib_spirv_sources = {
  216. "src/compiler/translator/spirv/BuildSPIRV.cpp",
  217. "src/compiler/translator/spirv/BuiltinsWorkaround.cpp",
  218. "src/compiler/translator/spirv/OutputSPIRV.cpp",
  219. "src/compiler/translator/spirv/TranslatorSPIRV.cpp",
  220. "src/compiler/translator/tree_ops/spirv/EmulateAdvancedBlendEquations.cpp",
  221. "src/compiler/translator/tree_ops/spirv/EmulateDithering.cpp",
  222. "src/compiler/translator/tree_ops/spirv/EmulateFragColorData.cpp",
  223. "src/compiler/translator/tree_ops/spirv/EmulateFramebufferFetch.cpp",
  224. "src/compiler/translator/tree_ops/spirv/EmulateYUVBuiltIns.cpp",
  225. "src/compiler/translator/tree_ops/spirv/FlagSamplersWithTexelFetch.cpp",
  226. "src/compiler/translator/tree_ops/spirv/ReswizzleYUVOps.cpp",
  227. "src/compiler/translator/tree_ops/spirv/RewriteInterpolateAtOffset.cpp",
  228. "src/compiler/translator/tree_ops/spirv/RewriteR32fImages.cpp",
  229. }
  230. local angle_translator_essl_symbol_table_sources = {
  231. "src/compiler/translator/ImmutableString_ESSL_autogen.cpp",
  232. "src/compiler/translator/SymbolTable_ESSL_autogen.cpp",
  233. }
  234. local angle_translator_glsl_symbol_table_sources = {
  235. "src/compiler/translator/ImmutableString_autogen.cpp",
  236. "src/compiler/translator/SymbolTable_autogen.cpp",
  237. }
  238. local angle_translator_lib_msl_sources = {
  239. "src/compiler/translator/msl/AstHelpers.cpp",
  240. "src/compiler/translator/msl/ConstantNames.cpp",
  241. "src/compiler/translator/msl/DiscoverDependentFunctions.cpp",
  242. "src/compiler/translator/msl/DiscoverEnclosingFunctionTraverser.cpp",
  243. "src/compiler/translator/msl/DriverUniformMetal.cpp",
  244. "src/compiler/translator/msl/EmitMetal.cpp",
  245. "src/compiler/translator/msl/IdGen.cpp",
  246. "src/compiler/translator/msl/IntermRebuild.cpp",
  247. "src/compiler/translator/msl/Layout.cpp",
  248. "src/compiler/translator/msl/MapFunctionsToDefinitions.cpp",
  249. "src/compiler/translator/msl/MapSymbols.cpp",
  250. "src/compiler/translator/msl/ModifyStruct.cpp",
  251. "src/compiler/translator/msl/Name.cpp",
  252. "src/compiler/translator/msl/Pipeline.cpp",
  253. "src/compiler/translator/msl/ProgramPrelude.cpp",
  254. "src/compiler/translator/msl/RewritePipelines.cpp",
  255. "src/compiler/translator/msl/SymbolEnv.cpp",
  256. "src/compiler/translator/msl/ToposortStructs.cpp",
  257. "src/compiler/translator/msl/TranslatorMSL.cpp",
  258. "src/compiler/translator/msl/UtilsMSL.cpp",
  259. "src/compiler/translator/tree_ops/msl/AddExplicitTypeCasts.cpp",
  260. "src/compiler/translator/tree_ops/msl/ConvertUnsupportedConstructorsToFunctionCalls.cpp",
  261. "src/compiler/translator/tree_ops/msl/FixTypeConstructors.cpp",
  262. "src/compiler/translator/tree_ops/msl/GuardFragDepthWrite.cpp",
  263. "src/compiler/translator/tree_ops/msl/HoistConstants.cpp",
  264. "src/compiler/translator/tree_ops/msl/IntroduceVertexIndexID.cpp",
  265. "src/compiler/translator/tree_ops/msl/NameEmbeddedUniformStructsMetal.cpp",
  266. "src/compiler/translator/tree_ops/msl/ReduceInterfaceBlocks.cpp",
  267. "src/compiler/translator/tree_ops/msl/RewriteCaseDeclarations.cpp",
  268. "src/compiler/translator/tree_ops/msl/RewriteInterpolants.cpp",
  269. "src/compiler/translator/tree_ops/msl/RewriteOutArgs.cpp",
  270. "src/compiler/translator/tree_ops/msl/RewriteUnaddressableReferences.cpp",
  271. "src/compiler/translator/tree_ops/msl/SeparateCompoundExpressions.cpp",
  272. "src/compiler/translator/tree_ops/msl/SeparateCompoundStructDeclarations.cpp",
  273. "src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.cpp",
  274. "src/compiler/translator/tree_ops/msl/WrapMain.cpp",
  275. }
  276. local angle_preprocessor_sources = {
  277. "src/compiler/preprocessor/DiagnosticsBase.cpp",
  278. "src/compiler/preprocessor/DirectiveHandlerBase.cpp",
  279. "src/compiler/preprocessor/DirectiveParser.cpp",
  280. "src/compiler/preprocessor/Input.cpp",
  281. "src/compiler/preprocessor/Lexer.cpp",
  282. "src/compiler/preprocessor/Macro.cpp",
  283. "src/compiler/preprocessor/MacroExpander.cpp",
  284. "src/compiler/preprocessor/Preprocessor.cpp",
  285. "src/compiler/preprocessor/Token.cpp",
  286. "src/compiler/preprocessor/preprocessor_lex_autogen.cpp",
  287. "src/compiler/preprocessor/preprocessor_tab_autogen.cpp",
  288. }
  289. -- end src/compiler.gni
  290. -- src/libGLESv2.gni
  291. local libangle_common_sources = {
  292. "src/common/Float16ToFloat32.cpp",
  293. "src/common/MemoryBuffer.cpp",
  294. "src/common/PackedEGLEnums_autogen.cpp",
  295. "src/common/PackedEnums.cpp",
  296. "src/common/PackedGLEnums_autogen.cpp",
  297. "src/common/PoolAlloc.cpp",
  298. "src/common/RingBufferAllocator.cpp",
  299. "src/common/WorkerThread.cpp",
  300. "src/common/aligned_memory.cpp",
  301. "src/common/android_util.cpp",
  302. "src/common/angleutils.cpp",
  303. "src/common/base/anglebase/sha1.cc",
  304. "src/common/debug.cpp",
  305. "src/common/entry_points_enum_autogen.cpp",
  306. "src/common/event_tracer.cpp",
  307. "src/common/mathutil.cpp",
  308. "src/common/matrix_utils.cpp",
  309. "src/common/platform_helpers.cpp",
  310. "src/common/string_utils.cpp",
  311. "src/common/system_utils.cpp",
  312. "src/common/tls.cpp",
  313. "src/common/uniform_type_info_autogen.cpp",
  314. "src/common/utilities.cpp",
  315. }
  316. if is_plat("android") then
  317. table.join2(libangle_common_sources, "src/common/backtrace_utils_android.cpp")
  318. else
  319. table.join2(libangle_common_sources, "src/common/backtrace_utils_noop.cpp")
  320. end
  321. if is_plat("linux", "android") then
  322. table.join2(libangle_common_sources, "src/common/system_utils_linux.cpp")
  323. table.join2(libangle_common_sources, "src/common/system_utils_posix.cpp")
  324. end
  325. if is_plat("macosx", "iphoneos") then
  326. table.join2(libangle_common_sources, {
  327. "src/common/apple_platform_utils.mm",
  328. "src/common/system_utils_apple.cpp",
  329. "src/common/system_utils_posix.cpp",
  330. })
  331. if is_plat("macosx") then
  332. table.join2(libangle_common_sources, "src/common/gl/cgl/FunctionsCGL.cpp")
  333. table.join2(libangle_common_sources, "src/common/system_utils_mac.cpp")
  334. elseif is_plat("iphoneos") then
  335. table.join2(libangle_common_sources, "src/common/system_utils_ios.cpp")
  336. end
  337. end
  338. if is_plat("windows") then
  339. table.join2(libangle_common_sources, "src/common/system_utils_win.cpp")
  340. table.join2(libangle_common_sources, "src/common/system_utils_win32.cpp")
  341. end
  342. local libangle_common_shader_state_sources = {
  343. "src/common/CompiledShaderState.cpp"
  344. }
  345. local libangle_common_cl_sources = {
  346. "src/common/PackedCLEnums_autogen.cpp"
  347. }
  348. local xxhash_sources = {
  349. "src/common/third_party/xxhash/xxhash.c"
  350. }
  351. local libangle_image_util_sources = {
  352. "src/image_util/copyimage.cpp",
  353. "src/image_util/imageformats.cpp",
  354. "src/image_util/loadimage.cpp",
  355. "src/image_util/loadimage_astc.cpp",
  356. "src/image_util/loadimage_etc.cpp",
  357. "src/image_util/loadimage_paletted.cpp",
  358. "src/image_util/storeimage_paletted.cpp",
  359. -- no astc encoder
  360. "src/image_util/AstcDecompressorNoOp.cpp"
  361. }
  362. local libangle_gpu_info_util_sources = { "src/gpu_info_util/SystemInfo.cpp" }
  363. local libangle_gpu_info_util_win_sources = { "src/gpu_info_util/SystemInfo_win.cpp" }
  364. local libangle_gpu_info_util_android_sources = { "src/gpu_info_util/SystemInfo_android.cpp" }
  365. local libangle_gpu_info_util_linux_sources = { "src/gpu_info_util/SystemInfo_linux.cpp" }
  366. local libangle_gpu_info_util_vulkan_sources = { "src/gpu_info_util/SystemInfo_vulkan.cpp" }
  367. local libangle_gpu_info_util_libpci_sources = { "src/gpu_info_util/SystemInfo_libpci.cpp" }
  368. local libangle_gpu_info_util_x11_sources = { "src/gpu_info_util/SystemInfo_x11.cpp" }
  369. local libangle_gpu_info_util_mac_sources = {
  370. "src/gpu_info_util/SystemInfo_apple.mm",
  371. "src/gpu_info_util/SystemInfo_macos.mm",
  372. }
  373. local libangle_gpu_info_util_ios_sources = {
  374. "src/gpu_info_util/SystemInfo_apple.mm",
  375. "src/gpu_info_util/SystemInfo_ios.cpp",
  376. }
  377. local libXNVCtrl_sources = { "src/third_party/libXNVCtrl/NVCtrl.c" }
  378. local libangle_headers = { "src/libANGLE/entry_points_utils.cpp" }
  379. local libangle_sources = {
  380. "src/libANGLE/AttributeMap.cpp",
  381. "src/libANGLE/BlobCache.cpp",
  382. "src/libANGLE/Buffer.cpp",
  383. "src/libANGLE/Caps.cpp",
  384. "src/libANGLE/Compiler.cpp",
  385. "src/libANGLE/Config.cpp",
  386. "src/libANGLE/Context.cpp",
  387. "src/libANGLE/ContextMutex.cpp",
  388. "src/libANGLE/Context_gles_1_0.cpp",
  389. "src/libANGLE/Debug.cpp",
  390. "src/libANGLE/Device.cpp",
  391. "src/libANGLE/Display.cpp",
  392. "src/libANGLE/EGLSync.cpp",
  393. "src/libANGLE/Error.cpp",
  394. "src/libANGLE/Fence.cpp",
  395. "src/libANGLE/Framebuffer.cpp",
  396. "src/libANGLE/FramebufferAttachment.cpp",
  397. "src/libANGLE/GLES1Renderer.cpp",
  398. "src/libANGLE/GLES1State.cpp",
  399. "src/libANGLE/GlobalMutex.cpp",
  400. "src/libANGLE/HandleAllocator.cpp",
  401. "src/libANGLE/Image.cpp",
  402. "src/libANGLE/ImageIndex.cpp",
  403. "src/libANGLE/IndexRangeCache.cpp",
  404. "src/libANGLE/LoggingAnnotator.cpp",
  405. "src/libANGLE/MemoryObject.cpp",
  406. "src/libANGLE/MemoryProgramCache.cpp",
  407. "src/libANGLE/MemoryShaderCache.cpp",
  408. "src/libANGLE/Observer.cpp",
  409. "src/libANGLE/Overlay.cpp",
  410. "src/libANGLE/OverlayWidgets.cpp",
  411. "src/libANGLE/Overlay_autogen.cpp",
  412. "src/libANGLE/Overlay_font_autogen.cpp",
  413. "src/libANGLE/PixelLocalStorage.cpp",
  414. "src/libANGLE/Platform.cpp",
  415. "src/libANGLE/Program.cpp",
  416. "src/libANGLE/ProgramExecutable.cpp",
  417. "src/libANGLE/ProgramLinkedResources.cpp",
  418. "src/libANGLE/ProgramPipeline.cpp",
  419. "src/libANGLE/Query.cpp",
  420. "src/libANGLE/Renderbuffer.cpp",
  421. "src/libANGLE/ResourceManager.cpp",
  422. "src/libANGLE/Sampler.cpp",
  423. "src/libANGLE/Semaphore.cpp",
  424. "src/libANGLE/Shader.cpp",
  425. "src/libANGLE/ShareGroup.cpp",
  426. "src/libANGLE/State.cpp",
  427. "src/libANGLE/Stream.cpp",
  428. "src/libANGLE/Surface.cpp",
  429. "src/libANGLE/Texture.cpp",
  430. "src/libANGLE/Thread.cpp",
  431. "src/libANGLE/TransformFeedback.cpp",
  432. "src/libANGLE/Uniform.cpp",
  433. "src/libANGLE/VaryingPacking.cpp",
  434. "src/libANGLE/VertexArray.cpp",
  435. "src/libANGLE/VertexAttribute.cpp",
  436. "src/libANGLE/angletypes.cpp",
  437. "src/libANGLE/context_private_call_gles.cpp",
  438. "src/libANGLE/es3_copy_conversion_table_autogen.cpp",
  439. "src/libANGLE/format_map_autogen.cpp",
  440. "src/libANGLE/format_map_desktop.cpp",
  441. "src/libANGLE/formatutils.cpp",
  442. "src/libANGLE/gles_extensions_autogen.cpp",
  443. "src/libANGLE/queryconversions.cpp",
  444. "src/libANGLE/queryutils.cpp",
  445. "src/libANGLE/renderer/BufferImpl.cpp",
  446. "src/libANGLE/renderer/ContextImpl.cpp",
  447. "src/libANGLE/renderer/DeviceImpl.cpp",
  448. "src/libANGLE/renderer/DisplayImpl.cpp",
  449. "src/libANGLE/renderer/EGLReusableSync.cpp",
  450. "src/libANGLE/renderer/EGLSyncImpl.cpp",
  451. "src/libANGLE/renderer/Format_table_autogen.cpp",
  452. "src/libANGLE/renderer/FramebufferImpl.cpp",
  453. "src/libANGLE/renderer/ImageImpl.cpp",
  454. "src/libANGLE/renderer/ProgramImpl.cpp",
  455. "src/libANGLE/renderer/ProgramPipelineImpl.cpp",
  456. "src/libANGLE/renderer/QueryImpl.cpp",
  457. "src/libANGLE/renderer/RenderbufferImpl.cpp",
  458. "src/libANGLE/renderer/ShaderImpl.cpp",
  459. "src/libANGLE/renderer/SurfaceImpl.cpp",
  460. "src/libANGLE/renderer/TextureImpl.cpp",
  461. "src/libANGLE/renderer/TransformFeedbackImpl.cpp",
  462. "src/libANGLE/renderer/VertexArrayImpl.cpp",
  463. "src/libANGLE/renderer/driver_utils.cpp",
  464. "src/libANGLE/renderer/load_functions_table_autogen.cpp",
  465. "src/libANGLE/renderer/renderer_utils.cpp",
  466. "src/libANGLE/validationEGL.cpp",
  467. "src/libANGLE/validationES.cpp",
  468. "src/libANGLE/validationES1.cpp",
  469. "src/libANGLE/validationES2.cpp",
  470. "src/libANGLE/validationES3.cpp",
  471. "src/libANGLE/validationES31.cpp",
  472. "src/libANGLE/validationES32.cpp",
  473. "src/libANGLE/validationESEXT.cpp",
  474. }
  475. local libangle_gl_sources = {
  476. "src/libANGLE/Context_gl.cpp",
  477. "src/libANGLE/context_private_call_gl.cpp",
  478. "src/libANGLE/validationGL1.cpp",
  479. "src/libANGLE/validationGL2.cpp",
  480. "src/libANGLE/validationGL3.cpp",
  481. "src/libANGLE/validationGL4.cpp",
  482. }
  483. local libangle_cl_sources = {
  484. "src/libANGLE/CLBuffer.cpp",
  485. "src/libANGLE/CLCommandQueue.cpp",
  486. "src/libANGLE/CLContext.cpp",
  487. "src/libANGLE/CLDevice.cpp",
  488. "src/libANGLE/CLEvent.cpp",
  489. "src/libANGLE/CLImage.cpp",
  490. "src/libANGLE/CLKernel.cpp",
  491. "src/libANGLE/CLMemory.cpp",
  492. "src/libANGLE/CLObject.cpp",
  493. "src/libANGLE/CLPlatform.cpp",
  494. "src/libANGLE/CLProgram.cpp",
  495. "src/libANGLE/CLSampler.cpp",
  496. "src/libANGLE/cl_utils.cpp",
  497. "src/libANGLE/renderer/CLCommandQueueImpl.cpp",
  498. "src/libANGLE/renderer/CLContextImpl.cpp",
  499. "src/libANGLE/renderer/CLDeviceImpl.cpp",
  500. "src/libANGLE/renderer/CLEventImpl.cpp",
  501. "src/libANGLE/renderer/CLExtensions.cpp",
  502. "src/libANGLE/renderer/CLKernelImpl.cpp",
  503. "src/libANGLE/renderer/CLMemoryImpl.cpp",
  504. "src/libANGLE/renderer/CLPlatformImpl.cpp",
  505. "src/libANGLE/renderer/CLProgramImpl.cpp",
  506. "src/libANGLE/renderer/CLSamplerImpl.cpp",
  507. "src/libANGLE/validationCL.cpp",
  508. }
  509. local libangle_mac_sources = {
  510. "src/libANGLE/renderer/driver_utils_mac.mm",
  511. }
  512. local libangle_capture_sources = {
  513. "src/libANGLE/capture/FrameCapture.cpp",
  514. "src/libANGLE/capture/capture_egl_autogen.cpp",
  515. "src/libANGLE/capture/capture_gl_1_autogen.cpp",
  516. "src/libANGLE/capture/capture_gl_1_params.cpp",
  517. "src/libANGLE/capture/capture_gl_2_autogen.cpp",
  518. "src/libANGLE/capture/capture_gl_2_params.cpp",
  519. "src/libANGLE/capture/capture_gl_3_autogen.cpp",
  520. "src/libANGLE/capture/capture_gl_3_params.cpp",
  521. "src/libANGLE/capture/capture_gl_4_autogen.cpp",
  522. "src/libANGLE/capture/capture_gl_4_params.cpp",
  523. "src/libANGLE/capture/capture_gles_1_0_autogen.cpp",
  524. "src/libANGLE/capture/capture_gles_1_0_params.cpp",
  525. "src/libANGLE/capture/capture_gles_2_0_autogen.cpp",
  526. "src/libANGLE/capture/capture_gles_2_0_params.cpp",
  527. "src/libANGLE/capture/capture_gles_3_0_autogen.cpp",
  528. "src/libANGLE/capture/capture_gles_3_0_params.cpp",
  529. "src/libANGLE/capture/capture_gles_3_1_autogen.cpp",
  530. "src/libANGLE/capture/capture_gles_3_1_params.cpp",
  531. "src/libANGLE/capture/capture_gles_3_2_autogen.cpp",
  532. "src/libANGLE/capture/capture_gles_3_2_params.cpp",
  533. "src/libANGLE/capture/capture_gles_ext_autogen.cpp",
  534. "src/libANGLE/capture/capture_gles_ext_params.cpp",
  535. }
  536. local libglesv2_sources = {
  537. "src/libGLESv2/egl_ext_stubs.cpp",
  538. "src/libGLESv2/egl_stubs.cpp",
  539. "src/libGLESv2/entry_points_egl_autogen.cpp",
  540. "src/libGLESv2/entry_points_egl_ext_autogen.cpp",
  541. "src/libGLESv2/entry_points_gles_1_0_autogen.cpp",
  542. "src/libGLESv2/entry_points_gles_2_0_autogen.cpp",
  543. "src/libGLESv2/entry_points_gles_3_0_autogen.cpp",
  544. "src/libGLESv2/entry_points_gles_3_1_autogen.cpp",
  545. "src/libGLESv2/entry_points_gles_3_2_autogen.cpp",
  546. "src/libGLESv2/entry_points_gles_ext_autogen.cpp",
  547. "src/libGLESv2/global_state.cpp",
  548. "src/libGLESv2/libGLESv2_autogen.cpp",
  549. "src/libGLESv2/proc_table_egl_autogen.cpp",
  550. }
  551. local libglesv2_gl_sources = {
  552. "src/libGLESv2/entry_points_gl_1_autogen.cpp",
  553. "src/libGLESv2/entry_points_gl_2_autogen.cpp",
  554. "src/libGLESv2/entry_points_gl_3_autogen.cpp",
  555. "src/libGLESv2/entry_points_gl_4_autogen.cpp",
  556. }
  557. local libglesv2_cl_sources = {
  558. "src/libGLESv2/cl_dispatch_table.cpp",
  559. "src/libGLESv2/cl_stubs.cpp",
  560. "src/libGLESv2/entry_points_cl_autogen.cpp",
  561. "src/libGLESv2/entry_points_cl_utils.cpp",
  562. "src/libGLESv2/proc_table_cl_autogen.cpp",
  563. }
  564. local libglesv1_cm_sources = {
  565. "src/libGLESv1_CM/libGLESv1_CM.cpp",
  566. }
  567. if is_plat("windows") then
  568. table.join2(libglesv1_cm_sources, "src/libGLESv1_CM/libGLESv1_CM.rc")
  569. end
  570. local libegl_sources = {
  571. "src/libEGL/libEGL_autogen.cpp",
  572. }
  573. -- end src/libGLESv2.gni
  574. -- src/common/linux/BUILD.gn
  575. local angle_dma_buf = {
  576. "src/common/linux/dma_buf_utils.cpp",
  577. }
  578. -- end src/common/linux/BUILD.gn
  579. -- src/libANGLE/renderer/null/null_backend.gni
  580. local null_backend_sources = {
  581. "src/libANGLE/renderer/null/BufferNULL.cpp",
  582. "src/libANGLE/renderer/null/CompilerNULL.cpp",
  583. "src/libANGLE/renderer/null/ContextNULL.cpp",
  584. "src/libANGLE/renderer/null/DeviceNULL.cpp",
  585. "src/libANGLE/renderer/null/DisplayNULL.cpp",
  586. "src/libANGLE/renderer/null/FenceNVNULL.cpp",
  587. "src/libANGLE/renderer/null/FramebufferNULL.cpp",
  588. "src/libANGLE/renderer/null/ImageNULL.cpp",
  589. "src/libANGLE/renderer/null/ProgramExecutableNULL.cpp",
  590. "src/libANGLE/renderer/null/ProgramNULL.cpp",
  591. "src/libANGLE/renderer/null/ProgramPipelineNULL.cpp",
  592. "src/libANGLE/renderer/null/QueryNULL.cpp",
  593. "src/libANGLE/renderer/null/RenderbufferNULL.cpp",
  594. "src/libANGLE/renderer/null/SamplerNULL.cpp",
  595. "src/libANGLE/renderer/null/ShaderNULL.cpp",
  596. "src/libANGLE/renderer/null/SurfaceNULL.cpp",
  597. "src/libANGLE/renderer/null/SyncNULL.cpp",
  598. "src/libANGLE/renderer/null/TextureNULL.cpp",
  599. "src/libANGLE/renderer/null/TransformFeedbackNULL.cpp",
  600. "src/libANGLE/renderer/null/VertexArrayNULL.cpp",
  601. }
  602. -- end src/libANGLE/renderer/null/null_backend.gni
  603. -- src/libANGLE/renderer/cl/BUILD.gn
  604. local cl_backend_sources = {
  605. "src/libANGLE/renderer/cl/CLCommandQueueCL.cpp",
  606. "src/libANGLE/renderer/cl/CLContextCL.cpp",
  607. "src/libANGLE/renderer/cl/CLDeviceCL.cpp",
  608. "src/libANGLE/renderer/cl/CLEventCL.cpp",
  609. "src/libANGLE/renderer/cl/CLKernelCL.cpp",
  610. "src/libANGLE/renderer/cl/CLMemoryCL.cpp",
  611. "src/libANGLE/renderer/cl/CLPlatformCL.cpp",
  612. "src/libANGLE/renderer/cl/CLProgramCL.cpp",
  613. "src/libANGLE/renderer/cl/CLSamplerCL.cpp",
  614. "src/libANGLE/renderer/cl/cl_util.cpp",
  615. }
  616. -- end src/libANGLE/renderer/cl/BUILD.gn
  617. -- src/libANGLE/renderer/d3d/d3d_backend.gni
  618. local d3d_shared_sources = {
  619. "src/libANGLE/renderer/d3d/BufferD3D.cpp",
  620. "src/libANGLE/renderer/d3d/CompilerD3D.cpp",
  621. "src/libANGLE/renderer/d3d/DeviceD3D.cpp",
  622. "src/libANGLE/renderer/d3d/DisplayD3D.cpp",
  623. "src/libANGLE/renderer/d3d/DynamicHLSL.cpp",
  624. "src/libANGLE/renderer/d3d/DynamicImage2DHLSL.cpp",
  625. "src/libANGLE/renderer/d3d/EGLImageD3D.cpp",
  626. "src/libANGLE/renderer/d3d/FramebufferD3D.cpp",
  627. "src/libANGLE/renderer/d3d/HLSLCompiler.cpp",
  628. "src/libANGLE/renderer/d3d/ImageD3D.cpp",
  629. "src/libANGLE/renderer/d3d/IndexBuffer.cpp",
  630. "src/libANGLE/renderer/d3d/IndexDataManager.cpp",
  631. "src/libANGLE/renderer/d3d/NativeWindowD3D.cpp",
  632. "src/libANGLE/renderer/d3d/ProgramD3D.cpp",
  633. "src/libANGLE/renderer/d3d/ProgramExecutableD3D.cpp",
  634. "src/libANGLE/renderer/d3d/RenderTargetD3D.cpp",
  635. "src/libANGLE/renderer/d3d/RenderbufferD3D.cpp",
  636. "src/libANGLE/renderer/d3d/RendererD3D.cpp",
  637. "src/libANGLE/renderer/d3d/ShaderD3D.cpp",
  638. "src/libANGLE/renderer/d3d/ShaderExecutableD3D.cpp",
  639. "src/libANGLE/renderer/d3d/SurfaceD3D.cpp",
  640. "src/libANGLE/renderer/d3d/SwapChainD3D.cpp",
  641. "src/libANGLE/renderer/d3d/TextureD3D.cpp",
  642. "src/libANGLE/renderer/d3d/VertexBuffer.cpp",
  643. "src/libANGLE/renderer/d3d/VertexDataManager.cpp",
  644. "src/libANGLE/renderer/d3d/driver_utils_d3d.cpp",
  645. }
  646. local d3d9_backend_sources = {
  647. "src/libANGLE/renderer/d3d/d3d9/Blit9.cpp",
  648. "src/libANGLE/renderer/d3d/d3d9/Buffer9.cpp",
  649. "src/libANGLE/renderer/d3d/d3d9/Context9.cpp",
  650. "src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.cpp",
  651. "src/libANGLE/renderer/d3d/d3d9/Fence9.cpp",
  652. "src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp",
  653. "src/libANGLE/renderer/d3d/d3d9/Image9.cpp",
  654. "src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.cpp",
  655. "src/libANGLE/renderer/d3d/d3d9/NativeWindow9.cpp",
  656. "src/libANGLE/renderer/d3d/d3d9/Query9.cpp",
  657. "src/libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp",
  658. "src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp",
  659. "src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.cpp",
  660. "src/libANGLE/renderer/d3d/d3d9/StateManager9.cpp",
  661. "src/libANGLE/renderer/d3d/d3d9/SwapChain9.cpp",
  662. "src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp",
  663. "src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.cpp",
  664. "src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp",
  665. "src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp",
  666. "src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp",
  667. }
  668. local d3d11_backend_sources = {
  669. "src/libANGLE/renderer/d3d/d3d11/Blit11.cpp",
  670. "src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp",
  671. "src/libANGLE/renderer/d3d/d3d11/Clear11.cpp",
  672. "src/libANGLE/renderer/d3d/d3d11/Context11.cpp",
  673. "src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp",
  674. "src/libANGLE/renderer/d3d/d3d11/ExternalImageSiblingImpl11.cpp",
  675. "src/libANGLE/renderer/d3d/d3d11/Fence11.cpp",
  676. "src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp",
  677. "src/libANGLE/renderer/d3d/d3d11/Image11.cpp",
  678. "src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.cpp",
  679. "src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp",
  680. "src/libANGLE/renderer/d3d/d3d11/MappedSubresourceVerifier11.cpp",
  681. "src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp",
  682. "src/libANGLE/renderer/d3d/d3d11/Program11.cpp",
  683. "src/libANGLE/renderer/d3d/d3d11/ProgramPipeline11.cpp",
  684. "src/libANGLE/renderer/d3d/d3d11/Query11.cpp",
  685. "src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp",
  686. "src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp",
  687. "src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp",
  688. "src/libANGLE/renderer/d3d/d3d11/ResourceManager11.cpp",
  689. "src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.cpp",
  690. "src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp",
  691. "src/libANGLE/renderer/d3d/d3d11/StreamProducerD3DTexture.cpp",
  692. "src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp",
  693. "src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp",
  694. "src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp",
  695. "src/libANGLE/renderer/d3d/d3d11/Trim11.cpp",
  696. "src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp",
  697. "src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp",
  698. "src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp",
  699. "src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp",
  700. "src/libANGLE/renderer/d3d/d3d11/texture_format_table.cpp",
  701. "src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp",
  702. "src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp",
  703. "src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp",
  704. }
  705. -- end src/libANGLE/renderer/d3d/d3d_backend.gni
  706. -- src/libANGLE/renderer/gl/gl_backend.gni
  707. local gl_backend_sources = {
  708. "src/libANGLE/renderer/gl/BlitGL.cpp",
  709. "src/libANGLE/renderer/gl/BufferGL.cpp",
  710. "src/libANGLE/renderer/gl/ClearMultiviewGL.cpp",
  711. "src/libANGLE/renderer/gl/CompilerGL.cpp",
  712. "src/libANGLE/renderer/gl/ContextGL.cpp",
  713. "src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp",
  714. "src/libANGLE/renderer/gl/DisplayGL.cpp",
  715. "src/libANGLE/renderer/gl/FenceNVGL.cpp",
  716. "src/libANGLE/renderer/gl/FramebufferGL.cpp",
  717. "src/libANGLE/renderer/gl/FunctionsGL.cpp",
  718. "src/libANGLE/renderer/gl/ImageGL.cpp",
  719. "src/libANGLE/renderer/gl/MemoryObjectGL.cpp",
  720. "src/libANGLE/renderer/gl/PLSProgramCache.cpp",
  721. "src/libANGLE/renderer/gl/ProgramExecutableGL.cpp",
  722. "src/libANGLE/renderer/gl/ProgramGL.cpp",
  723. "src/libANGLE/renderer/gl/ProgramPipelineGL.cpp",
  724. "src/libANGLE/renderer/gl/QueryGL.cpp",
  725. "src/libANGLE/renderer/gl/RenderbufferGL.cpp",
  726. "src/libANGLE/renderer/gl/RendererGL.cpp",
  727. "src/libANGLE/renderer/gl/SamplerGL.cpp",
  728. "src/libANGLE/renderer/gl/SemaphoreGL.cpp",
  729. "src/libANGLE/renderer/gl/ShaderGL.cpp",
  730. "src/libANGLE/renderer/gl/StateManagerGL.cpp",
  731. "src/libANGLE/renderer/gl/SurfaceGL.cpp",
  732. "src/libANGLE/renderer/gl/SyncGL.cpp",
  733. "src/libANGLE/renderer/gl/TextureGL.cpp",
  734. "src/libANGLE/renderer/gl/TransformFeedbackGL.cpp",
  735. "src/libANGLE/renderer/gl/VertexArrayGL.cpp",
  736. "src/libANGLE/renderer/gl/formatutilsgl.cpp",
  737. "src/libANGLE/renderer/gl/renderergl_utils.cpp",
  738. "src/libANGLE/renderer/gl/null_functions.cpp",
  739. }
  740. local gl_backend_sources_wgl = {
  741. "src/libANGLE/renderer/gl/wgl/ContextWGL.cpp",
  742. "src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.cpp",
  743. "src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.cpp",
  744. "src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp",
  745. "src/libANGLE/renderer/gl/wgl/FunctionsWGL.cpp",
  746. "src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.cpp",
  747. "src/libANGLE/renderer/gl/wgl/RendererWGL.cpp",
  748. "src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.cpp",
  749. "src/libANGLE/renderer/gl/wgl/wgl_utils.cpp",
  750. }
  751. if is_plat("windows") then
  752. table.join2(gl_backend_sources, gl_backend_sources_wgl)
  753. end
  754. local gl_backend_sources_glx = {
  755. "src/libANGLE/renderer/gl/glx/DisplayGLX.cpp",
  756. "src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp",
  757. "src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.cpp",
  758. "src/libANGLE/renderer/gl/glx/PixmapSurfaceGLX.cpp",
  759. "src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp",
  760. "src/libANGLE/renderer/gl/glx/glx_utils.cpp",
  761. }
  762. if has_config("use_x11") then
  763. table.join2(gl_backend_sources, gl_backend_sources_glx)
  764. end
  765. local gl_backend_sources_egl = {
  766. "src/libANGLE/renderer/gl/egl/ContextEGL.cpp",
  767. "src/libANGLE/renderer/gl/egl/DeviceEGL.cpp",
  768. "src/libANGLE/renderer/gl/egl/DisplayEGL.cpp",
  769. "src/libANGLE/renderer/gl/egl/DmaBufImageSiblingEGL.cpp",
  770. "src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp",
  771. "src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp",
  772. "src/libANGLE/renderer/gl/egl/ImageEGL.cpp",
  773. "src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.cpp",
  774. "src/libANGLE/renderer/gl/egl/RendererEGL.cpp",
  775. "src/libANGLE/renderer/gl/egl/SurfaceEGL.cpp",
  776. "src/libANGLE/renderer/gl/egl/SyncEGL.cpp",
  777. "src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.cpp",
  778. "src/libANGLE/renderer/gl/egl/egl_utils.cpp",
  779. }
  780. if is_plat("linux") or is_plat("android") then
  781. table.join2(gl_backend_sources, gl_backend_sources_egl)
  782. end
  783. local gl_backend_sources_android = {
  784. "src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp",
  785. "src/libANGLE/renderer/gl/egl/android/NativeBufferImageSiblingAndroid.cpp",
  786. }
  787. if is_plat("android") then
  788. table.join2(gl_backend_sources, gl_backend_sources_android)
  789. end
  790. local gl_backend_sources_cgl = {
  791. "src/libANGLE/renderer/gl/cgl/ContextCGL.cpp",
  792. "src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp",
  793. "src/libANGLE/renderer/gl/cgl/DisplayCGL.mm",
  794. "src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp",
  795. "src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.cpp",
  796. "src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm",
  797. }
  798. if has_config("enable_cgl") then
  799. table.join2(gl_backend_sources, gl_backend_sources_cgl)
  800. end
  801. local gl_backend_sources_eagl = {
  802. "src/libANGLE/renderer/gl/eagl/ContextEAGL.cpp",
  803. "src/libANGLE/renderer/gl/eagl/DeviceEAGL.cpp",
  804. "src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm",
  805. "src/libANGLE/renderer/gl/eagl/FunctionsEAGL.mm",
  806. "src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm",
  807. "src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp",
  808. "src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm",
  809. }
  810. if has_config("enable_eagl") then
  811. table.join2(gl_backend_sources, gl_backend_sources_eagl)
  812. end
  813. -- end src/libANGLE/renderer/gl/gl_backend.gni
  814. -- src/libANGLE/renderer/metal/metal_backend.gni
  815. local metal_backend_sources = {
  816. "src/libANGLE/renderer/metal/BufferMtl.mm",
  817. "src/libANGLE/renderer/metal/CompilerMtl.mm",
  818. "src/libANGLE/renderer/metal/ContextMtl.mm",
  819. "src/libANGLE/renderer/metal/DeviceMtl.mm",
  820. "src/libANGLE/renderer/metal/DisplayMtl.mm",
  821. "src/libANGLE/renderer/metal/FrameBufferMtl.mm",
  822. "src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm",
  823. "src/libANGLE/renderer/metal/ImageMtl.mm",
  824. "src/libANGLE/renderer/metal/ProgramExecutableMtl.mm",
  825. "src/libANGLE/renderer/metal/ProgramMtl.mm",
  826. "src/libANGLE/renderer/metal/ProvokingVertexHelper.mm",
  827. "src/libANGLE/renderer/metal/QueryMtl.mm",
  828. "src/libANGLE/renderer/metal/RenderBufferMtl.mm",
  829. "src/libANGLE/renderer/metal/RenderTargetMtl.mm",
  830. "src/libANGLE/renderer/metal/SamplerMtl.mm",
  831. "src/libANGLE/renderer/metal/ShaderMtl.mm",
  832. "src/libANGLE/renderer/metal/SurfaceMtl.mm",
  833. "src/libANGLE/renderer/metal/SyncMtl.mm",
  834. "src/libANGLE/renderer/metal/TextureMtl.mm",
  835. "src/libANGLE/renderer/metal/TransformFeedbackMtl.mm",
  836. "src/libANGLE/renderer/metal/VertexArrayMtl.mm",
  837. "src/libANGLE/renderer/metal/blocklayoutMetal.cpp",
  838. "src/libANGLE/renderer/metal/mtl_buffer_manager.mm",
  839. "src/libANGLE/renderer/metal/mtl_buffer_pool.mm",
  840. "src/libANGLE/renderer/metal/mtl_command_buffer.mm",
  841. "src/libANGLE/renderer/metal/mtl_common.mm",
  842. "src/libANGLE/renderer/metal/mtl_context_device.mm",
  843. "src/libANGLE/renderer/metal/mtl_format_table_autogen.mm",
  844. "src/libANGLE/renderer/metal/mtl_format_utils.mm",
  845. "src/libANGLE/renderer/metal/mtl_library_cache.mm",
  846. "src/libANGLE/renderer/metal/mtl_msl_utils.mm",
  847. "src/libANGLE/renderer/metal/mtl_occlusion_query_pool.mm",
  848. "src/libANGLE/renderer/metal/mtl_pipeline_cache.mm",
  849. "src/libANGLE/renderer/metal/mtl_render_utils.mm",
  850. "src/libANGLE/renderer/metal/mtl_resources.mm",
  851. "src/libANGLE/renderer/metal/mtl_state_cache.mm",
  852. "src/libANGLE/renderer/metal/mtl_utils.mm",
  853. "src/libANGLE/renderer/metal/process.cpp",
  854. "src/libANGLE/renderer/metal/renderermtl_utils.cpp",
  855. }
  856. -- end src/libANGLE/renderer/metal/metal_backend.gni
  857. -- src/libANGLE/renderer/vulkan/vulkan_backend.gni
  858. local vulkan_backend_sources = {
  859. "src/libANGLE/renderer/vulkan/AllocatorHelperPool.cpp",
  860. "src/libANGLE/renderer/vulkan/AllocatorHelperRing.cpp",
  861. "src/libANGLE/renderer/vulkan/BufferVk.cpp",
  862. "src/libANGLE/renderer/vulkan/CommandProcessor.cpp",
  863. "src/libANGLE/renderer/vulkan/CompilerVk.cpp",
  864. "src/libANGLE/renderer/vulkan/ContextVk.cpp",
  865. "src/libANGLE/renderer/vulkan/DebugAnnotatorVk.cpp",
  866. "src/libANGLE/renderer/vulkan/DeviceVk.cpp",
  867. "src/libANGLE/renderer/vulkan/DisplayVk.cpp",
  868. "src/libANGLE/renderer/vulkan/FenceNVVk.cpp",
  869. "src/libANGLE/renderer/vulkan/FramebufferVk.cpp",
  870. "src/libANGLE/renderer/vulkan/ImageVk.cpp",
  871. "src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp",
  872. "src/libANGLE/renderer/vulkan/MemoryTracking.cpp",
  873. "src/libANGLE/renderer/vulkan/OverlayVk.cpp",
  874. "src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp",
  875. "src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp",
  876. "src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp",
  877. "src/libANGLE/renderer/vulkan/ProgramVk.cpp",
  878. "src/libANGLE/renderer/vulkan/QueryVk.cpp",
  879. "src/libANGLE/renderer/vulkan/RenderTargetVk.cpp",
  880. "src/libANGLE/renderer/vulkan/RenderbufferVk.cpp",
  881. "src/libANGLE/renderer/vulkan/RendererVk.cpp",
  882. "src/libANGLE/renderer/vulkan/ResourceVk.cpp",
  883. "src/libANGLE/renderer/vulkan/SamplerVk.cpp",
  884. "src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp",
  885. "src/libANGLE/renderer/vulkan/SecondaryCommandPool.cpp",
  886. "src/libANGLE/renderer/vulkan/SemaphoreVk.cpp",
  887. "src/libANGLE/renderer/vulkan/ShaderInterfaceVariableInfoMap.cpp",
  888. "src/libANGLE/renderer/vulkan/ShaderVk.cpp",
  889. "src/libANGLE/renderer/vulkan/ShareGroupVk.cpp",
  890. "src/libANGLE/renderer/vulkan/Suballocation.cpp",
  891. "src/libANGLE/renderer/vulkan/SurfaceVk.cpp",
  892. "src/libANGLE/renderer/vulkan/SyncVk.cpp",
  893. "src/libANGLE/renderer/vulkan/TextureVk.cpp",
  894. "src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp",
  895. "src/libANGLE/renderer/vulkan/UtilsVk.cpp",
  896. "src/libANGLE/renderer/vulkan/VertexArrayVk.cpp",
  897. "src/libANGLE/renderer/vulkan/VkImageImageSiblingVk.cpp",
  898. "src/libANGLE/renderer/vulkan/VulkanSecondaryCommandBuffer.cpp",
  899. "src/libANGLE/renderer/vulkan/android/vk_android_utils.cpp",
  900. "src/libANGLE/renderer/vulkan/spv_utils.cpp",
  901. "src/libANGLE/renderer/vulkan/vk_cache_utils.cpp",
  902. "src/libANGLE/renderer/vulkan/vk_caps_utils.cpp",
  903. "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp",
  904. "src/libANGLE/renderer/vulkan/vk_format_utils.cpp",
  905. "src/libANGLE/renderer/vulkan/vk_helpers.cpp",
  906. "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp",
  907. "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp",
  908. "src/libANGLE/renderer/vulkan/vk_utils.cpp",
  909. }
  910. -- end src/libANGLE/renderer/vulkan/vulkan_backend.gni
  911. -- BUILD.gn
  912. local angle_capture_common = {
  913. "src/common/frame_capture_utils.cpp",
  914. "src/common/frame_capture_utils_autogen.cpp",
  915. }
  916. local angle_version_info = { "src/common/angle_version_info.cpp" }
  917. local angle_d3d_format_tables = {
  918. "src/libANGLE/renderer/dxgi_format_map_autogen.cpp",
  919. "src/libANGLE/renderer/dxgi_support_table_autogen.cpp",
  920. "src/libANGLE/renderer/d3d_format.cpp",
  921. }
  922. local angle_frame_capture_mock = {
  923. "src/libANGLE/capture/FrameCapture_mock.cpp",
  924. "src/libANGLE/capture/serialize_mock.cpp",
  925. }
  926. local angle_gl_enum_utils = {
  927. "src/common/gl_enum_utils.cpp",
  928. "src/common/gl_enum_utils_autogen.cpp",
  929. }
  930. if is_kind("static") then
  931. add_defines({
  932. "ANGLE_EXPORT=",
  933. "ANGLE_STATIC=1",
  934. "ANGLE_UTIL_EXPORT=",
  935. "EGLAPI=",
  936. "GL_APICALL=",
  937. "GL_API=",
  938. })
  939. end
  940. target("ANGLE")
  941. if is_plat("windows") then
  942. set_basename("libANGLE")
  943. end
  944. set_kind("static")
  945. add_defines("LIBANGLE_IMPLEMENTATION")
  946. add_defines("GL_GLES_PROTOTYPES=0", "EGL_EGL_PROTOTYPES=0")
  947. add_includedirs("src", "include", "$(buildir)/gen/angle", {public = true})
  948. add_includedirs("src/common/base",
  949. "src/common/third_party/xxhash",
  950. "src/third_party/khronos",
  951. "third_party/zlib/google", {public = true})
  952. add_files(libangle_headers)
  953. add_files(libangle_sources)
  954. add_files(libangle_common_sources)
  955. add_files(libangle_common_shader_state_sources)
  956. add_files(libangle_image_util_sources)
  957. add_files(angle_preprocessor_sources)
  958. add_files(angle_translator_sources)
  959. add_files(angle_frame_capture_mock)
  960. add_files(angle_version_info)
  961. add_files(xxhash_sources)
  962. add_files(zlib_wrapper_sources)
  963. -- gpuinfo util
  964. add_files(libangle_gpu_info_util_sources)
  965. if is_plat("windows") then
  966. add_files(libangle_gpu_info_util_win_sources)
  967. add_syslinks("setupapi", "dxgi")
  968. end
  969. if is_plat("linux") then
  970. add_files(libangle_gpu_info_util_linux_sources)
  971. end
  972. if is_plat("macosx") then
  973. add_files(libangle_gpu_info_util_mac_sources)
  974. add_frameworks("CoreFoundation", "CoreGraphics", "IOKit")
  975. end
  976. if is_plat("android") then
  977. add_files(libangle_gpu_info_util_android_sources)
  978. end
  979. if is_plat("iphoneos") then
  980. add_files(libangle_gpu_info_util_ios_sources)
  981. end
  982. if has_config("use_x11") then
  983. add_packages("libx11", "libxext", "libxi")
  984. add_files(libangle_gpu_info_util_x11_sources)
  985. add_files(libXNVCtrl_sources)
  986. add_defines("GPU_INFO_USE_X11")
  987. end
  988. if has_config("use_libpci") then
  989. add_packages("pciutils")
  990. add_files(libangle_gpu_info_util_libpci_sources)
  991. add_defines("GPU_INFO_USE_LIBPCI")
  992. end
  993. -- backend
  994. if has_config("enable_null") then
  995. add_defines("ANGLE_ENABLE_NULL")
  996. end
  997. if has_config("enable_cl") then
  998. add_defines("ANGLE_ENABLE_CL_PASSTHROUGH")
  999. add_files("libangle_common_cl_sources")
  1000. end
  1001. if has_config("enable_glsl") then
  1002. add_files(angle_translator_glsl_sources)
  1003. add_files(angle_translator_glsl_base_sources)
  1004. add_files(angle_translator_glsl_and_vulkan_base_sources)
  1005. if is_plat("macosx", "iphoneos") then
  1006. add_files(angle_translator_glsl_apple_sources)
  1007. end
  1008. add_defines("ANGLE_ENABLE_GLSL")
  1009. end
  1010. if has_config("enable_essl") then
  1011. add_files(angle_translator_essl_sources)
  1012. add_defines("ANGLE_ENABLE_ESSL")
  1013. end
  1014. if has_config("enable_hlsl") then
  1015. add_files(angle_translator_hlsl_sources)
  1016. add_defines("ANGLE_ENABLE_HLSL")
  1017. end
  1018. if is_plat("windows") then
  1019. if has_config("enable_d3d9") or has_config("enable_d3d11") then
  1020. add_defines("ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }")
  1021. add_files(d3d_shared_sources)
  1022. end
  1023. if has_config("enable_d3d9") or has_config("enable_d3d11") or has_config("enable_gl") then
  1024. add_files(angle_d3d_format_tables)
  1025. end
  1026. if has_config("enable_d3d9") then
  1027. add_syslinks("d3d9", "delayimp")
  1028. add_defines("ANGLE_ENABLE_D3D9")
  1029. add_ldflags("/DELAYLOAD:d3d9.dll")
  1030. add_files(d3d9_backend_sources)
  1031. end
  1032. if has_config("enable_d3d11") then
  1033. add_syslinks("dxguid")
  1034. add_defines("ANGLE_ENABLE_D3D11")
  1035. add_defines("ANGLE_ENABLE_D3D11_COMPOSITOR_NATIVE_WINDOW")
  1036. add_files(d3d11_backend_sources)
  1037. end
  1038. end
  1039. if has_config("enable_gl") then
  1040. add_defines("ANGLE_ENABLE_OPENGL")
  1041. add_defines("ANGLE_ENABLE_OPENGL_NULL")
  1042. add_files(gl_backend_sources)
  1043. if has_config("enable_cgl") then
  1044. add_defines("GL_SILENCE_DEPRECATION", "ANGLE_ENABLE_CGL")
  1045. if is_plat("macosx") then
  1046. add_frameworks("OpenGL")
  1047. end
  1048. end
  1049. if has_config("enable_eagl") then
  1050. add_defines("GL_SILENCE_DEPRECATION", "ANGLE_ENABLE_EAGL")
  1051. if is_plat("macosx", "iphoneos") then
  1052. add_frameworks("OpenGLES")
  1053. end
  1054. end
  1055. if is_plat("linux") or is_plat("android") then
  1056. add_files(angle_dma_buf)
  1057. end
  1058. if is_plat("macosx") or is_plat("iphoneos") then
  1059. add_frameworks("IOSurface", "QuartzCore")
  1060. if is_plat("macosx") then
  1061. add_frameworks("Cocoa")
  1062. end
  1063. end
  1064. end
  1065. if has_config("enable_gl_desktop") then
  1066. add_packages("opengl")
  1067. add_defines("ANGLE_ENABLE_GL_DESKTOP_BACKEND")
  1068. add_files(angle_translator_glsl_symbol_table_sources)
  1069. else
  1070. add_files(angle_translator_essl_symbol_table_sources)
  1071. end
  1072. if has_config("enable_metal") then
  1073. add_defines("ANGLE_ENABLE_METAL")
  1074. add_frameworks("Metal")
  1075. add_files(metal_backend_sources)
  1076. add_files(angle_translator_lib_msl_sources)
  1077. end
  1078. if has_config("enable_vulkan") then
  1079. add_defines("ANGLE_ENABLE_VULKAN")
  1080. add_files(vulkan_backend_sources)
  1081. add_packages("vulkansdk")
  1082. -- TODO
  1083. end
  1084. -- miscellanous
  1085. add_headerfiles("include/(**.h)|export.h")
  1086. add_defines("ANGLE_OUTSIDE_WEBKIT")
  1087. add_defines("ANGLE_ENABLE_SHARE_CONTEXT_LOCK=1", "ANGLE_ENABLE_CONTEXT_MUTEX=1")
  1088. add_packages("python")
  1089. add_packages("zlib")
  1090. -- add_packages("chromium_zlib")
  1091. if has_config("with_capture") then
  1092. add_defines("ANGLE_CAPTURE_ENABLED=1")
  1093. add_files("src/libANGLE/capture/serialize_mock.cpp")
  1094. add_files("angle_gl_enum_utils")
  1095. else
  1096. add_defines("ANGLE_CAPTURE_ENABLED=0")
  1097. end
  1098. if has_config("use_x11") then
  1099. add_defines("ANGLE_USE_X11")
  1100. end
  1101. if has_config("use_wayland") then
  1102. add_defines("ANGLE_USE_WAYLAND")
  1103. end
  1104. if is_plat("android") then
  1105. add_defines("ANGLE_USE_ANDROID_TLS_SLOT=1")
  1106. add_defines("ANGLE_ENABLE_GLOBAL_MUTEX_LOAD_TIME_ALLOCATE=1")
  1107. else
  1108. add_defines("ANGLE_PLATFORM_EXPORT=")
  1109. end
  1110. if is_plat("windows") then
  1111. add_defines("ANGLE_IS_WIN")
  1112. add_defines("WIN32_LEAN_AND_MEAN", "NOMINMAX", {public = true})
  1113. add_syslinks("user32", "gdi32")
  1114. elseif is_plat("macosx") then
  1115. set_values("objc++.build.arc", false)
  1116. add_files(libangle_mac_sources)
  1117. elseif is_plat("linux") then
  1118. add_defines("ANGLE_IS_LINUX")
  1119. add_links("dl")
  1120. elseif is_plat("iphoneos") then
  1121. set_values("objc++.build.arc", false)
  1122. add_files("src/libANGLE/renderer/driver_utils_ios.mm")
  1123. end
  1124. before_build(function (target)
  1125. import("lib.detect.find_tool")
  1126. import("core.tool.toolchain")
  1127. import("core.base.option")
  1128. -- generate version info
  1129. local python = find_tool("python")
  1130. assert(python, "python not found!")
  1131. local buildir = val("buildir")
  1132. if not os.isdir(buildir .. "/gen/angle") then
  1133. os.mkdir(buildir .. "/gen/angle")
  1134. end
  1135. io.writefile(buildir .. "/gen/response", "")
  1136. if option.get("verbose") then
  1137. print(python.program .. " " .. "./src/commit_id.py gen " .. buildir .. "/gen/angle/angle_commit.h")
  1138. end
  1139. os.vrunv(python.program, {"./src/commit_id.py", "gen", buildir .. "/gen/angle/angle_commit.h"})
  1140. if option.get("verbose") then
  1141. print(python.program .. " " .. "./src/commit_id.py gen " .. buildir .. "/gen/angle/angle_commit_autogen.cpp")
  1142. end
  1143. os.vrunv(python.program, {"./src/program_serialize_data_version.py", buildir .. "/gen/angle/ANGLEShaderProgramVersion.h", buildir .. "/gen/response"})
  1144. if option.get("verbose") then
  1145. print("Done generating version info for ANGLE.")
  1146. end
  1147. -- add android syslinks
  1148. if target:is_plat("android") then
  1149. local ndk = toolchain.load("ndk")
  1150. local ndk_sdkver = ndk:config("ndk_sdkver")
  1151. if ndk_sdkver and tonumber(ndk_sdkver) >= 26 then
  1152. target:add("syslinks", "nativewindow")
  1153. else
  1154. target:add("syslinks", "android")
  1155. end
  1156. end
  1157. end)
  1158. target("GLESv2")
  1159. set_kind("$(kind)")
  1160. add_deps("ANGLE")
  1161. add_defines("LIBGLESV2_IMPLEMENTATION")
  1162. add_defines("GL_GLES_PROTOTYPES=1", "EGL_EGL_PROTOTYPES=1", "GL_GLEXT_PROTOTYPES", "EGL_EGLEXT_PROTOTYPES")
  1163. add_files(libglesv2_sources)
  1164. if is_plat("windows") then
  1165. set_basename("libGLESv2")
  1166. add_files("src/libGLESv2/libGLESv2.rc")
  1167. add_files("src/libGLESv2/libGLESv2_autogen.def")
  1168. end
  1169. if is_plat("android") then
  1170. set_basename("GLESv2_angle")
  1171. end
  1172. if has_config("enable_cl") then
  1173. add_files(libglesv2_cl_sources)
  1174. end
  1175. if is_kind("shared") then
  1176. if is_plat("windows") then
  1177. add_defines("GL_APICALL=", "GL_API=")
  1178. else
  1179. add_defines(
  1180. "GL_APICALL=__attribute__((visibility(\"default\")))",
  1181. "GL_API=__attribute__((visibility(\"default\")))")
  1182. end
  1183. end
  1184. after_install(function (target)
  1185. if target:is_plat("windows") and target:kind() == "shared" then
  1186. local vcvars = import("core.tool.toolchain").load("msvc"):config("vcvars")
  1187. local winsdkdir = vcvars["WindowsSdkDir"]
  1188. local d3dcompiler = path.join(winsdkdir, "Redist", "D3D", target:arch(), "d3dcompiler_47.dll")
  1189. os.cp(d3dcompiler, path.join(target:installdir(), "bin"))
  1190. end
  1191. end)
  1192. target("EGL")
  1193. set_kind("$(kind)")
  1194. add_deps("GLESv2")
  1195. add_defines("LIBEGL_IMPLEMENTATION")
  1196. add_defines("GL_GLES_PROTOTYPES=1", "EGL_EGL_PROTOTYPES=1", "GL_GLEXT_PROTOTYPES", "EGL_EGLEXT_PROTOTYPES")
  1197. add_files(libegl_sources)
  1198. add_defines("ANGLE_DISPATCH_LIBRARY=\"libGLESv2\"")
  1199. if is_plat("windows") then
  1200. set_basename("libEGL")
  1201. add_files("src/libEGL/libEGL.rc")
  1202. add_files("src/libEGL/libEGL_autogen.def")
  1203. end
  1204. if is_plat("android") then
  1205. set_basename("EGL_angle")
  1206. end
  1207. if is_kind("shared") then
  1208. add_files("src/libEGL/egl_loader_autogen.cpp")
  1209. add_defines("ANGLE_USE_EGL_LOADER")
  1210. if is_plat("windows") then
  1211. add_defines("EGLAPI=")
  1212. else
  1213. add_defines("EGLAPI=__attribute__((visibility(\"default\")))")
  1214. end
  1215. end