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