xref: /aosp_15_r20/external/angle/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2019 The ANGLE Project Authors. All rights reserved.
2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Worker# import the ozone_platform_x11 variable
6*8975f5c5SAndroid Build Coastguard Workerimport("gni/angle.gni")
7*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan) {
8*8975f5c5SAndroid Build Coastguard Worker  import("//build_overrides//vulkan_headers.gni")
9*8975f5c5SAndroid Build Coastguard Worker}
10*8975f5c5SAndroid Build Coastguard Workerif (angle_use_wayland) {
11*8975f5c5SAndroid Build Coastguard Worker  import("//build_overrides/wayland.gni")
12*8975f5c5SAndroid Build Coastguard Worker}
13*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_wgpu) {
14*8975f5c5SAndroid Build Coastguard Worker  import("//build_overrides/dawn.gni")
15*8975f5c5SAndroid Build Coastguard Worker  import("//build_overrides/tint.gni")
16*8975f5c5SAndroid Build Coastguard Worker}
17*8975f5c5SAndroid Build Coastguard Workerif (angle_has_build) {
18*8975f5c5SAndroid Build Coastguard Worker  import("//build/config/linux/pkg_config.gni")
19*8975f5c5SAndroid Build Coastguard Worker  import("//build/config/sanitizers/sanitizers.gni")
20*8975f5c5SAndroid Build Coastguard Worker  import("//build/config/ui.gni")
21*8975f5c5SAndroid Build Coastguard Worker  import("//testing/libfuzzer/fuzzer_test.gni")
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Worker  if (is_android) {
24*8975f5c5SAndroid Build Coastguard Worker    # android/rules.gni can only be imported for Android targets
25*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/android/config.gni")
26*8975f5c5SAndroid Build Coastguard Worker    import("//build/config/android/rules.gni")
27*8975f5c5SAndroid Build Coastguard Worker    import("android/angle_apk.gni")
28*8975f5c5SAndroid Build Coastguard Worker  }
29*8975f5c5SAndroid Build Coastguard Worker} else {
30*8975f5c5SAndroid Build Coastguard Worker  using_sanitizer = false
31*8975f5c5SAndroid Build Coastguard Worker}
32*8975f5c5SAndroid Build Coastguard Worker
33*8975f5c5SAndroid Build Coastguard Workerdeclare_args() {
34*8975f5c5SAndroid Build Coastguard Worker  # Use the PCI lib to collect GPU information on Linux.
35*8975f5c5SAndroid Build Coastguard Worker  use_libpci = (is_linux || is_chromeos) && (angle_use_x11 || use_ozone) &&
36*8975f5c5SAndroid Build Coastguard Worker               angle_has_build
37*8975f5c5SAndroid Build Coastguard Worker
38*8975f5c5SAndroid Build Coastguard Worker  # Enable using Vulkan to collect system info as a fallback.
39*8975f5c5SAndroid Build Coastguard Worker  angle_enable_vulkan_system_info = false
40*8975f5c5SAndroid Build Coastguard Worker
41*8975f5c5SAndroid Build Coastguard Worker  # Link in system libGL, to work with apitrace.  See doc/DebuggingTips.md.
42*8975f5c5SAndroid Build Coastguard Worker  angle_link_glx = false
43*8975f5c5SAndroid Build Coastguard Worker
44*8975f5c5SAndroid Build Coastguard Worker  # Don't build extra (test, samples etc) for Windows UWP. We don't have
45*8975f5c5SAndroid Build Coastguard Worker  # infrastructure (e.g. windowing helper functions) in place to run them.
46*8975f5c5SAndroid Build Coastguard Worker  # Also don't build them with MSVC, because tests and unused dependencies
47*8975f5c5SAndroid Build Coastguard Worker  # often have problems building with it, e.g. for C++20.
48*8975f5c5SAndroid Build Coastguard Worker  angle_build_all = !build_with_chromium && !angle_is_winuwp &&
49*8975f5c5SAndroid Build Coastguard Worker                    !angle_is_msvc && angle_has_build && angle_build_tests
50*8975f5c5SAndroid Build Coastguard Worker
51*8975f5c5SAndroid Build Coastguard Worker  # Enable generating current commit information using git
52*8975f5c5SAndroid Build Coastguard Worker  angle_enable_commit_id = true
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard Worker  # Abseil has trouble supporting MSVC, particularly regarding component builds.
55*8975f5c5SAndroid Build Coastguard Worker  # http://crbug.com/1126524
56*8975f5c5SAndroid Build Coastguard Worker  angle_enable_abseil = angle_has_build && is_clang
57*8975f5c5SAndroid Build Coastguard Worker
58*8975f5c5SAndroid Build Coastguard Worker  # Adds run-time checks to filter out EVENT() messages when the debug annotator is disabled.
59*8975f5c5SAndroid Build Coastguard Worker  angle_enable_annotator_run_time_checks = false
60*8975f5c5SAndroid Build Coastguard Worker
61*8975f5c5SAndroid Build Coastguard Worker  # Enables non-conformant extensions and features
62*8975f5c5SAndroid Build Coastguard Worker  angle_expose_non_conformant_extensions_and_versions = false
63*8975f5c5SAndroid Build Coastguard Worker
64*8975f5c5SAndroid Build Coastguard Worker  # Optional feature that forces dirty state whenever we use a new context regardless of thread.
65*8975f5c5SAndroid Build Coastguard Worker  angle_force_context_check_every_call = false
66*8975f5c5SAndroid Build Coastguard Worker
67*8975f5c5SAndroid Build Coastguard Worker  # Allow shared library custom name extensions for setting soname such as libEGL.so.1
68*8975f5c5SAndroid Build Coastguard Worker  angle_egl_extension = ""
69*8975f5c5SAndroid Build Coastguard Worker  angle_glesv2_extension = ""
70*8975f5c5SAndroid Build Coastguard Worker
71*8975f5c5SAndroid Build Coastguard Worker  # Enable share context lock. If it is false, the client need to use gl calls in a threadsafe way.
72*8975f5c5SAndroid Build Coastguard Worker  angle_enable_share_context_lock =
73*8975f5c5SAndroid Build Coastguard Worker      !build_with_chromium || build_angle_deqp_tests
74*8975f5c5SAndroid Build Coastguard Worker
75*8975f5c5SAndroid Build Coastguard Worker  if (is_android) {
76*8975f5c5SAndroid Build Coastguard Worker    # Use Android TLS slot to store current context.
77*8975f5c5SAndroid Build Coastguard Worker    angle_use_android_tls_slot = !build_with_chromium
78*8975f5c5SAndroid Build Coastguard Worker  }
79*8975f5c5SAndroid Build Coastguard Worker
80*8975f5c5SAndroid Build Coastguard Worker  angle_enable_global_mutex_recursion =
81*8975f5c5SAndroid Build Coastguard Worker      is_android && angle_enable_vulkan && !build_with_chromium
82*8975f5c5SAndroid Build Coastguard Worker
83*8975f5c5SAndroid Build Coastguard Worker  # Potentially can be enabled for other platforms, but limiting to Android platform for now.
84*8975f5c5SAndroid Build Coastguard Worker  # Chromium may have problems (requires verification), disabled for safety.
85*8975f5c5SAndroid Build Coastguard Worker  angle_enable_global_mutex_load_time_allocate =
86*8975f5c5SAndroid Build Coastguard Worker      is_android && !build_with_chromium
87*8975f5c5SAndroid Build Coastguard Worker
88*8975f5c5SAndroid Build Coastguard Worker  angle_enable_context_mutex = true
89*8975f5c5SAndroid Build Coastguard Worker
90*8975f5c5SAndroid Build Coastguard Worker  # Prefix where the artifacts should be installed on the system
91*8975f5c5SAndroid Build Coastguard Worker  install_prefix = ""
92*8975f5c5SAndroid Build Coastguard Worker}
93*8975f5c5SAndroid Build Coastguard Worker
94*8975f5c5SAndroid Build Coastguard Workerdeclare_args() {
95*8975f5c5SAndroid Build Coastguard Worker  # May need to enable to fix recursion when vkAcquireNextImageKHR() returns back to ANGLE from
96*8975f5c5SAndroid Build Coastguard Worker  # eglClientWaitSyncKHR(). May happen if Android Presentation Engine uses
97*8975f5c5SAndroid Build Coastguard Worker  # EGL_KHR_fence_sync instead of EGL_ANDROID_native_fence_sync for synchronization.
98*8975f5c5SAndroid Build Coastguard Worker  # To check call: adb shell "dumpsys SurfaceFlinger | grep 'Sync configuration'"
99*8975f5c5SAndroid Build Coastguard Worker  # The Android's "testDrawingHardwareBitmapNotLeaking" test may be used for testing.
100*8975f5c5SAndroid Build Coastguard Worker  # Disable this option to save performance on platforms that does not require recursion.
101*8975f5c5SAndroid Build Coastguard Worker  angle_enable_context_mutex_recursion = angle_enable_global_mutex_recursion
102*8975f5c5SAndroid Build Coastguard Worker}
103*8975f5c5SAndroid Build Coastguard Worker
104*8975f5c5SAndroid Build Coastguard Workerif (angle_build_all) {
105*8975f5c5SAndroid Build Coastguard Worker  group("all") {
106*8975f5c5SAndroid Build Coastguard Worker    testonly = true
107*8975f5c5SAndroid Build Coastguard Worker    deps = [
108*8975f5c5SAndroid Build Coastguard Worker      ":angle",
109*8975f5c5SAndroid Build Coastguard Worker      ":angle_shader_translator",
110*8975f5c5SAndroid Build Coastguard Worker      ":translator_fuzzer",
111*8975f5c5SAndroid Build Coastguard Worker      ":xxhash_fuzzer",
112*8975f5c5SAndroid Build Coastguard Worker      "$angle_root/samples:angle_samples",
113*8975f5c5SAndroid Build Coastguard Worker      "$angle_root/src/tests:angle_tests",
114*8975f5c5SAndroid Build Coastguard Worker    ]
115*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_cl) {
116*8975f5c5SAndroid Build Coastguard Worker      deps += [ "$angle_root/src/libOpenCL:angle_cl" ]
117*8975f5c5SAndroid Build Coastguard Worker    }
118*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_cl && angle_enable_vulkan) {
119*8975f5c5SAndroid Build Coastguard Worker      # OpenCL through Vulkan in ANGLE requires clspv for online compiler
120*8975f5c5SAndroid Build Coastguard Worker      deps += [ "$angle_clspv_dir:clspv" ]
121*8975f5c5SAndroid Build Coastguard Worker    }
122*8975f5c5SAndroid Build Coastguard Worker    if (angle_build_mesa) {
123*8975f5c5SAndroid Build Coastguard Worker      deps += [ "$angle_root/third_party/mesa" ]
124*8975f5c5SAndroid Build Coastguard Worker    }
125*8975f5c5SAndroid Build Coastguard Worker  }
126*8975f5c5SAndroid Build Coastguard Worker}
127*8975f5c5SAndroid Build Coastguard Worker
128*8975f5c5SAndroid Build Coastguard Workerif (build_angle_end2end_tests_aosp) {
129*8975f5c5SAndroid Build Coastguard Worker  group("angle_end2end_tests_aosp") {
130*8975f5c5SAndroid Build Coastguard Worker    testonly = true
131*8975f5c5SAndroid Build Coastguard Worker    deps = [ "src/tests:angle_end2end_tests" ]
132*8975f5c5SAndroid Build Coastguard Worker  }
133*8975f5c5SAndroid Build Coastguard Worker}
134*8975f5c5SAndroid Build Coastguard Worker
135*8975f5c5SAndroid Build Coastguard Workerimport("src/angle_program_serialize_data_version.gni")
136*8975f5c5SAndroid Build Coastguard Workerimport("src/compiler.gni")
137*8975f5c5SAndroid Build Coastguard Workerimport("src/libGLESv2.gni")
138*8975f5c5SAndroid Build Coastguard Worker
139*8975f5c5SAndroid Build Coastguard Worker# This config is exported to dependent targets (and also applied to internal
140*8975f5c5SAndroid Build Coastguard Worker# ones).
141*8975f5c5SAndroid Build Coastguard Workerconfig("external_config") {
142*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [ "include" ]
143*8975f5c5SAndroid Build Coastguard Worker}
144*8975f5c5SAndroid Build Coastguard Worker
145*8975f5c5SAndroid Build Coastguard Worker# Prevent the GL headers from redeclaring ANGLE entry points.
146*8975f5c5SAndroid Build Coastguard Workerconfig("no_gl_prototypes") {
147*8975f5c5SAndroid Build Coastguard Worker  defines = [
148*8975f5c5SAndroid Build Coastguard Worker    "GL_GLES_PROTOTYPES=0",
149*8975f5c5SAndroid Build Coastguard Worker    "EGL_EGL_PROTOTYPES=0",
150*8975f5c5SAndroid Build Coastguard Worker  ]
151*8975f5c5SAndroid Build Coastguard Worker}
152*8975f5c5SAndroid Build Coastguard Worker
153*8975f5c5SAndroid Build Coastguard Workerconfig("gl_prototypes") {
154*8975f5c5SAndroid Build Coastguard Worker  defines = [
155*8975f5c5SAndroid Build Coastguard Worker    "GL_GLES_PROTOTYPES=1",
156*8975f5c5SAndroid Build Coastguard Worker    "EGL_EGL_PROTOTYPES=1",
157*8975f5c5SAndroid Build Coastguard Worker    "GL_GLEXT_PROTOTYPES",
158*8975f5c5SAndroid Build Coastguard Worker    "EGL_EGLEXT_PROTOTYPES",
159*8975f5c5SAndroid Build Coastguard Worker  ]
160*8975f5c5SAndroid Build Coastguard Worker}
161*8975f5c5SAndroid Build Coastguard Worker
162*8975f5c5SAndroid Build Coastguard Worker# This config is applied to internal Angle targets (not pushed to dependents).
163*8975f5c5SAndroid Build Coastguard Workerconfig("internal_config") {
164*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [
165*8975f5c5SAndroid Build Coastguard Worker    "include",
166*8975f5c5SAndroid Build Coastguard Worker    "src",
167*8975f5c5SAndroid Build Coastguard Worker  ]
168*8975f5c5SAndroid Build Coastguard Worker
169*8975f5c5SAndroid Build Coastguard Worker  defines = []
170*8975f5c5SAndroid Build Coastguard Worker
171*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
172*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_IS_WIN" ]
173*8975f5c5SAndroid Build Coastguard Worker    if (angle_is_winuwp) {
174*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_IS_WINUWP" ]
175*8975f5c5SAndroid Build Coastguard Worker    }
176*8975f5c5SAndroid Build Coastguard Worker    if (angle_is_winappsdk) {
177*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_IS_WINAPPSDK" ]
178*8975f5c5SAndroid Build Coastguard Worker    }
179*8975f5c5SAndroid Build Coastguard Worker  } else if (is_linux || is_chromeos) {
180*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_IS_LINUX" ]
181*8975f5c5SAndroid Build Coastguard Worker  }
182*8975f5c5SAndroid Build Coastguard Worker
183*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_share_context_lock) {
184*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_SHARE_CONTEXT_LOCK=1" ]
185*8975f5c5SAndroid Build Coastguard Worker  }
186*8975f5c5SAndroid Build Coastguard Worker
187*8975f5c5SAndroid Build Coastguard Worker  if (is_android) {
188*8975f5c5SAndroid Build Coastguard Worker    if (angle_use_android_tls_slot) {
189*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_USE_ANDROID_TLS_SLOT=1" ]
190*8975f5c5SAndroid Build Coastguard Worker    }
191*8975f5c5SAndroid Build Coastguard Worker  }
192*8975f5c5SAndroid Build Coastguard Worker
193*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_global_mutex_recursion) {
194*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_GLOBAL_MUTEX_RECURSION=1" ]
195*8975f5c5SAndroid Build Coastguard Worker  }
196*8975f5c5SAndroid Build Coastguard Worker
197*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_global_mutex_load_time_allocate) {
198*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_GLOBAL_MUTEX_LOAD_TIME_ALLOCATE=1" ]
199*8975f5c5SAndroid Build Coastguard Worker  }
200*8975f5c5SAndroid Build Coastguard Worker
201*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_context_mutex && angle_enable_share_context_lock &&
202*8975f5c5SAndroid Build Coastguard Worker      !angle_force_context_check_every_call) {
203*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_CONTEXT_MUTEX=1" ]
204*8975f5c5SAndroid Build Coastguard Worker  }
205*8975f5c5SAndroid Build Coastguard Worker
206*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_context_mutex_recursion) {
207*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_CONTEXT_MUTEX_RECURSION=1" ]
208*8975f5c5SAndroid Build Coastguard Worker  }
209*8975f5c5SAndroid Build Coastguard Worker
210*8975f5c5SAndroid Build Coastguard Worker  # Enables debug/trace-related functionality, including logging every GLES/EGL API command to the
211*8975f5c5SAndroid Build Coastguard Worker  # "angle_debug.txt" file on desktop.  Enables debug markers for AGI, but must also set
212*8975f5c5SAndroid Build Coastguard Worker  # angle_enable_annotator_run_time_checks to improve performance.
213*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_trace) {
214*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_DEBUG_TRACE=1" ]
215*8975f5c5SAndroid Build Coastguard Worker  }
216*8975f5c5SAndroid Build Coastguard Worker
217*8975f5c5SAndroid Build Coastguard Worker  # When used with angle_enable_trace, enables logging every GLES/EGL API command to Android logcat
218*8975f5c5SAndroid Build Coastguard Worker  # Enables debug markers for AGI regardless of run-time checks.
219*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_trace_android_logcat) {
220*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_TRACE_ANDROID_LOGCAT=1" ]
221*8975f5c5SAndroid Build Coastguard Worker  }
222*8975f5c5SAndroid Build Coastguard Worker
223*8975f5c5SAndroid Build Coastguard Worker  # When used with angle_enable_trace, enables logging every GLES/EGL API command to the terminal
224*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_trace_events) {
225*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_TRACE_EVENTS=1" ]
226*8975f5c5SAndroid Build Coastguard Worker  }
227*8975f5c5SAndroid Build Coastguard Worker
228*8975f5c5SAndroid Build Coastguard Worker  # Output `INFO`-level logs and up.
229*8975f5c5SAndroid Build Coastguard Worker  if (angle_always_log_info) {
230*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ALWAYS_LOG_INFO" ]
231*8975f5c5SAndroid Build Coastguard Worker  }
232*8975f5c5SAndroid Build Coastguard Worker
233*8975f5c5SAndroid Build Coastguard Worker  # Enables pipeline cache graph dump functionality.
234*8975f5c5SAndroid Build Coastguard Worker  # The dump path must have appropriate permissions for this to work.
235*8975f5c5SAndroid Build Coastguard Worker  if (angle_dump_pipeline_cache_graph) {
236*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_DUMP_PIPELINE_CACHE_GRAPH=1" ]
237*8975f5c5SAndroid Build Coastguard Worker  }
238*8975f5c5SAndroid Build Coastguard Worker
239*8975f5c5SAndroid Build Coastguard Worker  # Checks that unwind backtrace support for Android is enabled only for debug mode.
240*8975f5c5SAndroid Build Coastguard Worker  assert(is_debug || !angle_enable_unwind_backtrace_support)
241*8975f5c5SAndroid Build Coastguard Worker
242*8975f5c5SAndroid Build Coastguard Worker  if (is_chromeos) {
243*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_PLATFORM_CHROMEOS" ]
244*8975f5c5SAndroid Build Coastguard Worker  }
245*8975f5c5SAndroid Build Coastguard Worker
246*8975f5c5SAndroid Build Coastguard Worker  if (is_ggp) {
247*8975f5c5SAndroid Build Coastguard Worker    defines += [ "__ggp__" ]
248*8975f5c5SAndroid Build Coastguard Worker  }
249*8975f5c5SAndroid Build Coastguard Worker
250*8975f5c5SAndroid Build Coastguard Worker  if (angle_use_vulkan_null_display) {
251*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_USE_VULKAN_NULL_DISPLAY" ]
252*8975f5c5SAndroid Build Coastguard Worker  } else if (angle_use_vulkan_display) {
253*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_USE_VULKAN_DISPLAY" ]
254*8975f5c5SAndroid Build Coastguard Worker    if (!angle_use_x11) {
255*8975f5c5SAndroid Build Coastguard Worker      defines += [ "EGL_NO_X11" ]
256*8975f5c5SAndroid Build Coastguard Worker    }
257*8975f5c5SAndroid Build Coastguard Worker
258*8975f5c5SAndroid Build Coastguard Worker    # These two are needed here to correctly select OSWindow::New
259*8975f5c5SAndroid Build Coastguard Worker    if (angle_use_x11) {
260*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_USE_X11" ]
261*8975f5c5SAndroid Build Coastguard Worker    }
262*8975f5c5SAndroid Build Coastguard Worker    if (angle_use_wayland) {
263*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_USE_WAYLAND" ]
264*8975f5c5SAndroid Build Coastguard Worker    }
265*8975f5c5SAndroid Build Coastguard Worker
266*8975f5c5SAndroid Build Coastguard Worker    if (angle_vulkan_display_mode == "simple") {
267*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_VULKAN_DISPLAY_MODE_SIMPLE" ]
268*8975f5c5SAndroid Build Coastguard Worker    } else if (angle_vulkan_display_mode == "headless") {
269*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_VULKAN_DISPLAY_MODE_HEADLESS" ]
270*8975f5c5SAndroid Build Coastguard Worker    } else if (angle_vulkan_display_mode == "offscreen") {
271*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_VULKAN_DISPLAY_MODE_OFFSCREEN" ]
272*8975f5c5SAndroid Build Coastguard Worker    } else {
273*8975f5c5SAndroid Build Coastguard Worker      assert(false)
274*8975f5c5SAndroid Build Coastguard Worker    }
275*8975f5c5SAndroid Build Coastguard Worker  }
276*8975f5c5SAndroid Build Coastguard Worker
277*8975f5c5SAndroid Build Coastguard Worker  if (is_lsan) {
278*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_WITH_LSAN" ]
279*8975f5c5SAndroid Build Coastguard Worker  }
280*8975f5c5SAndroid Build Coastguard Worker
281*8975f5c5SAndroid Build Coastguard Worker  if (angle_has_astc_encoder) {
282*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_HAS_ASTCENC" ]
283*8975f5c5SAndroid Build Coastguard Worker  }
284*8975f5c5SAndroid Build Coastguard Worker
285*8975f5c5SAndroid Build Coastguard Worker  if (angle_test_enable_system_egl) {
286*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_TEST_ENABLE_SYSTEM_EGL" ]
287*8975f5c5SAndroid Build Coastguard Worker  }
288*8975f5c5SAndroid Build Coastguard Worker
289*8975f5c5SAndroid Build Coastguard Worker  if (angle_debug_layers_enabled) {
290*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_DEBUG_LAYERS_ENABLED" ]
291*8975f5c5SAndroid Build Coastguard Worker  }
292*8975f5c5SAndroid Build Coastguard Worker
293*8975f5c5SAndroid Build Coastguard Worker  if (angle_build_mesa) {
294*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_HAS_MESA" ]
295*8975f5c5SAndroid Build Coastguard Worker  }
296*8975f5c5SAndroid Build Coastguard Worker
297*8975f5c5SAndroid Build Coastguard Worker  if (angle_standalone || build_with_chromium) {
298*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_OUTSIDE_WEBKIT" ]
299*8975f5c5SAndroid Build Coastguard Worker  }
300*8975f5c5SAndroid Build Coastguard Worker
301*8975f5c5SAndroid Build Coastguard Worker  if (is_win && build_with_chromium) {
302*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_WINDOWS_NO_FUTEX=1" ]
303*8975f5c5SAndroid Build Coastguard Worker  }
304*8975f5c5SAndroid Build Coastguard Worker
305*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
306*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_CL" ]
307*8975f5c5SAndroid Build Coastguard Worker  }
308*8975f5c5SAndroid Build Coastguard Worker}
309*8975f5c5SAndroid Build Coastguard Worker
310*8975f5c5SAndroid Build Coastguard Workerconfig("constructor_and_destructor_warnings") {
311*8975f5c5SAndroid Build Coastguard Worker  if (is_clang) {
312*8975f5c5SAndroid Build Coastguard Worker    cflags = [
313*8975f5c5SAndroid Build Coastguard Worker      "-Wexit-time-destructors",
314*8975f5c5SAndroid Build Coastguard Worker      "-Wglobal-constructors",
315*8975f5c5SAndroid Build Coastguard Worker    ]
316*8975f5c5SAndroid Build Coastguard Worker  }
317*8975f5c5SAndroid Build Coastguard Worker}
318*8975f5c5SAndroid Build Coastguard Worker
319*8975f5c5SAndroid Build Coastguard Workerconfig("extra_warnings") {
320*8975f5c5SAndroid Build Coastguard Worker  cflags = []
321*8975f5c5SAndroid Build Coastguard Worker
322*8975f5c5SAndroid Build Coastguard Worker  is_gcc = !is_clang && !is_win
323*8975f5c5SAndroid Build Coastguard Worker
324*8975f5c5SAndroid Build Coastguard Worker  # Avoid failing builds for warnings enabled by Skia build.
325*8975f5c5SAndroid Build Coastguard Worker  if (defined(is_skia_standalone)) {
326*8975f5c5SAndroid Build Coastguard Worker    cflags += [ "-w" ]
327*8975f5c5SAndroid Build Coastguard Worker  }
328*8975f5c5SAndroid Build Coastguard Worker
329*8975f5c5SAndroid Build Coastguard Worker  # Enable more default warnings on Windows.
330*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
331*8975f5c5SAndroid Build Coastguard Worker    cflags += [
332*8975f5c5SAndroid Build Coastguard Worker      "/we4244",  # Conversion: possible loss of data.
333*8975f5c5SAndroid Build Coastguard Worker      "/we4312",  # Conversion: greater size.
334*8975f5c5SAndroid Build Coastguard Worker      "/we4456",  # Variable shadowing.
335*8975f5c5SAndroid Build Coastguard Worker      "/we4458",  # declaration hides class member.
336*8975f5c5SAndroid Build Coastguard Worker      "/we4715",  # not all control paths return a value
337*8975f5c5SAndroid Build Coastguard Worker      "/we4800",  # forcing value to bool.
338*8975f5c5SAndroid Build Coastguard Worker      "/we4838",  # narrowing conversion.
339*8975f5c5SAndroid Build Coastguard Worker    ]
340*8975f5c5SAndroid Build Coastguard Worker  }
341*8975f5c5SAndroid Build Coastguard Worker  if (is_clang) {
342*8975f5c5SAndroid Build Coastguard Worker    cflags += [
343*8975f5c5SAndroid Build Coastguard Worker      "-Wbad-function-cast",
344*8975f5c5SAndroid Build Coastguard Worker      "-Wconditional-uninitialized",
345*8975f5c5SAndroid Build Coastguard Worker      "-Wextra-semi-stmt",
346*8975f5c5SAndroid Build Coastguard Worker      "-Wfloat-conversion",
347*8975f5c5SAndroid Build Coastguard Worker      "-Winconsistent-missing-destructor-override",
348*8975f5c5SAndroid Build Coastguard Worker      "-Wmissing-field-initializers",
349*8975f5c5SAndroid Build Coastguard Worker      "-Wnewline-eof",
350*8975f5c5SAndroid Build Coastguard Worker      "-Wnon-virtual-dtor",
351*8975f5c5SAndroid Build Coastguard Worker      "-Wredundant-parens",
352*8975f5c5SAndroid Build Coastguard Worker      "-Wreturn-std-move",
353*8975f5c5SAndroid Build Coastguard Worker      "-Wshadow",
354*8975f5c5SAndroid Build Coastguard Worker      "-Wshadow-field",
355*8975f5c5SAndroid Build Coastguard Worker      "-Wtautological-type-limit-compare",
356*8975f5c5SAndroid Build Coastguard Worker      "-Wundefined-reinterpret-cast",
357*8975f5c5SAndroid Build Coastguard Worker      "-Wunneeded-internal-declaration",
358*8975f5c5SAndroid Build Coastguard Worker      "-Wunused-but-set-variable",
359*8975f5c5SAndroid Build Coastguard Worker      "-Wsuggest-destructor-override",
360*8975f5c5SAndroid Build Coastguard Worker      "-Wsuggest-override",
361*8975f5c5SAndroid Build Coastguard Worker
362*8975f5c5SAndroid Build Coastguard Worker      # The below warnings are used by WebKit. We enable them to make rolling
363*8975f5c5SAndroid Build Coastguard Worker      # ANGLE in WebKit easier.
364*8975f5c5SAndroid Build Coastguard Worker      "-Wparentheses",
365*8975f5c5SAndroid Build Coastguard Worker      "-Wrange-loop-analysis",
366*8975f5c5SAndroid Build Coastguard Worker      "-Wstrict-prototypes",
367*8975f5c5SAndroid Build Coastguard Worker      "-Wunreachable-code-aggressive",
368*8975f5c5SAndroid Build Coastguard Worker      "-Wshorten-64-to-32",
369*8975f5c5SAndroid Build Coastguard Worker    ]
370*8975f5c5SAndroid Build Coastguard Worker  }
371*8975f5c5SAndroid Build Coastguard Worker
372*8975f5c5SAndroid Build Coastguard Worker  if (is_gcc) {
373*8975f5c5SAndroid Build Coastguard Worker    cflags_cc = [ "-Wdeprecated-copy" ]
374*8975f5c5SAndroid Build Coastguard Worker  }
375*8975f5c5SAndroid Build Coastguard Worker
376*8975f5c5SAndroid Build Coastguard Worker  if (angle_is_winuwp) {
377*8975f5c5SAndroid Build Coastguard Worker    cflags += [
378*8975f5c5SAndroid Build Coastguard Worker      "/wd4091",  # keyword ignored on left of type when no variable is declared
379*8975f5c5SAndroid Build Coastguard Worker      "/wd4447",  # 'main' signature found without threading model.
380*8975f5c5SAndroid Build Coastguard Worker    ]
381*8975f5c5SAndroid Build Coastguard Worker  }
382*8975f5c5SAndroid Build Coastguard Worker}
383*8975f5c5SAndroid Build Coastguard Worker
384*8975f5c5SAndroid Build Coastguard Worker# This config adds build-ids to the associated library.
385*8975f5c5SAndroid Build Coastguard Worker# -Wl is a special option that indicates that clang should pass the associated
386*8975f5c5SAndroid Build Coastguard Worker# option --build-id to the linker. This will cause a build-id section to be added
387*8975f5c5SAndroid Build Coastguard Worker# to the associated library. The build-id makes it possible for a debugger to
388*8975f5c5SAndroid Build Coastguard Worker# find the right symbol file to use.
389*8975f5c5SAndroid Build Coastguard Workerconfig("build_id_config") {
390*8975f5c5SAndroid Build Coastguard Worker  ldflags = [ "-Wl,--build-id" ]
391*8975f5c5SAndroid Build Coastguard Worker}
392*8975f5c5SAndroid Build Coastguard Worker
393*8975f5c5SAndroid Build Coastguard Worker_use_copy_compiler_dll = angle_has_build && is_win
394*8975f5c5SAndroid Build Coastguard Worker
395*8975f5c5SAndroid Build Coastguard Workerif (_use_copy_compiler_dll) {
396*8975f5c5SAndroid Build Coastguard Worker  copy("copy_compiler_dll") {
397*8975f5c5SAndroid Build Coastguard Worker    sources = [ "$windows_sdk_path/Redist/D3D/$target_cpu/d3dcompiler_47.dll" ]
398*8975f5c5SAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/{{source_file_part}}" ]
399*8975f5c5SAndroid Build Coastguard Worker  }
400*8975f5c5SAndroid Build Coastguard Worker}
401*8975f5c5SAndroid Build Coastguard Worker
402*8975f5c5SAndroid Build Coastguard Worker# Holds the shared includes so we only need to list them once.
403*8975f5c5SAndroid Build Coastguard Workerconfig("includes_config") {
404*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [ "include" ]
405*8975f5c5SAndroid Build Coastguard Worker}
406*8975f5c5SAndroid Build Coastguard Worker
407*8975f5c5SAndroid Build Coastguard Workerconfig("angle_uwp_env") {
408*8975f5c5SAndroid Build Coastguard Worker  if (angle_is_winuwp && !angle_is_winappsdk) {
409*8975f5c5SAndroid Build Coastguard Worker    defines = [ "WINAPI_FAMILY=WINAPI_FAMILY_PC_APP" ]
410*8975f5c5SAndroid Build Coastguard Worker  }
411*8975f5c5SAndroid Build Coastguard Worker}
412*8975f5c5SAndroid Build Coastguard Worker
413*8975f5c5SAndroid Build Coastguard Workerangle_source_set("cl_includes") {
414*8975f5c5SAndroid Build Coastguard Worker  sources = cl_includes
415*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":external_config" ]
416*8975f5c5SAndroid Build Coastguard Worker}
417*8975f5c5SAndroid Build Coastguard Worker
418*8975f5c5SAndroid Build Coastguard Workerangle_source_set("includes") {
419*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_includes
420*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":includes_config" ]
421*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
422*8975f5c5SAndroid Build Coastguard Worker    public_deps = [ ":cl_includes" ]
423*8975f5c5SAndroid Build Coastguard Worker  }
424*8975f5c5SAndroid Build Coastguard Worker}
425*8975f5c5SAndroid Build Coastguard Worker
426*8975f5c5SAndroid Build Coastguard Workerconfig("disable_unreachable_code_break_warning") {
427*8975f5c5SAndroid Build Coastguard Worker  if (is_clang) {
428*8975f5c5SAndroid Build Coastguard Worker    cflags = [ "-Wno-unreachable-code-break" ]
429*8975f5c5SAndroid Build Coastguard Worker  }
430*8975f5c5SAndroid Build Coastguard Worker}
431*8975f5c5SAndroid Build Coastguard Worker
432*8975f5c5SAndroid Build Coastguard Workerangle_static_library("preprocessor") {
433*8975f5c5SAndroid Build Coastguard Worker  sources = angle_preprocessor_sources
434*8975f5c5SAndroid Build Coastguard Worker
435*8975f5c5SAndroid Build Coastguard Worker  # preprocessor_tab_autogen.cpp contains an instance of this.
436*8975f5c5SAndroid Build Coastguard Worker  configs += [ ":disable_unreachable_code_break_warning" ]
437*8975f5c5SAndroid Build Coastguard Worker
438*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
439*8975f5c5SAndroid Build Coastguard Worker    ":angle_common",
440*8975f5c5SAndroid Build Coastguard Worker    ":angle_translator_headers",
441*8975f5c5SAndroid Build Coastguard Worker  ]
442*8975f5c5SAndroid Build Coastguard Worker}
443*8975f5c5SAndroid Build Coastguard Worker
444*8975f5c5SAndroid Build Coastguard Workerconfig("angle_disable_pool_alloc") {
445*8975f5c5SAndroid Build Coastguard Worker  defines = [ "ANGLE_DISABLE_POOL_ALLOC" ]
446*8975f5c5SAndroid Build Coastguard Worker}
447*8975f5c5SAndroid Build Coastguard Worker
448*8975f5c5SAndroid Build Coastguard Workerconfig("debug_annotations_config") {
449*8975f5c5SAndroid Build Coastguard Worker  defines = []
450*8975f5c5SAndroid Build Coastguard Worker  if (is_debug) {
451*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_DEBUG_ANNOTATIONS" ]
452*8975f5c5SAndroid Build Coastguard Worker  }
453*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_annotator_run_time_checks) {
454*8975f5c5SAndroid Build Coastguard Worker    # When used with angle_enable_trace, enables debug markers for AGI with run-time checks to
455*8975f5c5SAndroid Build Coastguard Worker    # filter out EVENT() messages when the debug annotator is disabled.
456*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_ANNOTATOR_RUN_TIME_CHECKS" ]
457*8975f5c5SAndroid Build Coastguard Worker  }
458*8975f5c5SAndroid Build Coastguard Worker}
459*8975f5c5SAndroid Build Coastguard Worker
460*8975f5c5SAndroid Build Coastguard Workerconfig("angle_asserts_config") {
461*8975f5c5SAndroid Build Coastguard Worker  if (angle_assert_always_on) {
462*8975f5c5SAndroid Build Coastguard Worker    defines = [ "ANGLE_ASSERT_ALWAYS_ON" ]
463*8975f5c5SAndroid Build Coastguard Worker  }
464*8975f5c5SAndroid Build Coastguard Worker}
465*8975f5c5SAndroid Build Coastguard Worker
466*8975f5c5SAndroid Build Coastguard Workerconfig("angle_common_config") {
467*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [
468*8975f5c5SAndroid Build Coastguard Worker    "src/common/base",
469*8975f5c5SAndroid Build Coastguard Worker    "src/common/third_party/xxhash",
470*8975f5c5SAndroid Build Coastguard Worker  ]
471*8975f5c5SAndroid Build Coastguard Worker  libs = []
472*8975f5c5SAndroid Build Coastguard Worker  if (is_android) {
473*8975f5c5SAndroid Build Coastguard Worker    libs += [ "log" ]
474*8975f5c5SAndroid Build Coastguard Worker  }
475*8975f5c5SAndroid Build Coastguard Worker
476*8975f5c5SAndroid Build Coastguard Worker  if (is_win && !angle_is_winuwp && !build_with_chromium) {
477*8975f5c5SAndroid Build Coastguard Worker    # Needed for futex support
478*8975f5c5SAndroid Build Coastguard Worker    libs += [ "synchronization.lib" ]
479*8975f5c5SAndroid Build Coastguard Worker  }
480*8975f5c5SAndroid Build Coastguard Worker
481*8975f5c5SAndroid Build Coastguard Worker  defines = []
482*8975f5c5SAndroid Build Coastguard Worker  if (angle_delegate_workers) {
483*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_DELEGATE_WORKERS=1" ]
484*8975f5c5SAndroid Build Coastguard Worker  }
485*8975f5c5SAndroid Build Coastguard Worker}
486*8975f5c5SAndroid Build Coastguard Worker
487*8975f5c5SAndroid Build Coastguard Worker# Silences the "indirect call of a function with wrong dynamic type" cfi error
488*8975f5c5SAndroid Build Coastguard Workerconfig("angle_no_cfi_icall") {
489*8975f5c5SAndroid Build Coastguard Worker  if (is_cfi && use_cfi_icall && current_toolchain == default_toolchain) {
490*8975f5c5SAndroid Build Coastguard Worker    cflags = [ "-fno-sanitize=cfi-icall" ]
491*8975f5c5SAndroid Build Coastguard Worker  }
492*8975f5c5SAndroid Build Coastguard Worker}
493*8975f5c5SAndroid Build Coastguard Worker
494*8975f5c5SAndroid Build Coastguard Worker# Silences the "cast from void* or another unrelated type to the wrong dynamic type" cfi error
495*8975f5c5SAndroid Build Coastguard Workerconfig("angle_no_cfi_unrelated_cast") {
496*8975f5c5SAndroid Build Coastguard Worker  if (is_cfi && use_cfi_cast && current_toolchain == default_toolchain) {
497*8975f5c5SAndroid Build Coastguard Worker    cflags = [ "-fno-sanitize=cfi-unrelated-cast" ]
498*8975f5c5SAndroid Build Coastguard Worker  }
499*8975f5c5SAndroid Build Coastguard Worker}
500*8975f5c5SAndroid Build Coastguard Worker
501*8975f5c5SAndroid Build Coastguard Workerangle_source_set("xxhash") {
502*8975f5c5SAndroid Build Coastguard Worker  sources = xxhash_sources
503*8975f5c5SAndroid Build Coastguard Worker  if (is_clang) {
504*8975f5c5SAndroid Build Coastguard Worker    cflags_c = [ "-Wno-implicit-fallthrough" ]
505*8975f5c5SAndroid Build Coastguard Worker  }
506*8975f5c5SAndroid Build Coastguard Worker}
507*8975f5c5SAndroid Build Coastguard Worker
508*8975f5c5SAndroid Build Coastguard Workerif (angle_has_build) {
509*8975f5c5SAndroid Build Coastguard Worker  fuzzer_test("xxhash_fuzzer") {
510*8975f5c5SAndroid Build Coastguard Worker    sources = [ "src/common/third_party/xxhash/xxhash_fuzzer.cpp" ]
511*8975f5c5SAndroid Build Coastguard Worker    deps = [ ":xxhash" ]
512*8975f5c5SAndroid Build Coastguard Worker  }
513*8975f5c5SAndroid Build Coastguard Worker}
514*8975f5c5SAndroid Build Coastguard Worker
515*8975f5c5SAndroid Build Coastguard Workertemplate("angle_common_lib") {
516*8975f5c5SAndroid Build Coastguard Worker  angle_static_library(target_name) {
517*8975f5c5SAndroid Build Coastguard Worker    sources = invoker.sources
518*8975f5c5SAndroid Build Coastguard Worker
519*8975f5c5SAndroid Build Coastguard Worker    configs += [
520*8975f5c5SAndroid Build Coastguard Worker      ":angle_common_config",
521*8975f5c5SAndroid Build Coastguard Worker      ":debug_annotations_config",
522*8975f5c5SAndroid Build Coastguard Worker    ]
523*8975f5c5SAndroid Build Coastguard Worker
524*8975f5c5SAndroid Build Coastguard Worker    deps = [ ":xxhash" ]
525*8975f5c5SAndroid Build Coastguard Worker
526*8975f5c5SAndroid Build Coastguard Worker    public_deps = [
527*8975f5c5SAndroid Build Coastguard Worker      ":angle_abseil",
528*8975f5c5SAndroid Build Coastguard Worker      ":includes",
529*8975f5c5SAndroid Build Coastguard Worker    ]
530*8975f5c5SAndroid Build Coastguard Worker    public_configs += [ ":angle_common_config" ]
531*8975f5c5SAndroid Build Coastguard Worker    if (angle_has_build && use_fuzzing_engine) {
532*8975f5c5SAndroid Build Coastguard Worker      all_dependent_configs = [ ":angle_disable_pool_alloc" ]
533*8975f5c5SAndroid Build Coastguard Worker    }
534*8975f5c5SAndroid Build Coastguard Worker
535*8975f5c5SAndroid Build Coastguard Worker    if (is_linux || is_chromeos) {
536*8975f5c5SAndroid Build Coastguard Worker      libs = [ "dl" ]
537*8975f5c5SAndroid Build Coastguard Worker    }
538*8975f5c5SAndroid Build Coastguard Worker
539*8975f5c5SAndroid Build Coastguard Worker    if (is_android && (angle_enable_gl || angle_enable_vulkan)) {
540*8975f5c5SAndroid Build Coastguard Worker      # In API level 26 ANativeWindow APIs were moved from libandroid.so
541*8975f5c5SAndroid Build Coastguard Worker      # into a separate library, libnativewindow.so
542*8975f5c5SAndroid Build Coastguard Worker      if (ndk_api_level_at_least_26) {
543*8975f5c5SAndroid Build Coastguard Worker        libs = [ "nativewindow" ]
544*8975f5c5SAndroid Build Coastguard Worker      } else {
545*8975f5c5SAndroid Build Coastguard Worker        libs = [ "android" ]
546*8975f5c5SAndroid Build Coastguard Worker      }
547*8975f5c5SAndroid Build Coastguard Worker    }
548*8975f5c5SAndroid Build Coastguard Worker
549*8975f5c5SAndroid Build Coastguard Worker    if (angle_expose_non_conformant_extensions_and_versions) {
550*8975f5c5SAndroid Build Coastguard Worker      defines = [ "ANGLE_EXPOSE_NON_CONFORMANT_EXTENSIONS_AND_VERSIONS" ]
551*8975f5c5SAndroid Build Coastguard Worker    }
552*8975f5c5SAndroid Build Coastguard Worker
553*8975f5c5SAndroid Build Coastguard Worker    if (using_sanitizer && !build_with_chromium) {
554*8975f5c5SAndroid Build Coastguard Worker      data_deps =
555*8975f5c5SAndroid Build Coastguard Worker          [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ]
556*8975f5c5SAndroid Build Coastguard Worker    }
557*8975f5c5SAndroid Build Coastguard Worker
558*8975f5c5SAndroid Build Coastguard Worker    if (is_apple) {
559*8975f5c5SAndroid Build Coastguard Worker      frameworks = [ "Metal.framework" ]
560*8975f5c5SAndroid Build Coastguard Worker    }
561*8975f5c5SAndroid Build Coastguard Worker  }
562*8975f5c5SAndroid Build Coastguard Worker}
563*8975f5c5SAndroid Build Coastguard Worker
564*8975f5c5SAndroid Build Coastguard Workerangle_common_lib("angle_common") {
565*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_common_sources
566*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
567*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_common_cl_sources
568*8975f5c5SAndroid Build Coastguard Worker  }
569*8975f5c5SAndroid Build Coastguard Worker}
570*8975f5c5SAndroid Build Coastguard Worker
571*8975f5c5SAndroid Build Coastguard Workerangle_common_lib("angle_common_shader_state") {
572*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_common_shader_state_sources
573*8975f5c5SAndroid Build Coastguard Worker}
574*8975f5c5SAndroid Build Coastguard Worker
575*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_capture_common") {
576*8975f5c5SAndroid Build Coastguard Worker  sources = [
577*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils.cpp",
578*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils.h",
579*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils_autogen.cpp",
580*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils_autogen.h",
581*8975f5c5SAndroid Build Coastguard Worker  ]
582*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":angle_common" ]
583*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":angle_gl_enum_utils" ]
584*8975f5c5SAndroid Build Coastguard Worker}
585*8975f5c5SAndroid Build Coastguard Worker
586*8975f5c5SAndroid Build Coastguard Workerconfig("angle_image_util_config") {
587*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [
588*8975f5c5SAndroid Build Coastguard Worker    "include",
589*8975f5c5SAndroid Build Coastguard Worker    "src",
590*8975f5c5SAndroid Build Coastguard Worker  ]
591*8975f5c5SAndroid Build Coastguard Worker}
592*8975f5c5SAndroid Build Coastguard Worker
593*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_image_util_headers") {
594*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_image_util_headers
595*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":angle_common" ]
596*8975f5c5SAndroid Build Coastguard Worker}
597*8975f5c5SAndroid Build Coastguard Worker
598*8975f5c5SAndroid Build Coastguard Workerangle_static_library("angle_image_util") {
599*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_image_util_sources
600*8975f5c5SAndroid Build Coastguard Worker  public_configs += [ ":angle_image_util_config" ]
601*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":angle_image_util_headers" ]
602*8975f5c5SAndroid Build Coastguard Worker
603*8975f5c5SAndroid Build Coastguard Worker  if (angle_has_astc_encoder) {
604*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "third_party/astc-encoder:astcenc" ]
605*8975f5c5SAndroid Build Coastguard Worker    include_dirs = [ "third_party/astc-encoder/src/Source/" ]
606*8975f5c5SAndroid Build Coastguard Worker  }
607*8975f5c5SAndroid Build Coastguard Worker}
608*8975f5c5SAndroid Build Coastguard Worker
609*8975f5c5SAndroid Build Coastguard Workerconfig("angle_gl_visibility_config") {
610*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
611*8975f5c5SAndroid Build Coastguard Worker    defines = [
612*8975f5c5SAndroid Build Coastguard Worker      "GL_APICALL=",
613*8975f5c5SAndroid Build Coastguard Worker      "GL_API=",
614*8975f5c5SAndroid Build Coastguard Worker    ]
615*8975f5c5SAndroid Build Coastguard Worker  } else {
616*8975f5c5SAndroid Build Coastguard Worker    defines = [
617*8975f5c5SAndroid Build Coastguard Worker      "GL_APICALL=__attribute__((visibility(\"default\")))",
618*8975f5c5SAndroid Build Coastguard Worker      "GL_API=__attribute__((visibility(\"default\")))",
619*8975f5c5SAndroid Build Coastguard Worker    ]
620*8975f5c5SAndroid Build Coastguard Worker  }
621*8975f5c5SAndroid Build Coastguard Worker}
622*8975f5c5SAndroid Build Coastguard Worker
623*8975f5c5SAndroid Build Coastguard Workerconfig("angle_vulkan_wayland_config") {
624*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan && angle_use_wayland &&
625*8975f5c5SAndroid Build Coastguard Worker      defined(vulkan_wayland_include_dirs)) {
626*8975f5c5SAndroid Build Coastguard Worker    include_dirs = vulkan_wayland_include_dirs
627*8975f5c5SAndroid Build Coastguard Worker  }
628*8975f5c5SAndroid Build Coastguard Worker}
629*8975f5c5SAndroid Build Coastguard Worker
630*8975f5c5SAndroid Build Coastguard Workerconfig("angle_gpu_info_util_config") {
631*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [
632*8975f5c5SAndroid Build Coastguard Worker    "include",
633*8975f5c5SAndroid Build Coastguard Worker    "src",
634*8975f5c5SAndroid Build Coastguard Worker  ]
635*8975f5c5SAndroid Build Coastguard Worker}
636*8975f5c5SAndroid Build Coastguard Worker
637*8975f5c5SAndroid Build Coastguard Workerangle_static_library("angle_gpu_info_util") {
638*8975f5c5SAndroid Build Coastguard Worker  public_configs += [
639*8975f5c5SAndroid Build Coastguard Worker    ":angle_gpu_info_util_config",
640*8975f5c5SAndroid Build Coastguard Worker    ":angle_backend_config",
641*8975f5c5SAndroid Build Coastguard Worker  ]
642*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":angle_common" ]
643*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_gpu_info_util_sources
644*8975f5c5SAndroid Build Coastguard Worker  deps = []
645*8975f5c5SAndroid Build Coastguard Worker  libs = []
646*8975f5c5SAndroid Build Coastguard Worker  defines = []
647*8975f5c5SAndroid Build Coastguard Worker
648*8975f5c5SAndroid Build Coastguard Worker  if (angle_build_vulkan_system_info) {
649*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_vulkan_sources
650*8975f5c5SAndroid Build Coastguard Worker    deps += [
651*8975f5c5SAndroid Build Coastguard Worker      "$angle_vulkan_headers_dir:vulkan_headers",
652*8975f5c5SAndroid Build Coastguard Worker      "src/common/vulkan:angle_libvulkan_loader",
653*8975f5c5SAndroid Build Coastguard Worker      "src/common/vulkan:angle_vulkan_icd",
654*8975f5c5SAndroid Build Coastguard Worker    ]
655*8975f5c5SAndroid Build Coastguard Worker    configs += [ "$angle_root:angle_no_cfi_icall" ]
656*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan_system_info) {
657*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_USE_VULKAN_SYSTEM_INFO" ]
658*8975f5c5SAndroid Build Coastguard Worker    }
659*8975f5c5SAndroid Build Coastguard Worker  }
660*8975f5c5SAndroid Build Coastguard Worker
661*8975f5c5SAndroid Build Coastguard Worker  if (is_android) {
662*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_android_sources
663*8975f5c5SAndroid Build Coastguard Worker  }
664*8975f5c5SAndroid Build Coastguard Worker
665*8975f5c5SAndroid Build Coastguard Worker  if (is_fuchsia) {
666*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_fuchsia_sources
667*8975f5c5SAndroid Build Coastguard Worker    deps += [ "$angle_root/src/common/vulkan:angle_vulkan_entry_points" ]
668*8975f5c5SAndroid Build Coastguard Worker  }
669*8975f5c5SAndroid Build Coastguard Worker
670*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
671*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_win_sources
672*8975f5c5SAndroid Build Coastguard Worker    if (!angle_is_winuwp) {
673*8975f5c5SAndroid Build Coastguard Worker      libs += [ "setupapi.lib" ]
674*8975f5c5SAndroid Build Coastguard Worker    }
675*8975f5c5SAndroid Build Coastguard Worker    libs += [ "dxgi.lib" ]
676*8975f5c5SAndroid Build Coastguard Worker  }
677*8975f5c5SAndroid Build Coastguard Worker
678*8975f5c5SAndroid Build Coastguard Worker  if (is_linux || is_chromeos) {
679*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_linux_sources
680*8975f5c5SAndroid Build Coastguard Worker
681*8975f5c5SAndroid Build Coastguard Worker    if (angle_use_x11 && angle_has_build) {
682*8975f5c5SAndroid Build Coastguard Worker      sources += libangle_gpu_info_util_x11_sources
683*8975f5c5SAndroid Build Coastguard Worker      deps += [ "src/third_party/libXNVCtrl:libXNVCtrl" ]
684*8975f5c5SAndroid Build Coastguard Worker      defines += [ "GPU_INFO_USE_X11" ]
685*8975f5c5SAndroid Build Coastguard Worker      libs += [
686*8975f5c5SAndroid Build Coastguard Worker        "X11",
687*8975f5c5SAndroid Build Coastguard Worker        "Xi",
688*8975f5c5SAndroid Build Coastguard Worker        "Xext",
689*8975f5c5SAndroid Build Coastguard Worker      ]
690*8975f5c5SAndroid Build Coastguard Worker    }
691*8975f5c5SAndroid Build Coastguard Worker
692*8975f5c5SAndroid Build Coastguard Worker    if (angle_use_wayland && angle_has_build) {
693*8975f5c5SAndroid Build Coastguard Worker      public_deps += [ ":angle_wayland" ]
694*8975f5c5SAndroid Build Coastguard Worker    }
695*8975f5c5SAndroid Build Coastguard Worker  }
696*8975f5c5SAndroid Build Coastguard Worker
697*8975f5c5SAndroid Build Coastguard Worker  if (use_libpci) {
698*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_gpu_info_util_libpci_sources
699*8975f5c5SAndroid Build Coastguard Worker    defines += [ "GPU_INFO_USE_LIBPCI" ]
700*8975f5c5SAndroid Build Coastguard Worker    libs += [ "pci" ]
701*8975f5c5SAndroid Build Coastguard Worker  }
702*8975f5c5SAndroid Build Coastguard Worker
703*8975f5c5SAndroid Build Coastguard Worker  if (is_apple) {
704*8975f5c5SAndroid Build Coastguard Worker    frameworks = [
705*8975f5c5SAndroid Build Coastguard Worker      "IOKit.framework",
706*8975f5c5SAndroid Build Coastguard Worker      "CoreFoundation.framework",
707*8975f5c5SAndroid Build Coastguard Worker      "CoreGraphics.framework",
708*8975f5c5SAndroid Build Coastguard Worker    ]
709*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_cgl) {
710*8975f5c5SAndroid Build Coastguard Worker      frameworks += [ "OpenGL.framework" ]
711*8975f5c5SAndroid Build Coastguard Worker    }
712*8975f5c5SAndroid Build Coastguard Worker    if (is_mac || angle_enable_cgl) {
713*8975f5c5SAndroid Build Coastguard Worker      sources += libangle_gpu_info_util_mac_sources
714*8975f5c5SAndroid Build Coastguard Worker    }
715*8975f5c5SAndroid Build Coastguard Worker    if (is_ios && !angle_enable_cgl) {
716*8975f5c5SAndroid Build Coastguard Worker      sources += libangle_gpu_info_util_ios_sources
717*8975f5c5SAndroid Build Coastguard Worker    }
718*8975f5c5SAndroid Build Coastguard Worker  }
719*8975f5c5SAndroid Build Coastguard Worker}
720*8975f5c5SAndroid Build Coastguard Worker
721*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_translator_headers") {
722*8975f5c5SAndroid Build Coastguard Worker  sources = angle_translator_exported_headers
723*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":includes" ]
724*8975f5c5SAndroid Build Coastguard Worker}
725*8975f5c5SAndroid Build Coastguard Worker
726*8975f5c5SAndroid Build Coastguard Workerangle_static_library("translator") {
727*8975f5c5SAndroid Build Coastguard Worker  sources = angle_translator_sources
728*8975f5c5SAndroid Build Coastguard Worker  defines = []
729*8975f5c5SAndroid Build Coastguard Worker
730*8975f5c5SAndroid Build Coastguard Worker  _needs_glsl_base = false
731*8975f5c5SAndroid Build Coastguard Worker  _needs_glsl_and_vulkan_base = false
732*8975f5c5SAndroid Build Coastguard Worker  _uses_spirv = false
733*8975f5c5SAndroid Build Coastguard Worker
734*8975f5c5SAndroid Build Coastguard Worker  # Frontend support:
735*8975f5c5SAndroid Build Coastguard Worker  sources += angle_translator_essl_symbol_table_sources
736*8975f5c5SAndroid Build Coastguard Worker
737*8975f5c5SAndroid Build Coastguard Worker  # Backend support:
738*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_null) {
739*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_NULL" ]
740*8975f5c5SAndroid Build Coastguard Worker  }
741*8975f5c5SAndroid Build Coastguard Worker
742*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_essl || use_fuzzing_engine) {
743*8975f5c5SAndroid Build Coastguard Worker    _needs_glsl_base = true
744*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_essl_sources
745*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_ESSL" ]
746*8975f5c5SAndroid Build Coastguard Worker  }
747*8975f5c5SAndroid Build Coastguard Worker
748*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_glsl || use_fuzzing_engine) {
749*8975f5c5SAndroid Build Coastguard Worker    _needs_glsl_base = true
750*8975f5c5SAndroid Build Coastguard Worker    _needs_glsl_and_vulkan_base = true
751*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_glsl_sources
752*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_GLSL" ]
753*8975f5c5SAndroid Build Coastguard Worker
754*8975f5c5SAndroid Build Coastguard Worker    if (is_apple) {
755*8975f5c5SAndroid Build Coastguard Worker      sources += angle_translator_glsl_apple_sources
756*8975f5c5SAndroid Build Coastguard Worker    }
757*8975f5c5SAndroid Build Coastguard Worker  }
758*8975f5c5SAndroid Build Coastguard Worker
759*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_hlsl || use_fuzzing_engine) {
760*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_hlsl_sources
761*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_HLSL" ]
762*8975f5c5SAndroid Build Coastguard Worker  }
763*8975f5c5SAndroid Build Coastguard Worker
764*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan || use_fuzzing_engine) {
765*8975f5c5SAndroid Build Coastguard Worker    _needs_glsl_base = true
766*8975f5c5SAndroid Build Coastguard Worker    _needs_glsl_and_vulkan_base = true
767*8975f5c5SAndroid Build Coastguard Worker    _uses_spirv = true
768*8975f5c5SAndroid Build Coastguard Worker
769*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_lib_spirv_sources
770*8975f5c5SAndroid Build Coastguard Worker  }
771*8975f5c5SAndroid Build Coastguard Worker
772*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan || use_fuzzing_engine) {
773*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_VULKAN" ]
774*8975f5c5SAndroid Build Coastguard Worker  }
775*8975f5c5SAndroid Build Coastguard Worker
776*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_metal) {
777*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_lib_msl_sources
778*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_METAL" ]
779*8975f5c5SAndroid Build Coastguard Worker  }
780*8975f5c5SAndroid Build Coastguard Worker
781*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_wgpu) {
782*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_lib_wgsl_sources
783*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_WGPU" ]
784*8975f5c5SAndroid Build Coastguard Worker  }
785*8975f5c5SAndroid Build Coastguard Worker
786*8975f5c5SAndroid Build Coastguard Worker  if (_needs_glsl_base) {
787*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_glsl_base_sources
788*8975f5c5SAndroid Build Coastguard Worker  }
789*8975f5c5SAndroid Build Coastguard Worker  if (_needs_glsl_and_vulkan_base) {
790*8975f5c5SAndroid Build Coastguard Worker    sources += angle_translator_glsl_and_vulkan_base_sources
791*8975f5c5SAndroid Build Coastguard Worker  }
792*8975f5c5SAndroid Build Coastguard Worker
793*8975f5c5SAndroid Build Coastguard Worker  public_configs += [ ":external_config" ]
794*8975f5c5SAndroid Build Coastguard Worker
795*8975f5c5SAndroid Build Coastguard Worker  deps = [
796*8975f5c5SAndroid Build Coastguard Worker    ":angle_common_shader_state",
797*8975f5c5SAndroid Build Coastguard Worker    ":includes",
798*8975f5c5SAndroid Build Coastguard Worker    ":preprocessor",
799*8975f5c5SAndroid Build Coastguard Worker    "$angle_root/src/common/spirv:angle_spirv_headers",
800*8975f5c5SAndroid Build Coastguard Worker  ]
801*8975f5c5SAndroid Build Coastguard Worker
802*8975f5c5SAndroid Build Coastguard Worker  if (_uses_spirv) {
803*8975f5c5SAndroid Build Coastguard Worker    deps += [
804*8975f5c5SAndroid Build Coastguard Worker      "$angle_root/src/common/spirv:angle_spirv_base",
805*8975f5c5SAndroid Build Coastguard Worker      "$angle_root/src/common/spirv:angle_spirv_builder",
806*8975f5c5SAndroid Build Coastguard Worker      "${angle_spirv_headers_dir}:spv_headers",
807*8975f5c5SAndroid Build Coastguard Worker      "${angle_spirv_tools_dir}:spvtools_headers",
808*8975f5c5SAndroid Build Coastguard Worker      "${angle_spirv_tools_dir}:spvtools_val",
809*8975f5c5SAndroid Build Coastguard Worker    ]
810*8975f5c5SAndroid Build Coastguard Worker  }
811*8975f5c5SAndroid Build Coastguard Worker
812*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
813*8975f5c5SAndroid Build Coastguard Worker    ":angle_common",
814*8975f5c5SAndroid Build Coastguard Worker    ":angle_translator_headers",
815*8975f5c5SAndroid Build Coastguard Worker    ":angle_version_info",
816*8975f5c5SAndroid Build Coastguard Worker  ]
817*8975f5c5SAndroid Build Coastguard Worker
818*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
819*8975f5c5SAndroid Build Coastguard Worker    # Necessary to suppress some system header xtree warnings in Release.
820*8975f5c5SAndroid Build Coastguard Worker    # For some reason this warning doesn't get triggered in Chromium
821*8975f5c5SAndroid Build Coastguard Worker    cflags = [ "/wd4718" ]
822*8975f5c5SAndroid Build Coastguard Worker  }
823*8975f5c5SAndroid Build Coastguard Worker}
824*8975f5c5SAndroid Build Coastguard Worker
825*8975f5c5SAndroid Build Coastguard Workerangle_source_set("translator_fuzzer") {
826*8975f5c5SAndroid Build Coastguard Worker  sources = [ "src/compiler/fuzz/translator_fuzzer.cpp" ]
827*8975f5c5SAndroid Build Coastguard Worker
828*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [
829*8975f5c5SAndroid Build Coastguard Worker    "include",
830*8975f5c5SAndroid Build Coastguard Worker    "src",
831*8975f5c5SAndroid Build Coastguard Worker  ]
832*8975f5c5SAndroid Build Coastguard Worker
833*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":translator" ]
834*8975f5c5SAndroid Build Coastguard Worker}
835*8975f5c5SAndroid Build Coastguard Worker
836*8975f5c5SAndroid Build Coastguard Workerconfig("angle_program_version_id_config") {
837*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [ "$root_gen_dir/angle" ]
838*8975f5c5SAndroid Build Coastguard Worker  visibility = [ ":angle_program_version_id" ]
839*8975f5c5SAndroid Build Coastguard Worker}
840*8975f5c5SAndroid Build Coastguard Worker
841*8975f5c5SAndroid Build Coastguard Workeraction("angle_program_version_id") {
842*8975f5c5SAndroid Build Coastguard Worker  response_file_contents =
843*8975f5c5SAndroid Build Coastguard Worker      rebase_path(angle_code_affecting_program_serialize, root_build_dir)
844*8975f5c5SAndroid Build Coastguard Worker
845*8975f5c5SAndroid Build Coastguard Worker  _program_version_header = "$root_gen_dir/angle/ANGLEShaderProgramVersion.h"
846*8975f5c5SAndroid Build Coastguard Worker  script = "src/program_serialize_data_version.py"
847*8975f5c5SAndroid Build Coastguard Worker  outputs = [ _program_version_header ]
848*8975f5c5SAndroid Build Coastguard Worker
849*8975f5c5SAndroid Build Coastguard Worker  visibility = [ ":angle_version" ]
850*8975f5c5SAndroid Build Coastguard Worker
851*8975f5c5SAndroid Build Coastguard Worker  inputs = angle_code_affecting_program_serialize
852*8975f5c5SAndroid Build Coastguard Worker  deps = angle_dependencies_affecting_program_serialize
853*8975f5c5SAndroid Build Coastguard Worker
854*8975f5c5SAndroid Build Coastguard Worker  args = [
855*8975f5c5SAndroid Build Coastguard Worker    rebase_path(_program_version_header, root_build_dir),
856*8975f5c5SAndroid Build Coastguard Worker    "{{response_file_name}}",
857*8975f5c5SAndroid Build Coastguard Worker  ]
858*8975f5c5SAndroid Build Coastguard Worker
859*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":angle_program_version_id_config" ]
860*8975f5c5SAndroid Build Coastguard Worker}
861*8975f5c5SAndroid Build Coastguard Worker
862*8975f5c5SAndroid Build Coastguard Workerconfig("angle_commit_id_config") {
863*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [ "$root_gen_dir/angle" ]
864*8975f5c5SAndroid Build Coastguard Worker  visibility = [ ":angle_commit_id" ]
865*8975f5c5SAndroid Build Coastguard Worker}
866*8975f5c5SAndroid Build Coastguard Worker
867*8975f5c5SAndroid Build Coastguard Workeraction("angle_commit_id") {
868*8975f5c5SAndroid Build Coastguard Worker  _commit_id_header = "$root_gen_dir/angle/angle_commit.h"
869*8975f5c5SAndroid Build Coastguard Worker  script = "src/commit_id.py"
870*8975f5c5SAndroid Build Coastguard Worker  outputs = [ _commit_id_header ]
871*8975f5c5SAndroid Build Coastguard Worker
872*8975f5c5SAndroid Build Coastguard Worker  visibility = [ ":angle_version" ]
873*8975f5c5SAndroid Build Coastguard Worker
874*8975f5c5SAndroid Build Coastguard Worker  # Add git as a dependency if it is available.
875*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_commit_id &&
876*8975f5c5SAndroid Build Coastguard Worker      exec_script("src/commit_id.py", [ "check" ], "value") == 1) {
877*8975f5c5SAndroid Build Coastguard Worker    # commit id should depend on angle's HEAD revision
878*8975f5c5SAndroid Build Coastguard Worker    git_dirs = exec_script("src/commit_id.py", [ "get_git_dirs" ], "list lines")
879*8975f5c5SAndroid Build Coastguard Worker    inputs = [ git_dirs[0] + "/HEAD" ]
880*8975f5c5SAndroid Build Coastguard Worker    branch = read_file(git_dirs[0] + "/HEAD", "string")
881*8975f5c5SAndroid Build Coastguard Worker    result = string_split(branch)
882*8975f5c5SAndroid Build Coastguard Worker    if (result[0] == "ref:") {
883*8975f5c5SAndroid Build Coastguard Worker      _ref_file = result[1]
884*8975f5c5SAndroid Build Coastguard Worker
885*8975f5c5SAndroid Build Coastguard Worker      # If git has packed the contents of .git/refs/heads/ in .git/packed-refs,
886*8975f5c5SAndroid Build Coastguard Worker      # unpack the head before depending on it.
887*8975f5c5SAndroid Build Coastguard Worker      exec_script("src/commit_id.py",
888*8975f5c5SAndroid Build Coastguard Worker                  [
889*8975f5c5SAndroid Build Coastguard Worker                    "unpack",
890*8975f5c5SAndroid Build Coastguard Worker                    _ref_file,
891*8975f5c5SAndroid Build Coastguard Worker                  ],
892*8975f5c5SAndroid Build Coastguard Worker                  "")
893*8975f5c5SAndroid Build Coastguard Worker      inputs += [ git_dirs[1] + "/" + _ref_file ]
894*8975f5c5SAndroid Build Coastguard Worker    }
895*8975f5c5SAndroid Build Coastguard Worker  }
896*8975f5c5SAndroid Build Coastguard Worker
897*8975f5c5SAndroid Build Coastguard Worker  args = [
898*8975f5c5SAndroid Build Coastguard Worker    "gen",
899*8975f5c5SAndroid Build Coastguard Worker    rebase_path(_commit_id_header, root_build_dir),
900*8975f5c5SAndroid Build Coastguard Worker  ]
901*8975f5c5SAndroid Build Coastguard Worker
902*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":angle_commit_id_config" ]
903*8975f5c5SAndroid Build Coastguard Worker}
904*8975f5c5SAndroid Build Coastguard Worker
905*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_version") {
906*8975f5c5SAndroid Build Coastguard Worker  sources = [ "src/common/angle_version.h" ]
907*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
908*8975f5c5SAndroid Build Coastguard Worker    ":angle_commit_id",
909*8975f5c5SAndroid Build Coastguard Worker    ":angle_program_version_id",
910*8975f5c5SAndroid Build Coastguard Worker  ]
911*8975f5c5SAndroid Build Coastguard Worker  visibility = [ ":angle_version_info" ]
912*8975f5c5SAndroid Build Coastguard Worker
913*8975f5c5SAndroid Build Coastguard Worker  # The version headers are used directly in Windows .RC files.
914*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
915*8975f5c5SAndroid Build Coastguard Worker    visibility += [
916*8975f5c5SAndroid Build Coastguard Worker      ":libEGL",
917*8975f5c5SAndroid Build Coastguard Worker      ":libGL",
918*8975f5c5SAndroid Build Coastguard Worker      ":libGLESv1_CM",
919*8975f5c5SAndroid Build Coastguard Worker      ":libGLESv2",
920*8975f5c5SAndroid Build Coastguard Worker      ":libGLESv2_capture_complement",
921*8975f5c5SAndroid Build Coastguard Worker    ]
922*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan) {
923*8975f5c5SAndroid Build Coastguard Worker      visibility += [
924*8975f5c5SAndroid Build Coastguard Worker        ":libEGL_vulkan_secondaries",
925*8975f5c5SAndroid Build Coastguard Worker        ":libGLESv2_vulkan_secondaries",
926*8975f5c5SAndroid Build Coastguard Worker      ]
927*8975f5c5SAndroid Build Coastguard Worker    }
928*8975f5c5SAndroid Build Coastguard Worker  }
929*8975f5c5SAndroid Build Coastguard Worker}
930*8975f5c5SAndroid Build Coastguard Worker
931*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_version_info") {
932*8975f5c5SAndroid Build Coastguard Worker  sources = [
933*8975f5c5SAndroid Build Coastguard Worker    "src/common/angle_version_info.cpp",
934*8975f5c5SAndroid Build Coastguard Worker    "src/common/angle_version_info.h",
935*8975f5c5SAndroid Build Coastguard Worker  ]
936*8975f5c5SAndroid Build Coastguard Worker  deps = [
937*8975f5c5SAndroid Build Coastguard Worker    ":angle_translator_headers",
938*8975f5c5SAndroid Build Coastguard Worker    ":angle_version",
939*8975f5c5SAndroid Build Coastguard Worker  ]
940*8975f5c5SAndroid Build Coastguard Worker}
941*8975f5c5SAndroid Build Coastguard Worker
942*8975f5c5SAndroid Build Coastguard Workerconfig("angle_backend_config") {
943*8975f5c5SAndroid Build Coastguard Worker  defines = []
944*8975f5c5SAndroid Build Coastguard Worker
945*8975f5c5SAndroid Build Coastguard Worker  if (angle_force_context_check_every_call) {
946*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_FORCE_CONTEXT_CHECK_EVERY_CALL=1" ]
947*8975f5c5SAndroid Build Coastguard Worker  }
948*8975f5c5SAndroid Build Coastguard Worker
949*8975f5c5SAndroid Build Coastguard Worker  if (angle_expose_non_conformant_extensions_and_versions) {
950*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_EXPOSE_NON_CONFORMANT_EXTENSIONS_AND_VERSIONS" ]
951*8975f5c5SAndroid Build Coastguard Worker  }
952*8975f5c5SAndroid Build Coastguard Worker
953*8975f5c5SAndroid Build Coastguard Worker  configs = []
954*8975f5c5SAndroid Build Coastguard Worker
955*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_d3d11) {
956*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/d3d:angle_d3d11_backend_config" ]
957*8975f5c5SAndroid Build Coastguard Worker  }
958*8975f5c5SAndroid Build Coastguard Worker
959*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_d3d9) {
960*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/d3d:angle_d3d9_backend_config" ]
961*8975f5c5SAndroid Build Coastguard Worker  }
962*8975f5c5SAndroid Build Coastguard Worker
963*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_gl) {
964*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/gl:angle_gl_backend_config" ]
965*8975f5c5SAndroid Build Coastguard Worker  }
966*8975f5c5SAndroid Build Coastguard Worker
967*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_null) {
968*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/null:angle_null_backend_config" ]
969*8975f5c5SAndroid Build Coastguard Worker  }
970*8975f5c5SAndroid Build Coastguard Worker
971*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_wgpu) {
972*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/wgpu:angle_wgpu_backend_config" ]
973*8975f5c5SAndroid Build Coastguard Worker  }
974*8975f5c5SAndroid Build Coastguard Worker
975*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_metal) {
976*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/metal:angle_metal_backend_config" ]
977*8975f5c5SAndroid Build Coastguard Worker  }
978*8975f5c5SAndroid Build Coastguard Worker
979*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan) {
980*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend_config" ]
981*8975f5c5SAndroid Build Coastguard Worker  }
982*8975f5c5SAndroid Build Coastguard Worker
983*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl_passthrough) {
984*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/cl:angle_cl_backend_config" ]
985*8975f5c5SAndroid Build Coastguard Worker  }
986*8975f5c5SAndroid Build Coastguard Worker
987*8975f5c5SAndroid Build Coastguard Worker  if (angle_is_winuwp) {
988*8975f5c5SAndroid Build Coastguard Worker    configs += [ "src/libANGLE/renderer/d3d:angle_enable_winuwp_config" ]
989*8975f5c5SAndroid Build Coastguard Worker  }
990*8975f5c5SAndroid Build Coastguard Worker}
991*8975f5c5SAndroid Build Coastguard Worker
992*8975f5c5SAndroid Build Coastguard Workerconfig("libANGLE_config") {
993*8975f5c5SAndroid Build Coastguard Worker  cflags = []
994*8975f5c5SAndroid Build Coastguard Worker  defines = []
995*8975f5c5SAndroid Build Coastguard Worker  libs = []
996*8975f5c5SAndroid Build Coastguard Worker  ldflags = []
997*8975f5c5SAndroid Build Coastguard Worker  defines += [ "LIBANGLE_IMPLEMENTATION" ]
998*8975f5c5SAndroid Build Coastguard Worker
999*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
1000*8975f5c5SAndroid Build Coastguard Worker    cflags += [ "/wd4530" ]  # C++ exception handler used, but unwind semantics
1001*8975f5c5SAndroid Build Coastguard Worker                             # are not enabled.
1002*8975f5c5SAndroid Build Coastguard Worker  }
1003*8975f5c5SAndroid Build Coastguard Worker
1004*8975f5c5SAndroid Build Coastguard Worker  if (is_android && (angle_enable_gl || angle_enable_vulkan)) {
1005*8975f5c5SAndroid Build Coastguard Worker    # In API level 26 ANativeWindow APIs were moved from libandroid.so
1006*8975f5c5SAndroid Build Coastguard Worker    # into a separate library, libnativewindow.so
1007*8975f5c5SAndroid Build Coastguard Worker    if (ndk_api_level_at_least_26) {
1008*8975f5c5SAndroid Build Coastguard Worker      libs += [ "nativewindow" ]
1009*8975f5c5SAndroid Build Coastguard Worker    } else {
1010*8975f5c5SAndroid Build Coastguard Worker      libs += [ "android" ]
1011*8975f5c5SAndroid Build Coastguard Worker    }
1012*8975f5c5SAndroid Build Coastguard Worker  }
1013*8975f5c5SAndroid Build Coastguard Worker
1014*8975f5c5SAndroid Build Coastguard Worker  if (angle_use_x11) {
1015*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_USE_X11" ]
1016*8975f5c5SAndroid Build Coastguard Worker  }
1017*8975f5c5SAndroid Build Coastguard Worker
1018*8975f5c5SAndroid Build Coastguard Worker  if (angle_use_wayland) {
1019*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_USE_WAYLAND" ]
1020*8975f5c5SAndroid Build Coastguard Worker  }
1021*8975f5c5SAndroid Build Coastguard Worker
1022*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_overlay) {
1023*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_OVERLAY=1" ]
1024*8975f5c5SAndroid Build Coastguard Worker  }
1025*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_perf_counter_output) {
1026*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_PERF_COUNTER_OUTPUT=1" ]
1027*8975f5c5SAndroid Build Coastguard Worker  }
1028*8975f5c5SAndroid Build Coastguard Worker
1029*8975f5c5SAndroid Build Coastguard Worker  if (!is_android) {
1030*8975f5c5SAndroid Build Coastguard Worker    # b/283233503
1031*8975f5c5SAndroid Build Coastguard Worker    # Only export the ANGLE platform methods on Android, the EGL loader depends on them for
1032*8975f5c5SAndroid Build Coastguard Worker    # detecting ANGLE. Normally, users are expected to load them through eglGetProcAddress.
1033*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_PLATFORM_EXPORT=" ]
1034*8975f5c5SAndroid Build Coastguard Worker  }
1035*8975f5c5SAndroid Build Coastguard Worker}
1036*8975f5c5SAndroid Build Coastguard Worker
1037*8975f5c5SAndroid Build Coastguard Workerangle_source_set("libANGLE_headers") {
1038*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_headers
1039*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
1040*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_cl_headers
1041*8975f5c5SAndroid Build Coastguard Worker  }
1042*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
1043*8975f5c5SAndroid Build Coastguard Worker    ":angle_common",
1044*8975f5c5SAndroid Build Coastguard Worker    ":angle_translator_headers",
1045*8975f5c5SAndroid Build Coastguard Worker  ]
1046*8975f5c5SAndroid Build Coastguard Worker  public_configs += [ ":libANGLE_config" ]
1047*8975f5c5SAndroid Build Coastguard Worker}
1048*8975f5c5SAndroid Build Coastguard Worker
1049*8975f5c5SAndroid Build Coastguard Workerif ((is_win && angle_enable_gl) || angle_enable_d3d11 || angle_enable_d3d9) {
1050*8975f5c5SAndroid Build Coastguard Worker  angle_source_set("angle_d3d_format_tables") {
1051*8975f5c5SAndroid Build Coastguard Worker    sources = [
1052*8975f5c5SAndroid Build Coastguard Worker      "src/libANGLE/renderer/dxgi_format_map.h",
1053*8975f5c5SAndroid Build Coastguard Worker      "src/libANGLE/renderer/dxgi_format_map_autogen.cpp",
1054*8975f5c5SAndroid Build Coastguard Worker      "src/libANGLE/renderer/dxgi_support_table.h",
1055*8975f5c5SAndroid Build Coastguard Worker      "src/libANGLE/renderer/dxgi_support_table_autogen.cpp",
1056*8975f5c5SAndroid Build Coastguard Worker    ]
1057*8975f5c5SAndroid Build Coastguard Worker
1058*8975f5c5SAndroid Build Coastguard Worker    if (!angle_is_winuwp) {
1059*8975f5c5SAndroid Build Coastguard Worker      sources += [
1060*8975f5c5SAndroid Build Coastguard Worker        "src/libANGLE/renderer/d3d_format.cpp",
1061*8975f5c5SAndroid Build Coastguard Worker        "src/libANGLE/renderer/d3d_format.h",
1062*8975f5c5SAndroid Build Coastguard Worker      ]
1063*8975f5c5SAndroid Build Coastguard Worker    }
1064*8975f5c5SAndroid Build Coastguard Worker
1065*8975f5c5SAndroid Build Coastguard Worker    public_deps = [ ":libANGLE_headers" ]
1066*8975f5c5SAndroid Build Coastguard Worker    configs += [ ":angle_backend_config" ]
1067*8975f5c5SAndroid Build Coastguard Worker  }
1068*8975f5c5SAndroid Build Coastguard Worker}
1069*8975f5c5SAndroid Build Coastguard Worker
1070*8975f5c5SAndroid Build Coastguard Worker# Vulkan gets mixed in later depending on secondary command buffer configs
1071*8975f5c5SAndroid Build Coastguard Workerangle_source_set("libANGLE_no_vulkan") {
1072*8975f5c5SAndroid Build Coastguard Worker  sources = libangle_sources
1073*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
1074*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_cl_sources
1075*8975f5c5SAndroid Build Coastguard Worker  }
1076*8975f5c5SAndroid Build Coastguard Worker  defines = []
1077*8975f5c5SAndroid Build Coastguard Worker
1078*8975f5c5SAndroid Build Coastguard Worker  include_dirs = []
1079*8975f5c5SAndroid Build Coastguard Worker  libs = []
1080*8975f5c5SAndroid Build Coastguard Worker  if (angle_link_glx) {
1081*8975f5c5SAndroid Build Coastguard Worker    libs += [ "GL" ]
1082*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_LINK_GLX" ]
1083*8975f5c5SAndroid Build Coastguard Worker  }
1084*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
1085*8975f5c5SAndroid Build Coastguard Worker    ":angle_common",
1086*8975f5c5SAndroid Build Coastguard Worker    ":angle_common_shader_state",
1087*8975f5c5SAndroid Build Coastguard Worker    ":angle_gpu_info_util",
1088*8975f5c5SAndroid Build Coastguard Worker    ":angle_image_util",
1089*8975f5c5SAndroid Build Coastguard Worker    ":angle_version_info",
1090*8975f5c5SAndroid Build Coastguard Worker    ":libANGLE_headers",
1091*8975f5c5SAndroid Build Coastguard Worker    ":translator",
1092*8975f5c5SAndroid Build Coastguard Worker  ]
1093*8975f5c5SAndroid Build Coastguard Worker  deps = [
1094*8975f5c5SAndroid Build Coastguard Worker    ":angle_compression",
1095*8975f5c5SAndroid Build Coastguard Worker    ":includes",
1096*8975f5c5SAndroid Build Coastguard Worker  ]
1097*8975f5c5SAndroid Build Coastguard Worker
1098*8975f5c5SAndroid Build Coastguard Worker  if (is_win && !angle_is_winuwp) {
1099*8975f5c5SAndroid Build Coastguard Worker    libs += [
1100*8975f5c5SAndroid Build Coastguard Worker      "gdi32.lib",
1101*8975f5c5SAndroid Build Coastguard Worker      "user32.lib",
1102*8975f5c5SAndroid Build Coastguard Worker    ]
1103*8975f5c5SAndroid Build Coastguard Worker  }
1104*8975f5c5SAndroid Build Coastguard Worker
1105*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_d3d11) {
1106*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/d3d:angle_d3d11_backend" ]
1107*8975f5c5SAndroid Build Coastguard Worker  }
1108*8975f5c5SAndroid Build Coastguard Worker
1109*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_d3d9) {
1110*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/d3d:angle_d3d9_backend" ]
1111*8975f5c5SAndroid Build Coastguard Worker  }
1112*8975f5c5SAndroid Build Coastguard Worker
1113*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_gl) {
1114*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/gl:angle_gl_backend" ]
1115*8975f5c5SAndroid Build Coastguard Worker  }
1116*8975f5c5SAndroid Build Coastguard Worker
1117*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_null) {
1118*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/null:angle_null_backend" ]
1119*8975f5c5SAndroid Build Coastguard Worker  }
1120*8975f5c5SAndroid Build Coastguard Worker
1121*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_wgpu) {
1122*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/wgpu:angle_wgpu_backend" ]
1123*8975f5c5SAndroid Build Coastguard Worker  }
1124*8975f5c5SAndroid Build Coastguard Worker
1125*8975f5c5SAndroid Build Coastguard Worker  if (angle_is_winuwp) {
1126*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/d3d:angle_enable_winuwp" ]
1127*8975f5c5SAndroid Build Coastguard Worker  }
1128*8975f5c5SAndroid Build Coastguard Worker
1129*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_d3d11) {
1130*8975f5c5SAndroid Build Coastguard Worker    libs += [ "dxguid.lib" ]
1131*8975f5c5SAndroid Build Coastguard Worker  }
1132*8975f5c5SAndroid Build Coastguard Worker
1133*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_metal) {
1134*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/metal:angle_metal_backend" ]
1135*8975f5c5SAndroid Build Coastguard Worker  }
1136*8975f5c5SAndroid Build Coastguard Worker
1137*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl_passthrough) {
1138*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/cl:angle_cl_backend" ]
1139*8975f5c5SAndroid Build Coastguard Worker  }
1140*8975f5c5SAndroid Build Coastguard Worker
1141*8975f5c5SAndroid Build Coastguard Worker  # Enable extra Chromium style warnings for libANGLE.
1142*8975f5c5SAndroid Build Coastguard Worker  if (is_clang && angle_has_build && !is_nacl) {
1143*8975f5c5SAndroid Build Coastguard Worker    suppressed_configs -= [ "//build/config/clang:find_bad_constructs" ]
1144*8975f5c5SAndroid Build Coastguard Worker  }
1145*8975f5c5SAndroid Build Coastguard Worker
1146*8975f5c5SAndroid Build Coastguard Worker  if (is_apple) {
1147*8975f5c5SAndroid Build Coastguard Worker    sources += libangle_mac_sources
1148*8975f5c5SAndroid Build Coastguard Worker  }
1149*8975f5c5SAndroid Build Coastguard Worker
1150*8975f5c5SAndroid Build Coastguard Worker  if (is_ios) {
1151*8975f5c5SAndroid Build Coastguard Worker    sources += [ "src/libANGLE/renderer/driver_utils_ios.mm" ]
1152*8975f5c5SAndroid Build Coastguard Worker  }
1153*8975f5c5SAndroid Build Coastguard Worker
1154*8975f5c5SAndroid Build Coastguard Worker  if (is_debug) {
1155*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_GENERATE_SHADER_DEBUG_INFO" ]
1156*8975f5c5SAndroid Build Coastguard Worker  }
1157*8975f5c5SAndroid Build Coastguard Worker
1158*8975f5c5SAndroid Build Coastguard Worker  configs += [ ":debug_annotations_config" ]
1159*8975f5c5SAndroid Build Coastguard Worker  public_configs += [
1160*8975f5c5SAndroid Build Coastguard Worker    ":libANGLE_config",
1161*8975f5c5SAndroid Build Coastguard Worker    ":angle_backend_config",
1162*8975f5c5SAndroid Build Coastguard Worker  ]
1163*8975f5c5SAndroid Build Coastguard Worker
1164*8975f5c5SAndroid Build Coastguard Worker  if (_use_copy_compiler_dll) {
1165*8975f5c5SAndroid Build Coastguard Worker    data_deps = [ ":copy_compiler_dll" ]
1166*8975f5c5SAndroid Build Coastguard Worker  }
1167*8975f5c5SAndroid Build Coastguard Worker}
1168*8975f5c5SAndroid Build Coastguard Worker
1169*8975f5c5SAndroid Build Coastguard Workerconfig("angle_frame_capture_disabled") {
1170*8975f5c5SAndroid Build Coastguard Worker  defines = [ "ANGLE_CAPTURE_ENABLED=0" ]
1171*8975f5c5SAndroid Build Coastguard Worker}
1172*8975f5c5SAndroid Build Coastguard Worker
1173*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_frame_capture_mock") {
1174*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":libANGLE_headers" ]
1175*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":angle_frame_capture_disabled" ]
1176*8975f5c5SAndroid Build Coastguard Worker  sources = [
1177*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils.h",
1178*8975f5c5SAndroid Build Coastguard Worker    "src/common/frame_capture_utils_autogen.h",
1179*8975f5c5SAndroid Build Coastguard Worker    "src/common/gl_enum_utils_autogen.h",
1180*8975f5c5SAndroid Build Coastguard Worker    "src/libANGLE/capture/FrameCapture.h",
1181*8975f5c5SAndroid Build Coastguard Worker    "src/libANGLE/capture/FrameCapture_mock.cpp",
1182*8975f5c5SAndroid Build Coastguard Worker    "src/libANGLE/capture/serialize.h",
1183*8975f5c5SAndroid Build Coastguard Worker    "src/libANGLE/capture/serialize_mock.cpp",
1184*8975f5c5SAndroid Build Coastguard Worker  ]
1185*8975f5c5SAndroid Build Coastguard Worker}
1186*8975f5c5SAndroid Build Coastguard Worker
1187*8975f5c5SAndroid Build Coastguard Workerangle_source_set("angle_gl_enum_utils") {
1188*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":angle_common" ]
1189*8975f5c5SAndroid Build Coastguard Worker  sources = [
1190*8975f5c5SAndroid Build Coastguard Worker    "src/common/gl_enum_utils.cpp",
1191*8975f5c5SAndroid Build Coastguard Worker    "src/common/gl_enum_utils.h",
1192*8975f5c5SAndroid Build Coastguard Worker    "src/common/gl_enum_utils_autogen.cpp",
1193*8975f5c5SAndroid Build Coastguard Worker    "src/common/gl_enum_utils_autogen.h",
1194*8975f5c5SAndroid Build Coastguard Worker  ]
1195*8975f5c5SAndroid Build Coastguard Worker}
1196*8975f5c5SAndroid Build Coastguard Worker
1197*8975f5c5SAndroid Build Coastguard Workerif (angle_use_wayland) {
1198*8975f5c5SAndroid Build Coastguard Worker  config("angle_wayland_config") {
1199*8975f5c5SAndroid Build Coastguard Worker    if ("$wayland_gn_dir" == "") {
1200*8975f5c5SAndroid Build Coastguard Worker      libs = [
1201*8975f5c5SAndroid Build Coastguard Worker        "wayland-client",
1202*8975f5c5SAndroid Build Coastguard Worker        "wayland-egl",
1203*8975f5c5SAndroid Build Coastguard Worker      ]
1204*8975f5c5SAndroid Build Coastguard Worker    }
1205*8975f5c5SAndroid Build Coastguard Worker
1206*8975f5c5SAndroid Build Coastguard Worker    include_dirs = [
1207*8975f5c5SAndroid Build Coastguard Worker      "$wayland_dir/egl",
1208*8975f5c5SAndroid Build Coastguard Worker      "$wayland_dir/src",
1209*8975f5c5SAndroid Build Coastguard Worker    ]
1210*8975f5c5SAndroid Build Coastguard Worker  }
1211*8975f5c5SAndroid Build Coastguard Worker
1212*8975f5c5SAndroid Build Coastguard Worker  group("angle_wayland") {
1213*8975f5c5SAndroid Build Coastguard Worker    public_configs = [ ":angle_wayland_config" ]
1214*8975f5c5SAndroid Build Coastguard Worker
1215*8975f5c5SAndroid Build Coastguard Worker    if ("$wayland_gn_dir" != "") {
1216*8975f5c5SAndroid Build Coastguard Worker      # Use third-party targets
1217*8975f5c5SAndroid Build Coastguard Worker      public_deps = [
1218*8975f5c5SAndroid Build Coastguard Worker        "$wayland_gn_dir:wayland_client",
1219*8975f5c5SAndroid Build Coastguard Worker        "$wayland_gn_dir:wayland_egl",
1220*8975f5c5SAndroid Build Coastguard Worker      ]
1221*8975f5c5SAndroid Build Coastguard Worker    }
1222*8975f5c5SAndroid Build Coastguard Worker  }
1223*8975f5c5SAndroid Build Coastguard Worker}
1224*8975f5c5SAndroid Build Coastguard Worker
1225*8975f5c5SAndroid Build Coastguard Workerif (!defined(angle_abseil_cpp_dir)) {
1226*8975f5c5SAndroid Build Coastguard Worker  angle_abseil_cpp_dir = "//third_party/abseil-cpp"
1227*8975f5c5SAndroid Build Coastguard Worker}
1228*8975f5c5SAndroid Build Coastguard Worker
1229*8975f5c5SAndroid Build Coastguard Workerconfig("angle_abseil_config") {
1230*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_abseil) {
1231*8975f5c5SAndroid Build Coastguard Worker    defines = [ "ANGLE_USE_ABSEIL" ]
1232*8975f5c5SAndroid Build Coastguard Worker
1233*8975f5c5SAndroid Build Coastguard Worker    configs = [
1234*8975f5c5SAndroid Build Coastguard Worker      "$angle_abseil_cpp_dir:absl_define_config",
1235*8975f5c5SAndroid Build Coastguard Worker      "$angle_abseil_cpp_dir:absl_include_config",
1236*8975f5c5SAndroid Build Coastguard Worker    ]
1237*8975f5c5SAndroid Build Coastguard Worker  }
1238*8975f5c5SAndroid Build Coastguard Worker}
1239*8975f5c5SAndroid Build Coastguard Worker
1240*8975f5c5SAndroid Build Coastguard Workergroup("angle_abseil") {
1241*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_abseil) {
1242*8975f5c5SAndroid Build Coastguard Worker    # When build_with_chromium=true we need to include "//third_party/abseil-cpp:absl" while
1243*8975f5c5SAndroid Build Coastguard Worker    # we can be more specific when building standalone non-component ANGLE.
1244*8975f5c5SAndroid Build Coastguard Worker    # Also build the combined target when building Dawn to avoid multiply defined globals.
1245*8975f5c5SAndroid Build Coastguard Worker    if (build_with_chromium || angle_enable_wgpu || is_component_build) {
1246*8975f5c5SAndroid Build Coastguard Worker      public_deps = [ "$angle_abseil_cpp_dir:absl" ]
1247*8975f5c5SAndroid Build Coastguard Worker    } else {
1248*8975f5c5SAndroid Build Coastguard Worker      public_deps = [
1249*8975f5c5SAndroid Build Coastguard Worker        "$angle_abseil_cpp_dir/absl/container:flat_hash_map",
1250*8975f5c5SAndroid Build Coastguard Worker        "$angle_abseil_cpp_dir/absl/container:flat_hash_set",
1251*8975f5c5SAndroid Build Coastguard Worker      ]
1252*8975f5c5SAndroid Build Coastguard Worker    }
1253*8975f5c5SAndroid Build Coastguard Worker
1254*8975f5c5SAndroid Build Coastguard Worker    public_configs = [ ":angle_abseil_config" ]
1255*8975f5c5SAndroid Build Coastguard Worker  }
1256*8975f5c5SAndroid Build Coastguard Worker}
1257*8975f5c5SAndroid Build Coastguard Worker
1258*8975f5c5SAndroid Build Coastguard Workerconfig("angle_compression_config") {
1259*8975f5c5SAndroid Build Coastguard Worker  include_dirs = [ "//third_party/zlib/google" ]
1260*8975f5c5SAndroid Build Coastguard Worker}
1261*8975f5c5SAndroid Build Coastguard Worker
1262*8975f5c5SAndroid Build Coastguard Workergroup("angle_compression") {
1263*8975f5c5SAndroid Build Coastguard Worker  public_configs = [
1264*8975f5c5SAndroid Build Coastguard Worker    ":angle_compression_config",
1265*8975f5c5SAndroid Build Coastguard Worker    "//third_party/zlib:zlib_config",
1266*8975f5c5SAndroid Build Coastguard Worker  ]
1267*8975f5c5SAndroid Build Coastguard Worker  public_deps =
1268*8975f5c5SAndroid Build Coastguard Worker      [ "$angle_zlib_compression_utils_dir:compression_utils_portable" ]
1269*8975f5c5SAndroid Build Coastguard Worker}
1270*8975f5c5SAndroid Build Coastguard Worker
1271*8975f5c5SAndroid Build Coastguard Workerif (angle_has_rapidjson) {
1272*8975f5c5SAndroid Build Coastguard Worker  config("angle_rapidjson_config") {
1273*8975f5c5SAndroid Build Coastguard Worker    defines = [ "ANGLE_HAS_RAPIDJSON" ]
1274*8975f5c5SAndroid Build Coastguard Worker  }
1275*8975f5c5SAndroid Build Coastguard Worker  angle_source_set("angle_json_serializer") {
1276*8975f5c5SAndroid Build Coastguard Worker    public_deps = [
1277*8975f5c5SAndroid Build Coastguard Worker      ":angle_common",
1278*8975f5c5SAndroid Build Coastguard Worker      "$angle_root/third_party/rapidjson",
1279*8975f5c5SAndroid Build Coastguard Worker    ]
1280*8975f5c5SAndroid Build Coastguard Worker    sources = [
1281*8975f5c5SAndroid Build Coastguard Worker      "src/common/serializer/JsonSerializer.cpp",
1282*8975f5c5SAndroid Build Coastguard Worker      "src/common/serializer/JsonSerializer.h",
1283*8975f5c5SAndroid Build Coastguard Worker    ]
1284*8975f5c5SAndroid Build Coastguard Worker    public_configs = [ ":angle_rapidjson_config" ]
1285*8975f5c5SAndroid Build Coastguard Worker  }
1286*8975f5c5SAndroid Build Coastguard Worker}
1287*8975f5c5SAndroid Build Coastguard Worker
1288*8975f5c5SAndroid Build Coastguard Workerassert(angle_has_frame_capture || !angle_with_capture_by_default)
1289*8975f5c5SAndroid Build Coastguard Workerif (angle_has_frame_capture) {
1290*8975f5c5SAndroid Build Coastguard Worker  config("angle_frame_capture_enabled") {
1291*8975f5c5SAndroid Build Coastguard Worker    defines = [ "ANGLE_CAPTURE_ENABLED=1" ]
1292*8975f5c5SAndroid Build Coastguard Worker  }
1293*8975f5c5SAndroid Build Coastguard Worker}
1294*8975f5c5SAndroid Build Coastguard Worker
1295*8975f5c5SAndroid Build Coastguard Workertemplate("libANGLE_template") {
1296*8975f5c5SAndroid Build Coastguard Worker  angle_source_set("${target_name}") {
1297*8975f5c5SAndroid Build Coastguard Worker    public_deps = invoker.public_deps + [ ":libANGLE_no_vulkan" ]
1298*8975f5c5SAndroid Build Coastguard Worker    public_configs = [ ":angle_frame_capture_disabled" ]
1299*8975f5c5SAndroid Build Coastguard Worker
1300*8975f5c5SAndroid Build Coastguard Worker    # gl_enum_utils defaults included in with_capture build
1301*8975f5c5SAndroid Build Coastguard Worker    deps = [ ":angle_frame_capture_mock" ]
1302*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_trace || is_debug) {
1303*8975f5c5SAndroid Build Coastguard Worker      deps += [ ":angle_gl_enum_utils" ]
1304*8975f5c5SAndroid Build Coastguard Worker    }
1305*8975f5c5SAndroid Build Coastguard Worker  }
1306*8975f5c5SAndroid Build Coastguard Worker
1307*8975f5c5SAndroid Build Coastguard Worker  if (angle_has_frame_capture) {
1308*8975f5c5SAndroid Build Coastguard Worker    angle_source_set("${target_name}_with_capture") {
1309*8975f5c5SAndroid Build Coastguard Worker      public_deps = invoker.public_deps + [
1310*8975f5c5SAndroid Build Coastguard Worker                      ":angle_gl_enum_utils",
1311*8975f5c5SAndroid Build Coastguard Worker                      ":libANGLE_no_vulkan",
1312*8975f5c5SAndroid Build Coastguard Worker                    ]
1313*8975f5c5SAndroid Build Coastguard Worker      deps = [
1314*8975f5c5SAndroid Build Coastguard Worker        ":angle_capture_common",
1315*8975f5c5SAndroid Build Coastguard Worker        ":angle_compression",
1316*8975f5c5SAndroid Build Coastguard Worker      ]
1317*8975f5c5SAndroid Build Coastguard Worker      public_configs = [ ":angle_frame_capture_enabled" ]
1318*8975f5c5SAndroid Build Coastguard Worker      sources = libangle_capture_sources
1319*8975f5c5SAndroid Build Coastguard Worker
1320*8975f5c5SAndroid Build Coastguard Worker      if (angle_has_rapidjson) {
1321*8975f5c5SAndroid Build Coastguard Worker        public_deps += [ ":angle_json_serializer" ]
1322*8975f5c5SAndroid Build Coastguard Worker        sources += [ "src/libANGLE/capture/serialize.cpp" ]
1323*8975f5c5SAndroid Build Coastguard Worker      } else {
1324*8975f5c5SAndroid Build Coastguard Worker        sources += [ "src/libANGLE/capture/serialize_mock.cpp" ]
1325*8975f5c5SAndroid Build Coastguard Worker      }
1326*8975f5c5SAndroid Build Coastguard Worker    }
1327*8975f5c5SAndroid Build Coastguard Worker  }
1328*8975f5c5SAndroid Build Coastguard Worker}
1329*8975f5c5SAndroid Build Coastguard Worker
1330*8975f5c5SAndroid Build Coastguard WorkerlibANGLE_template("libANGLE") {
1331*8975f5c5SAndroid Build Coastguard Worker  public_deps = []
1332*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan) {
1333*8975f5c5SAndroid Build Coastguard Worker    public_deps += [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend" ]
1334*8975f5c5SAndroid Build Coastguard Worker  }
1335*8975f5c5SAndroid Build Coastguard Worker}
1336*8975f5c5SAndroid Build Coastguard Worker
1337*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan) {
1338*8975f5c5SAndroid Build Coastguard Worker  libANGLE_template("libANGLE_vulkan_secondaries") {
1339*8975f5c5SAndroid Build Coastguard Worker    public_deps =
1340*8975f5c5SAndroid Build Coastguard Worker        [ "src/libANGLE/renderer/vulkan:angle_vulkan_secondaries_backend" ]
1341*8975f5c5SAndroid Build Coastguard Worker  }
1342*8975f5c5SAndroid Build Coastguard Worker}
1343*8975f5c5SAndroid Build Coastguard Worker
1344*8975f5c5SAndroid Build Coastguard Workerconfig("shared_library_public_config") {
1345*8975f5c5SAndroid Build Coastguard Worker  if (is_mac && !is_component_build) {
1346*8975f5c5SAndroid Build Coastguard Worker    # Executable targets that depend on the shared libraries below need to have
1347*8975f5c5SAndroid Build Coastguard Worker    # the rpath setup in non-component build configurations.
1348*8975f5c5SAndroid Build Coastguard Worker    ldflags = [
1349*8975f5c5SAndroid Build Coastguard Worker      "-rpath",
1350*8975f5c5SAndroid Build Coastguard Worker      "@executable_path/",
1351*8975f5c5SAndroid Build Coastguard Worker    ]
1352*8975f5c5SAndroid Build Coastguard Worker    if (build_with_chromium) {
1353*8975f5c5SAndroid Build Coastguard Worker      ldflags += [
1354*8975f5c5SAndroid Build Coastguard Worker        # Path for loading shared libraries for unbundled binaries.
1355*8975f5c5SAndroid Build Coastguard Worker        # From //build/config/mac/BUILD.gn, this is only added for
1356*8975f5c5SAndroid Build Coastguard Worker        # component builds. However, since ANGLE always dynamically
1357*8975f5c5SAndroid Build Coastguard Worker        # links to libvulkan, it should be re-added for non-component
1358*8975f5c5SAndroid Build Coastguard Worker        # builds. (anglebug.com/42263076)
1359*8975f5c5SAndroid Build Coastguard Worker        "-Wl,-rpath,@loader_path/.",
1360*8975f5c5SAndroid Build Coastguard Worker      ]
1361*8975f5c5SAndroid Build Coastguard Worker    }
1362*8975f5c5SAndroid Build Coastguard Worker  }
1363*8975f5c5SAndroid Build Coastguard Worker
1364*8975f5c5SAndroid Build Coastguard Worker  if (angle_is_winuwp && !angle_is_winappsdk) {
1365*8975f5c5SAndroid Build Coastguard Worker    ldflags = [
1366*8975f5c5SAndroid Build Coastguard Worker      "/APPCONTAINER",
1367*8975f5c5SAndroid Build Coastguard Worker
1368*8975f5c5SAndroid Build Coastguard Worker      # Disable warning about invalid subsystem number.
1369*8975f5c5SAndroid Build Coastguard Worker      # A default appropriate subsystem is selected automatically.
1370*8975f5c5SAndroid Build Coastguard Worker      "/IGNORE:4010",
1371*8975f5c5SAndroid Build Coastguard Worker    ]
1372*8975f5c5SAndroid Build Coastguard Worker  }
1373*8975f5c5SAndroid Build Coastguard Worker}
1374*8975f5c5SAndroid Build Coastguard Worker
1375*8975f5c5SAndroid Build Coastguard Worker_angle_glesv2_library_name = "libGLESv2${angle_libs_suffix}"
1376*8975f5c5SAndroid Build Coastguard Worker_angle_glesv2_vulkan_secondaries_library_name =
1377*8975f5c5SAndroid Build Coastguard Worker    "libGLESv2_vulkan_secondaries${angle_libs_suffix}"
1378*8975f5c5SAndroid Build Coastguard Worker
1379*8975f5c5SAndroid Build Coastguard Workerconfig("library_name_config") {
1380*8975f5c5SAndroid Build Coastguard Worker  _egllib = "libEGL${angle_libs_suffix}"
1381*8975f5c5SAndroid Build Coastguard Worker  _vk2egllib = "libEGL_vulkan_secondaries${angle_libs_suffix}"
1382*8975f5c5SAndroid Build Coastguard Worker  defines = [
1383*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_EGL_LIBRARY_NAME=\"${_egllib}\"",
1384*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_GLESV2_LIBRARY_NAME=\"${_angle_glesv2_library_name}\"",
1385*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_MESA_EGL_LIBRARY_NAME=\"mesa/src/egl/libEGL\"",
1386*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_MESA_GLESV2_LIBRARY_NAME=\"mesa/src/mapi/es2api/libGLESv2\"",
1387*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_VULKAN_SECONDARIES_EGL_LIBRARY_NAME=\"${_vk2egllib}\"",
1388*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_VULKAN_SECONDARIES_GLESV2_LIBRARY_NAME=\"${_angle_glesv2_vulkan_secondaries_library_name}\"",
1389*8975f5c5SAndroid Build Coastguard Worker  ]
1390*8975f5c5SAndroid Build Coastguard Worker}
1391*8975f5c5SAndroid Build Coastguard Worker
1392*8975f5c5SAndroid Build Coastguard Worker# This config controls export definitions on ANGLE API calls.
1393*8975f5c5SAndroid Build Coastguard Workerconfig("angle_static_config") {
1394*8975f5c5SAndroid Build Coastguard Worker  defines = [
1395*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_EXPORT=",
1396*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_STATIC=1",
1397*8975f5c5SAndroid Build Coastguard Worker    "ANGLE_UTIL_EXPORT=",
1398*8975f5c5SAndroid Build Coastguard Worker    "EGLAPI=",
1399*8975f5c5SAndroid Build Coastguard Worker    "GL_APICALL=",
1400*8975f5c5SAndroid Build Coastguard Worker    "GL_API=",
1401*8975f5c5SAndroid Build Coastguard Worker  ]
1402*8975f5c5SAndroid Build Coastguard Worker}
1403*8975f5c5SAndroid Build Coastguard Worker
1404*8975f5c5SAndroid Build Coastguard Workerset_defaults("angle_libGLESv2") {
1405*8975f5c5SAndroid Build Coastguard Worker  sources = []
1406*8975f5c5SAndroid Build Coastguard Worker  output_name = "libGLESv2"
1407*8975f5c5SAndroid Build Coastguard Worker}
1408*8975f5c5SAndroid Build Coastguard Worker
1409*8975f5c5SAndroid Build Coastguard Workertemplate("angle_libGLESv2") {
1410*8975f5c5SAndroid Build Coastguard Worker  angle_shared_library(target_name) {
1411*8975f5c5SAndroid Build Coastguard Worker    sources = invoker.sources + libglesv2_sources
1412*8975f5c5SAndroid Build Coastguard Worker    deps = invoker.deps + [ ":includes" ]
1413*8975f5c5SAndroid Build Coastguard Worker    defines = [ "LIBGLESV2_IMPLEMENTATION" ]
1414*8975f5c5SAndroid Build Coastguard Worker
1415*8975f5c5SAndroid Build Coastguard Worker    output_name = "${invoker.output_name}${angle_libs_suffix}"
1416*8975f5c5SAndroid Build Coastguard Worker    if (angle_glesv2_extension != "") {
1417*8975f5c5SAndroid Build Coastguard Worker      output_extension = angle_glesv2_extension
1418*8975f5c5SAndroid Build Coastguard Worker    }
1419*8975f5c5SAndroid Build Coastguard Worker
1420*8975f5c5SAndroid Build Coastguard Worker    configs += [
1421*8975f5c5SAndroid Build Coastguard Worker      ":angle_gl_visibility_config",
1422*8975f5c5SAndroid Build Coastguard Worker      ":debug_annotations_config",
1423*8975f5c5SAndroid Build Coastguard Worker      ":gl_prototypes",
1424*8975f5c5SAndroid Build Coastguard Worker    ]
1425*8975f5c5SAndroid Build Coastguard Worker
1426*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_cl) {
1427*8975f5c5SAndroid Build Coastguard Worker      sources += libglesv2_cl_sources
1428*8975f5c5SAndroid Build Coastguard Worker    }
1429*8975f5c5SAndroid Build Coastguard Worker
1430*8975f5c5SAndroid Build Coastguard Worker    if (is_win) {
1431*8975f5c5SAndroid Build Coastguard Worker      sources += [ "src/libGLESv2/${invoker.output_name}_autogen.def" ]
1432*8975f5c5SAndroid Build Coastguard Worker      sources += [ "src/libGLESv2/libGLESv2.rc" ]
1433*8975f5c5SAndroid Build Coastguard Worker      deps += [ ":angle_version" ]
1434*8975f5c5SAndroid Build Coastguard Worker    }
1435*8975f5c5SAndroid Build Coastguard Worker  }
1436*8975f5c5SAndroid Build Coastguard Worker}
1437*8975f5c5SAndroid Build Coastguard Worker
1438*8975f5c5SAndroid Build Coastguard Workerangle_libGLESv2("libGLESv2") {
1439*8975f5c5SAndroid Build Coastguard Worker  if (angle_with_capture_by_default) {
1440*8975f5c5SAndroid Build Coastguard Worker    deps = [ ":libANGLE_with_capture" ]
1441*8975f5c5SAndroid Build Coastguard Worker  } else {
1442*8975f5c5SAndroid Build Coastguard Worker    deps = [ ":libANGLE" ]
1443*8975f5c5SAndroid Build Coastguard Worker  }
1444*8975f5c5SAndroid Build Coastguard Worker}
1445*8975f5c5SAndroid Build Coastguard Worker
1446*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan) {
1447*8975f5c5SAndroid Build Coastguard Worker  angle_libGLESv2("libGLESv2_vulkan_secondaries") {
1448*8975f5c5SAndroid Build Coastguard Worker    output_name = "libGLESv2_vulkan_secondaries"
1449*8975f5c5SAndroid Build Coastguard Worker    if (angle_with_capture_by_default) {
1450*8975f5c5SAndroid Build Coastguard Worker      deps = [ ":libANGLE_vulkan_secondaries_with_capture" ]
1451*8975f5c5SAndroid Build Coastguard Worker    } else {
1452*8975f5c5SAndroid Build Coastguard Worker      deps = [ ":libANGLE_vulkan_secondaries" ]
1453*8975f5c5SAndroid Build Coastguard Worker    }
1454*8975f5c5SAndroid Build Coastguard Worker  }
1455*8975f5c5SAndroid Build Coastguard Worker}
1456*8975f5c5SAndroid Build Coastguard Worker
1457*8975f5c5SAndroid Build Coastguard Worker# Output capture lib when `angle_with_capture_by_default` disabled, vice versa.
1458*8975f5c5SAndroid Build Coastguard Workerif (angle_has_frame_capture) {
1459*8975f5c5SAndroid Build Coastguard Worker  angle_libGLESv2("libGLESv2_capture_complement") {
1460*8975f5c5SAndroid Build Coastguard Worker    if (angle_with_capture_by_default) {
1461*8975f5c5SAndroid Build Coastguard Worker      deps = [ ":libANGLE" ]
1462*8975f5c5SAndroid Build Coastguard Worker      output_name += "_no_capture"
1463*8975f5c5SAndroid Build Coastguard Worker    } else {
1464*8975f5c5SAndroid Build Coastguard Worker      deps = [ ":libANGLE_with_capture" ]
1465*8975f5c5SAndroid Build Coastguard Worker      output_name += "_with_capture"
1466*8975f5c5SAndroid Build Coastguard Worker    }
1467*8975f5c5SAndroid Build Coastguard Worker  }
1468*8975f5c5SAndroid Build Coastguard Worker}
1469*8975f5c5SAndroid Build Coastguard Worker
1470*8975f5c5SAndroid Build Coastguard Workerangle_static_library("libGLESv2_static") {
1471*8975f5c5SAndroid Build Coastguard Worker  sources = libglesv2_sources
1472*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_cl) {
1473*8975f5c5SAndroid Build Coastguard Worker    sources += libglesv2_cl_sources
1474*8975f5c5SAndroid Build Coastguard Worker  }
1475*8975f5c5SAndroid Build Coastguard Worker  configs += [ ":debug_annotations_config" ]
1476*8975f5c5SAndroid Build Coastguard Worker
1477*8975f5c5SAndroid Build Coastguard Worker  public_configs += [ ":angle_static_config" ]
1478*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":includes" ]
1479*8975f5c5SAndroid Build Coastguard Worker  public_deps = [ ":libANGLE" ]
1480*8975f5c5SAndroid Build Coastguard Worker}
1481*8975f5c5SAndroid Build Coastguard Worker
1482*8975f5c5SAndroid Build Coastguard Workerangle_shared_library("libGLESv1_CM") {
1483*8975f5c5SAndroid Build Coastguard Worker  sources = libglesv1_cm_sources
1484*8975f5c5SAndroid Build Coastguard Worker  output_name = "libGLESv1_CM${angle_libs_suffix}"
1485*8975f5c5SAndroid Build Coastguard Worker
1486*8975f5c5SAndroid Build Coastguard Worker  configs += [
1487*8975f5c5SAndroid Build Coastguard Worker    ":angle_gl_visibility_config",
1488*8975f5c5SAndroid Build Coastguard Worker    ":debug_annotations_config",
1489*8975f5c5SAndroid Build Coastguard Worker    ":gl_prototypes",
1490*8975f5c5SAndroid Build Coastguard Worker  ]
1491*8975f5c5SAndroid Build Coastguard Worker
1492*8975f5c5SAndroid Build Coastguard Worker  defines = []
1493*8975f5c5SAndroid Build Coastguard Worker
1494*8975f5c5SAndroid Build Coastguard Worker  deps = [
1495*8975f5c5SAndroid Build Coastguard Worker    ":includes",
1496*8975f5c5SAndroid Build Coastguard Worker    ":libGLESv2",
1497*8975f5c5SAndroid Build Coastguard Worker  ]
1498*8975f5c5SAndroid Build Coastguard Worker
1499*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
1500*8975f5c5SAndroid Build Coastguard Worker    sources += [ "src/libGLESv1_CM/libGLESv1_CM.def" ]
1501*8975f5c5SAndroid Build Coastguard Worker    deps += [ ":angle_version" ]
1502*8975f5c5SAndroid Build Coastguard Worker  }
1503*8975f5c5SAndroid Build Coastguard Worker}
1504*8975f5c5SAndroid Build Coastguard Worker
1505*8975f5c5SAndroid Build Coastguard Workerconfig("libEGL_egl_loader_config") {
1506*8975f5c5SAndroid Build Coastguard Worker  defines = [ "ANGLE_USE_EGL_LOADER" ]
1507*8975f5c5SAndroid Build Coastguard Worker}
1508*8975f5c5SAndroid Build Coastguard Worker
1509*8975f5c5SAndroid Build Coastguard Workerangle_source_set("libEGL_egl_loader") {
1510*8975f5c5SAndroid Build Coastguard Worker  sources = [
1511*8975f5c5SAndroid Build Coastguard Worker    "src/libEGL/egl_loader_autogen.cpp",
1512*8975f5c5SAndroid Build Coastguard Worker    "src/libEGL/egl_loader_autogen.h",
1513*8975f5c5SAndroid Build Coastguard Worker  ]
1514*8975f5c5SAndroid Build Coastguard Worker
1515*8975f5c5SAndroid Build Coastguard Worker  public_configs += [
1516*8975f5c5SAndroid Build Coastguard Worker    ":libEGL_egl_loader_config",
1517*8975f5c5SAndroid Build Coastguard Worker    ":gl_prototypes",
1518*8975f5c5SAndroid Build Coastguard Worker  ]
1519*8975f5c5SAndroid Build Coastguard Worker
1520*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":includes" ]
1521*8975f5c5SAndroid Build Coastguard Worker}
1522*8975f5c5SAndroid Build Coastguard Worker
1523*8975f5c5SAndroid Build Coastguard Workerset_defaults("libEGL_template") {
1524*8975f5c5SAndroid Build Coastguard Worker  sources = []
1525*8975f5c5SAndroid Build Coastguard Worker  deps = []
1526*8975f5c5SAndroid Build Coastguard Worker  public_configs = []
1527*8975f5c5SAndroid Build Coastguard Worker}
1528*8975f5c5SAndroid Build Coastguard Worker
1529*8975f5c5SAndroid Build Coastguard Workertemplate("libEGL_template") {
1530*8975f5c5SAndroid Build Coastguard Worker  target(invoker.target_type, target_name) {
1531*8975f5c5SAndroid Build Coastguard Worker    forward_variables_from(invoker, "*")
1532*8975f5c5SAndroid Build Coastguard Worker    sources += libegl_sources
1533*8975f5c5SAndroid Build Coastguard Worker    configs += [
1534*8975f5c5SAndroid Build Coastguard Worker      ":debug_annotations_config",
1535*8975f5c5SAndroid Build Coastguard Worker      ":library_name_config",
1536*8975f5c5SAndroid Build Coastguard Worker    ]
1537*8975f5c5SAndroid Build Coastguard Worker    deps += [ ":includes" ]
1538*8975f5c5SAndroid Build Coastguard Worker  }
1539*8975f5c5SAndroid Build Coastguard Worker}
1540*8975f5c5SAndroid Build Coastguard Worker
1541*8975f5c5SAndroid Build Coastguard Workertemplate("libEGL_shared_template") {
1542*8975f5c5SAndroid Build Coastguard Worker  libEGL_template(target_name) {
1543*8975f5c5SAndroid Build Coastguard Worker    target_type = "angle_shared_library"
1544*8975f5c5SAndroid Build Coastguard Worker    output_name = "${invoker.output_name}${angle_libs_suffix}"
1545*8975f5c5SAndroid Build Coastguard Worker    if (angle_egl_extension != "") {
1546*8975f5c5SAndroid Build Coastguard Worker      output_extension = angle_egl_extension
1547*8975f5c5SAndroid Build Coastguard Worker    }
1548*8975f5c5SAndroid Build Coastguard Worker
1549*8975f5c5SAndroid Build Coastguard Worker    defines = invoker.defines + [ "LIBEGL_IMPLEMENTATION" ]
1550*8975f5c5SAndroid Build Coastguard Worker    if (is_win) {
1551*8975f5c5SAndroid Build Coastguard Worker      defines += [ "EGLAPI=" ]
1552*8975f5c5SAndroid Build Coastguard Worker    } else {
1553*8975f5c5SAndroid Build Coastguard Worker      defines += [ "EGLAPI=__attribute__((visibility(\"default\")))" ]
1554*8975f5c5SAndroid Build Coastguard Worker    }
1555*8975f5c5SAndroid Build Coastguard Worker
1556*8975f5c5SAndroid Build Coastguard Worker    deps = [
1557*8975f5c5SAndroid Build Coastguard Worker      ":angle_common",
1558*8975f5c5SAndroid Build Coastguard Worker      ":libEGL_egl_loader",
1559*8975f5c5SAndroid Build Coastguard Worker    ]
1560*8975f5c5SAndroid Build Coastguard Worker
1561*8975f5c5SAndroid Build Coastguard Worker    sources += invoker.sources
1562*8975f5c5SAndroid Build Coastguard Worker
1563*8975f5c5SAndroid Build Coastguard Worker    if (is_win) {
1564*8975f5c5SAndroid Build Coastguard Worker      sources += [ "src/libEGL/libEGL.rc" ]
1565*8975f5c5SAndroid Build Coastguard Worker      deps += [ ":angle_version" ]
1566*8975f5c5SAndroid Build Coastguard Worker    }
1567*8975f5c5SAndroid Build Coastguard Worker
1568*8975f5c5SAndroid Build Coastguard Worker    data_deps = [ ":${invoker.gles_library}" ]
1569*8975f5c5SAndroid Build Coastguard Worker  }
1570*8975f5c5SAndroid Build Coastguard Worker}
1571*8975f5c5SAndroid Build Coastguard Worker
1572*8975f5c5SAndroid Build Coastguard WorkerlibEGL_shared_template("libEGL") {
1573*8975f5c5SAndroid Build Coastguard Worker  defines = [ "ANGLE_DISPATCH_LIBRARY=\"${_angle_glesv2_library_name}\"" ]
1574*8975f5c5SAndroid Build Coastguard Worker  output_name = "libEGL"
1575*8975f5c5SAndroid Build Coastguard Worker  gles_library = "libGLESv2"
1576*8975f5c5SAndroid Build Coastguard Worker  sources = []
1577*8975f5c5SAndroid Build Coastguard Worker  if (is_win) {
1578*8975f5c5SAndroid Build Coastguard Worker    sources += [ "src/libEGL/libEGL_autogen.def" ]
1579*8975f5c5SAndroid Build Coastguard Worker  }
1580*8975f5c5SAndroid Build Coastguard Worker}
1581*8975f5c5SAndroid Build Coastguard Worker
1582*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_vulkan) {
1583*8975f5c5SAndroid Build Coastguard Worker  libEGL_shared_template("libEGL_vulkan_secondaries") {
1584*8975f5c5SAndroid Build Coastguard Worker    defines = [ "ANGLE_DISPATCH_LIBRARY=\"${_angle_glesv2_vulkan_secondaries_library_name}\"" ]
1585*8975f5c5SAndroid Build Coastguard Worker    output_name = "libEGL_vulkan_secondaries"
1586*8975f5c5SAndroid Build Coastguard Worker    gles_library = "libGLESv2_vulkan_secondaries"
1587*8975f5c5SAndroid Build Coastguard Worker    sources = []
1588*8975f5c5SAndroid Build Coastguard Worker    if (is_win) {
1589*8975f5c5SAndroid Build Coastguard Worker      sources += [ "src/libEGL/libEGL_vulkan_secondaries_autogen.def" ]
1590*8975f5c5SAndroid Build Coastguard Worker    }
1591*8975f5c5SAndroid Build Coastguard Worker  }
1592*8975f5c5SAndroid Build Coastguard Worker}
1593*8975f5c5SAndroid Build Coastguard Worker
1594*8975f5c5SAndroid Build Coastguard WorkerlibEGL_template("libEGL_static") {
1595*8975f5c5SAndroid Build Coastguard Worker  target_type = "angle_static_library"
1596*8975f5c5SAndroid Build Coastguard Worker  public_configs = [ ":angle_static_config" ]
1597*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":libGLESv2_static" ]
1598*8975f5c5SAndroid Build Coastguard Worker}
1599*8975f5c5SAndroid Build Coastguard Worker
1600*8975f5c5SAndroid Build Coastguard Worker# Convenience targets for some of the samples so they can be built
1601*8975f5c5SAndroid Build Coastguard Worker# with Chromium's toolchain.
1602*8975f5c5SAndroid Build Coastguard Workerangle_executable("angle_shader_translator") {
1603*8975f5c5SAndroid Build Coastguard Worker  testonly = true
1604*8975f5c5SAndroid Build Coastguard Worker
1605*8975f5c5SAndroid Build Coastguard Worker  sources = [ "samples/shader_translator/shader_translator.cpp" ]
1606*8975f5c5SAndroid Build Coastguard Worker
1607*8975f5c5SAndroid Build Coastguard Worker  deps = [ ":translator" ]
1608*8975f5c5SAndroid Build Coastguard Worker
1609*8975f5c5SAndroid Build Coastguard Worker  defines = []
1610*8975f5c5SAndroid Build Coastguard Worker
1611*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan) {
1612*8975f5c5SAndroid Build Coastguard Worker    deps += [
1613*8975f5c5SAndroid Build Coastguard Worker      "${angle_spirv_tools_dir}:spvtools_headers",
1614*8975f5c5SAndroid Build Coastguard Worker      "${angle_spirv_tools_dir}:spvtools_val",
1615*8975f5c5SAndroid Build Coastguard Worker    ]
1616*8975f5c5SAndroid Build Coastguard Worker
1617*8975f5c5SAndroid Build Coastguard Worker    defines += [ "ANGLE_ENABLE_VULKAN" ]
1618*8975f5c5SAndroid Build Coastguard Worker  }
1619*8975f5c5SAndroid Build Coastguard Worker}
1620*8975f5c5SAndroid Build Coastguard Worker
1621*8975f5c5SAndroid Build Coastguard Workerif (angle_standalone || build_with_chromium || build_angle_end2end_tests_aosp) {
1622*8975f5c5SAndroid Build Coastguard Worker  config("angle_feature_support_config") {
1623*8975f5c5SAndroid Build Coastguard Worker    include_dirs = [
1624*8975f5c5SAndroid Build Coastguard Worker      "include",
1625*8975f5c5SAndroid Build Coastguard Worker      "src",
1626*8975f5c5SAndroid Build Coastguard Worker    ]
1627*8975f5c5SAndroid Build Coastguard Worker    defines = [ "LIBFEATURE_SUPPORT_IMPLEMENTATION" ]
1628*8975f5c5SAndroid Build Coastguard Worker    if (is_debug) {
1629*8975f5c5SAndroid Build Coastguard Worker      defines += [ "ANGLE_FEATURE_UTIL_LOG_VERBOSE" ]
1630*8975f5c5SAndroid Build Coastguard Worker    }
1631*8975f5c5SAndroid Build Coastguard Worker  }
1632*8975f5c5SAndroid Build Coastguard Worker
1633*8975f5c5SAndroid Build Coastguard Worker  angle_shared_library("libfeature_support") {
1634*8975f5c5SAndroid Build Coastguard Worker    output_name = "libfeature_support${angle_libs_suffix}"
1635*8975f5c5SAndroid Build Coastguard Worker
1636*8975f5c5SAndroid Build Coastguard Worker    if (is_android) {
1637*8975f5c5SAndroid Build Coastguard Worker      libs = [ "log" ]
1638*8975f5c5SAndroid Build Coastguard Worker    }
1639*8975f5c5SAndroid Build Coastguard Worker
1640*8975f5c5SAndroid Build Coastguard Worker    configs += [
1641*8975f5c5SAndroid Build Coastguard Worker      ":angle_feature_support_config",
1642*8975f5c5SAndroid Build Coastguard Worker      "${angle_jsoncpp_dir}:jsoncpp_config",
1643*8975f5c5SAndroid Build Coastguard Worker    ]
1644*8975f5c5SAndroid Build Coastguard Worker
1645*8975f5c5SAndroid Build Coastguard Worker    if (is_apple && !is_component_build) {
1646*8975f5c5SAndroid Build Coastguard Worker      ldflags = [
1647*8975f5c5SAndroid Build Coastguard Worker        "-install_name",
1648*8975f5c5SAndroid Build Coastguard Worker        "@rpath/${target_name}.dylib",
1649*8975f5c5SAndroid Build Coastguard Worker      ]
1650*8975f5c5SAndroid Build Coastguard Worker    }
1651*8975f5c5SAndroid Build Coastguard Worker
1652*8975f5c5SAndroid Build Coastguard Worker    sources = [
1653*8975f5c5SAndroid Build Coastguard Worker      "src/feature_support_util/feature_support_util.cpp",
1654*8975f5c5SAndroid Build Coastguard Worker      "src/feature_support_util/feature_support_util.h",
1655*8975f5c5SAndroid Build Coastguard Worker    ]
1656*8975f5c5SAndroid Build Coastguard Worker
1657*8975f5c5SAndroid Build Coastguard Worker    deps = [
1658*8975f5c5SAndroid Build Coastguard Worker      ":angle_gpu_info_util",
1659*8975f5c5SAndroid Build Coastguard Worker      "${angle_jsoncpp_dir}:jsoncpp",
1660*8975f5c5SAndroid Build Coastguard Worker    ]
1661*8975f5c5SAndroid Build Coastguard Worker  }
1662*8975f5c5SAndroid Build Coastguard Worker}
1663*8975f5c5SAndroid Build Coastguard Worker
1664*8975f5c5SAndroid Build Coastguard Workerif (angle_enable_cgl) {
1665*8975f5c5SAndroid Build Coastguard Worker  config("supports_automatic_graphics_switching") {
1666*8975f5c5SAndroid Build Coastguard Worker    # For discussion about config, inputs, etc, see:
1667*8975f5c5SAndroid Build Coastguard Worker    # https://bugs.chromium.org/p/chromium/issues/detail?id=781858
1668*8975f5c5SAndroid Build Coastguard Worker    _plist_file = "util/osx/supports_automatic_graphics_switching.plist"
1669*8975f5c5SAndroid Build Coastguard Worker    inputs = [ _plist_file ]
1670*8975f5c5SAndroid Build Coastguard Worker    ldflags = [
1671*8975f5c5SAndroid Build Coastguard Worker      "-sectcreate",
1672*8975f5c5SAndroid Build Coastguard Worker      "__TEXT",
1673*8975f5c5SAndroid Build Coastguard Worker      "__info_plist",
1674*8975f5c5SAndroid Build Coastguard Worker      rebase_path(_plist_file, root_build_dir),
1675*8975f5c5SAndroid Build Coastguard Worker    ]
1676*8975f5c5SAndroid Build Coastguard Worker  }
1677*8975f5c5SAndroid Build Coastguard Worker}
1678*8975f5c5SAndroid Build Coastguard Worker
1679*8975f5c5SAndroid Build Coastguard Workerif (is_android && symbol_level != 0 &&
1680*8975f5c5SAndroid Build Coastguard Worker    (angle_standalone || build_with_chromium)) {
1681*8975f5c5SAndroid Build Coastguard Worker  action_foreach("compressed_symbols") {
1682*8975f5c5SAndroid Build Coastguard Worker    sources = []
1683*8975f5c5SAndroid Build Coastguard Worker    foreach(_library, angle_libraries) {
1684*8975f5c5SAndroid Build Coastguard Worker      sources += [ "$root_out_dir/$_library$angle_libs_suffix$shlib_extension" ]
1685*8975f5c5SAndroid Build Coastguard Worker    }
1686*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan_validation_layers) {
1687*8975f5c5SAndroid Build Coastguard Worker      foreach(_layer, vulkan_validation_layers) {
1688*8975f5c5SAndroid Build Coastguard Worker        sources += [ "$root_out_dir/lib$_layer$shlib_extension" ]
1689*8975f5c5SAndroid Build Coastguard Worker      }
1690*8975f5c5SAndroid Build Coastguard Worker    }
1691*8975f5c5SAndroid Build Coastguard Worker
1692*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan_api_dump_layer &&
1693*8975f5c5SAndroid Build Coastguard Worker        current_toolchain == default_toolchain) {
1694*8975f5c5SAndroid Build Coastguard Worker      sources += [ "$root_out_dir/libVkLayer_lunarg_api_dump$shlib_extension" ]
1695*8975f5c5SAndroid Build Coastguard Worker    }
1696*8975f5c5SAndroid Build Coastguard Worker
1697*8975f5c5SAndroid Build Coastguard Worker    script = rebase_path("${root_build_dir}/android/compress_symbols.py",
1698*8975f5c5SAndroid Build Coastguard Worker                         root_build_dir)
1699*8975f5c5SAndroid Build Coastguard Worker
1700*8975f5c5SAndroid Build Coastguard Worker    deps = []
1701*8975f5c5SAndroid Build Coastguard Worker    foreach(_library, angle_libraries) {
1702*8975f5c5SAndroid Build Coastguard Worker      deps += [ ":$_library" ]
1703*8975f5c5SAndroid Build Coastguard Worker    }
1704*8975f5c5SAndroid Build Coastguard Worker
1705*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan_validation_layers) {
1706*8975f5c5SAndroid Build Coastguard Worker      foreach(_layer, vulkan_validation_layers) {
1707*8975f5c5SAndroid Build Coastguard Worker        deps += [ "$angle_vulkan_validation_layers_dir:${_layer}" ]
1708*8975f5c5SAndroid Build Coastguard Worker      }
1709*8975f5c5SAndroid Build Coastguard Worker    }
1710*8975f5c5SAndroid Build Coastguard Worker
1711*8975f5c5SAndroid Build Coastguard Worker    if (angle_enable_vulkan_api_dump_layer &&
1712*8975f5c5SAndroid Build Coastguard Worker        current_toolchain == default_toolchain) {
1713*8975f5c5SAndroid Build Coastguard Worker      deps += [ "$angle_lunarg_vulkantools_dir:VkLayer_lunarg_api_dump" ]
1714*8975f5c5SAndroid Build Coastguard Worker    }
1715*8975f5c5SAndroid Build Coastguard Worker
1716*8975f5c5SAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/lib.compressed/{{source_file_part}}" ]
1717*8975f5c5SAndroid Build Coastguard Worker
1718*8975f5c5SAndroid Build Coastguard Worker    android_nm = "${android_tool_prefix}nm"
1719*8975f5c5SAndroid Build Coastguard Worker    android_strip = "${android_tool_prefix}strip"
1720*8975f5c5SAndroid Build Coastguard Worker
1721*8975f5c5SAndroid Build Coastguard Worker    args = [
1722*8975f5c5SAndroid Build Coastguard Worker      "--objcopy",
1723*8975f5c5SAndroid Build Coastguard Worker      rebase_path(android_objcopy, root_build_dir),
1724*8975f5c5SAndroid Build Coastguard Worker      "--nm",
1725*8975f5c5SAndroid Build Coastguard Worker      rebase_path(android_nm, root_build_dir),
1726*8975f5c5SAndroid Build Coastguard Worker      "--strip",
1727*8975f5c5SAndroid Build Coastguard Worker      rebase_path(android_strip, root_build_dir),
1728*8975f5c5SAndroid Build Coastguard Worker      "--unstrippedsofile",
1729*8975f5c5SAndroid Build Coastguard Worker      "{{source_dir}}/lib.unstripped/{{source_file_part}}",
1730*8975f5c5SAndroid Build Coastguard Worker      "--output",
1731*8975f5c5SAndroid Build Coastguard Worker      "{{source_dir}}/lib.compressed/{{source_file_part}}",
1732*8975f5c5SAndroid Build Coastguard Worker    ]
1733*8975f5c5SAndroid Build Coastguard Worker  }
1734*8975f5c5SAndroid Build Coastguard Worker}
1735*8975f5c5SAndroid Build Coastguard Worker
1736*8975f5c5SAndroid Build Coastguard Workerif ((angle_standalone || build_with_chromium) && is_android &&
1737*8975f5c5SAndroid Build Coastguard Worker    current_toolchain == default_toolchain) {
1738*8975f5c5SAndroid Build Coastguard Worker  apk_version_code = "0"
1739*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_commit_id) {
1740*8975f5c5SAndroid Build Coastguard Worker    apk_version_code =
1741*8975f5c5SAndroid Build Coastguard Worker        exec_script("src/commit_id.py", [ "position" ], "trim string")
1742*8975f5c5SAndroid Build Coastguard Worker  }
1743*8975f5c5SAndroid Build Coastguard Worker
1744*8975f5c5SAndroid Build Coastguard Worker  # Package ANGLE libraries for normal use on Android
1745*8975f5c5SAndroid Build Coastguard Worker  angle_apk("angle_chromium_apk") {
1746*8975f5c5SAndroid Build Coastguard Worker    package_name = "org.chromium.angle"
1747*8975f5c5SAndroid Build Coastguard Worker    apk_name = "AngleLibraries"
1748*8975f5c5SAndroid Build Coastguard Worker    version_name = "ANGLE Developer Build"
1749*8975f5c5SAndroid Build Coastguard Worker    version_code = apk_version_code
1750*8975f5c5SAndroid Build Coastguard Worker  }
1751*8975f5c5SAndroid Build Coastguard Worker
1752*8975f5c5SAndroid Build Coastguard Worker  # Package ANGLE libraries for AGI use on Android
1753*8975f5c5SAndroid Build Coastguard Worker  angle_apk("angle_agi_chromium_apk") {
1754*8975f5c5SAndroid Build Coastguard Worker    package_name = "org.chromium.angle.agi"
1755*8975f5c5SAndroid Build Coastguard Worker    apk_name = "AngleAgiLibraries"
1756*8975f5c5SAndroid Build Coastguard Worker    version_name = "ANGLE AGI Build"
1757*8975f5c5SAndroid Build Coastguard Worker    version_code = apk_version_code
1758*8975f5c5SAndroid Build Coastguard Worker  }
1759*8975f5c5SAndroid Build Coastguard Worker
1760*8975f5c5SAndroid Build Coastguard Worker  group("angle_apks") {
1761*8975f5c5SAndroid Build Coastguard Worker    deps = [
1762*8975f5c5SAndroid Build Coastguard Worker      ":angle_agi_chromium_apk",
1763*8975f5c5SAndroid Build Coastguard Worker      ":angle_chromium_apk",
1764*8975f5c5SAndroid Build Coastguard Worker    ]
1765*8975f5c5SAndroid Build Coastguard Worker  }
1766*8975f5c5SAndroid Build Coastguard Worker}
1767*8975f5c5SAndroid Build Coastguard Worker
1768*8975f5c5SAndroid Build Coastguard Workerif (install_prefix != "") {
1769*8975f5c5SAndroid Build Coastguard Worker  template("install_target") {
1770*8975f5c5SAndroid Build Coastguard Worker    install_deps = []
1771*8975f5c5SAndroid Build Coastguard Worker
1772*8975f5c5SAndroid Build Coastguard Worker    foreach(_lib, invoker.libs) {
1773*8975f5c5SAndroid Build Coastguard Worker      install_deps += [ ":install_${_lib}" ]
1774*8975f5c5SAndroid Build Coastguard Worker
1775*8975f5c5SAndroid Build Coastguard Worker      source = "${root_build_dir}/${_lib}${angle_libs_suffix}${shlib_extension}"
1776*8975f5c5SAndroid Build Coastguard Worker
1777*8975f5c5SAndroid Build Coastguard Worker      action("install_${_lib}") {
1778*8975f5c5SAndroid Build Coastguard Worker        deps = [ ":${_lib}" ]
1779*8975f5c5SAndroid Build Coastguard Worker        script = "scripts/install_target.py"
1780*8975f5c5SAndroid Build Coastguard Worker        sources = [ source ]
1781*8975f5c5SAndroid Build Coastguard Worker
1782*8975f5c5SAndroid Build Coastguard Worker        outputs = [ "${target_gen_dir}/install_${_lib}.stamp" ]
1783*8975f5c5SAndroid Build Coastguard Worker        args = [
1784*8975f5c5SAndroid Build Coastguard Worker          "--name",
1785*8975f5c5SAndroid Build Coastguard Worker          _lib,
1786*8975f5c5SAndroid Build Coastguard Worker          "--prefix",
1787*8975f5c5SAndroid Build Coastguard Worker          "$install_prefix",
1788*8975f5c5SAndroid Build Coastguard Worker          "--libs",
1789*8975f5c5SAndroid Build Coastguard Worker          rebase_path(source),
1790*8975f5c5SAndroid Build Coastguard Worker        ]
1791*8975f5c5SAndroid Build Coastguard Worker      }
1792*8975f5c5SAndroid Build Coastguard Worker    }
1793*8975f5c5SAndroid Build Coastguard Worker
1794*8975f5c5SAndroid Build Coastguard Worker    install_deps += [ ":install_includes" ]
1795*8975f5c5SAndroid Build Coastguard Worker    action("install_includes") {
1796*8975f5c5SAndroid Build Coastguard Worker      script = "scripts/install_target.py"
1797*8975f5c5SAndroid Build Coastguard Worker      configs = invoker.configs
1798*8975f5c5SAndroid Build Coastguard Worker
1799*8975f5c5SAndroid Build Coastguard Worker      outputs = [ "${target_gen_dir}/install_${target_name}.stamp" ]
1800*8975f5c5SAndroid Build Coastguard Worker      args = [
1801*8975f5c5SAndroid Build Coastguard Worker        "--prefix",
1802*8975f5c5SAndroid Build Coastguard Worker        "$install_prefix",
1803*8975f5c5SAndroid Build Coastguard Worker        "{{include_dirs}}",
1804*8975f5c5SAndroid Build Coastguard Worker      ]
1805*8975f5c5SAndroid Build Coastguard Worker    }
1806*8975f5c5SAndroid Build Coastguard Worker
1807*8975f5c5SAndroid Build Coastguard Worker    group("install_${target_name}") {
1808*8975f5c5SAndroid Build Coastguard Worker      deps = install_deps
1809*8975f5c5SAndroid Build Coastguard Worker    }
1810*8975f5c5SAndroid Build Coastguard Worker  }
1811*8975f5c5SAndroid Build Coastguard Worker
1812*8975f5c5SAndroid Build Coastguard Worker  install_target("angle") {
1813*8975f5c5SAndroid Build Coastguard Worker    libs = [
1814*8975f5c5SAndroid Build Coastguard Worker      "libEGL",
1815*8975f5c5SAndroid Build Coastguard Worker      "libGLESv1_CM",
1816*8975f5c5SAndroid Build Coastguard Worker      "libGLESv2",
1817*8975f5c5SAndroid Build Coastguard Worker    ]
1818*8975f5c5SAndroid Build Coastguard Worker    configs = [ ":includes_config" ]
1819*8975f5c5SAndroid Build Coastguard Worker  }
1820*8975f5c5SAndroid Build Coastguard Worker}
1821*8975f5c5SAndroid Build Coastguard Worker
1822*8975f5c5SAndroid Build Coastguard Workergroup("angle") {
1823*8975f5c5SAndroid Build Coastguard Worker  data_deps = [
1824*8975f5c5SAndroid Build Coastguard Worker    ":libEGL",
1825*8975f5c5SAndroid Build Coastguard Worker    ":libGLESv1_CM",
1826*8975f5c5SAndroid Build Coastguard Worker    ":libGLESv2",
1827*8975f5c5SAndroid Build Coastguard Worker  ]
1828*8975f5c5SAndroid Build Coastguard Worker  if (angle_enable_vulkan) {
1829*8975f5c5SAndroid Build Coastguard Worker    data_deps += [
1830*8975f5c5SAndroid Build Coastguard Worker      ":libEGL_vulkan_secondaries",
1831*8975f5c5SAndroid Build Coastguard Worker      ":libGLESv2_vulkan_secondaries",
1832*8975f5c5SAndroid Build Coastguard Worker    ]
1833*8975f5c5SAndroid Build Coastguard Worker  }
1834*8975f5c5SAndroid Build Coastguard Worker  if (is_ios) {
1835*8975f5c5SAndroid Build Coastguard Worker    # Need to bundle the libraries inside the .app.
1836*8975f5c5SAndroid Build Coastguard Worker    deps = data_deps
1837*8975f5c5SAndroid Build Coastguard Worker  }
1838*8975f5c5SAndroid Build Coastguard Worker}
1839*8975f5c5SAndroid Build Coastguard Worker
1840*8975f5c5SAndroid Build Coastguard Workergroup("angle_static") {
1841*8975f5c5SAndroid Build Coastguard Worker  public_deps = [
1842*8975f5c5SAndroid Build Coastguard Worker    ":libEGL_static",
1843*8975f5c5SAndroid Build Coastguard Worker    ":libGLESv2_static",
1844*8975f5c5SAndroid Build Coastguard Worker    ":preprocessor",
1845*8975f5c5SAndroid Build Coastguard Worker    ":translator",
1846*8975f5c5SAndroid Build Coastguard Worker  ]
1847*8975f5c5SAndroid Build Coastguard Worker}
1848