1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2019 Google LLC. 2*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Workerif (!defined(is_skia_standalone)) { 6*c8dee2aaSAndroid Build Coastguard Worker is_skia_standalone = false 7*c8dee2aaSAndroid Build Coastguard Worker} 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Workeris_skia_dev_build = is_skia_standalone && !is_official_build 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 12*c8dee2aaSAndroid Build Coastguard Worker skia_android_serial = "" 13*c8dee2aaSAndroid Build Coastguard Worker skia_compile_modules = false 14*c8dee2aaSAndroid Build Coastguard Worker skia_compile_sksl_tests = false 15*c8dee2aaSAndroid Build Coastguard Worker skia_dwritecore_sdk = "" 16*c8dee2aaSAndroid Build Coastguard Worker skia_enable_api_available_macro = true 17*c8dee2aaSAndroid Build Coastguard Worker skia_enable_android_utils = is_skia_dev_build 18*c8dee2aaSAndroid Build Coastguard Worker skia_enable_discrete_gpu = true 19*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_empty = false 20*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_fuchsia = is_fuchsia 21*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_win = is_win 22*c8dee2aaSAndroid Build Coastguard Worker skia_enable_gpu_debug_layers = is_skia_dev_build && is_debug 23*c8dee2aaSAndroid Build Coastguard Worker skia_enable_optimize_size = false 24*c8dee2aaSAndroid Build Coastguard Worker skia_enable_pdf = !is_wasm 25*c8dee2aaSAndroid Build Coastguard Worker skia_enable_precompile = true 26*c8dee2aaSAndroid Build Coastguard Worker skia_enable_skottie = !is_component_build 27*c8dee2aaSAndroid Build Coastguard Worker skia_enable_svg = !is_component_build 28*c8dee2aaSAndroid Build Coastguard Worker skia_enable_tools = is_skia_dev_build 29*c8dee2aaSAndroid Build Coastguard Worker skia_disable_tracing = is_official_build 30*c8dee2aaSAndroid Build Coastguard Worker skia_enable_vello_shaders = false 31*c8dee2aaSAndroid Build Coastguard Worker skia_disable_vma_stl_shared_mutex = false 32*c8dee2aaSAndroid Build Coastguard Worker skia_enable_winuwp = false 33*c8dee2aaSAndroid Build Coastguard Worker skia_generate_workarounds = false 34*c8dee2aaSAndroid Build Coastguard Worker skia_include_multiframe_procs = false 35*c8dee2aaSAndroid Build Coastguard Worker skia_lex = false 36*c8dee2aaSAndroid Build Coastguard Worker skia_print_sksl_shaders = false 37*c8dee2aaSAndroid Build Coastguard Worker skia_print_native_shaders = false 38*c8dee2aaSAndroid Build Coastguard Worker skia_tools_require_resources = false 39*c8dee2aaSAndroid Build Coastguard Worker skia_update_fuchsia_sdk = false 40*c8dee2aaSAndroid Build Coastguard Worker skia_use_angle = false 41*c8dee2aaSAndroid Build Coastguard Worker skia_use_client_icu = false 42*c8dee2aaSAndroid Build Coastguard Worker skia_use_crabbyavif = false 43*c8dee2aaSAndroid Build Coastguard Worker skia_use_dawn = false 44*c8dee2aaSAndroid Build Coastguard Worker skia_use_direct3d = false 45*c8dee2aaSAndroid Build Coastguard Worker skia_use_egl = false 46*c8dee2aaSAndroid Build Coastguard Worker skia_use_epoxy_egl = false 47*c8dee2aaSAndroid Build Coastguard Worker skia_use_expat = !is_wasm 48*c8dee2aaSAndroid Build Coastguard Worker skia_use_ffmpeg = false 49*c8dee2aaSAndroid Build Coastguard Worker skia_use_fixed_gamma_text = is_android 50*c8dee2aaSAndroid Build Coastguard Worker skia_use_fontconfig = is_linux 51*c8dee2aaSAndroid Build Coastguard Worker skia_use_fontations = false 52*c8dee2aaSAndroid Build Coastguard Worker skia_use_fonthost_mac = is_mac || is_ios 53*c8dee2aaSAndroid Build Coastguard Worker skia_use_freetype = is_android || is_fuchsia || is_linux || is_wasm 54*c8dee2aaSAndroid Build Coastguard Worker skia_use_harfbuzz = true 55*c8dee2aaSAndroid Build Coastguard Worker skia_use_gl = !is_fuchsia 56*c8dee2aaSAndroid Build Coastguard Worker skia_use_icu = !is_fuchsia 57*c8dee2aaSAndroid Build Coastguard Worker skia_use_icu4x = false 58*c8dee2aaSAndroid Build Coastguard Worker skia_use_jpeg_gainmaps = is_skia_dev_build 59*c8dee2aaSAndroid Build Coastguard Worker skia_use_libavif = false 60*c8dee2aaSAndroid Build Coastguard Worker skia_use_libgrapheme = false 61*c8dee2aaSAndroid Build Coastguard Worker skia_use_libheif = is_skia_dev_build 62*c8dee2aaSAndroid Build Coastguard Worker skia_use_libjpeg_turbo_decode = true 63*c8dee2aaSAndroid Build Coastguard Worker skia_use_libjpeg_turbo_encode = true 64*c8dee2aaSAndroid Build Coastguard Worker skia_use_no_jpeg_encode = false 65*c8dee2aaSAndroid Build Coastguard Worker skia_use_libjxl_decode = false 66*c8dee2aaSAndroid Build Coastguard Worker skia_use_libpng_decode = true 67*c8dee2aaSAndroid Build Coastguard Worker skia_use_libpng_encode = true 68*c8dee2aaSAndroid Build Coastguard Worker skia_use_no_png_encode = false 69*c8dee2aaSAndroid Build Coastguard Worker skia_use_libwebp_decode = true 70*c8dee2aaSAndroid Build Coastguard Worker skia_use_libwebp_encode = !is_wasm 71*c8dee2aaSAndroid Build Coastguard Worker skia_use_no_webp_encode = false 72*c8dee2aaSAndroid Build Coastguard Worker skia_use_lua = is_skia_dev_build && !is_ios 73*c8dee2aaSAndroid Build Coastguard Worker skia_use_metal = false 74*c8dee2aaSAndroid Build Coastguard Worker skia_use_ndk_images = is_android && defined(ndk_api) && ndk_api >= 30 75*c8dee2aaSAndroid Build Coastguard Worker skia_use_perfetto = is_linux || is_mac || is_android 76*c8dee2aaSAndroid Build Coastguard Worker 77*c8dee2aaSAndroid Build Coastguard Worker # Currently only supported in Android framework 78*c8dee2aaSAndroid Build Coastguard Worker skia_android_framework_use_perfetto = false 79*c8dee2aaSAndroid Build Coastguard Worker skia_use_piex = !is_win && !is_wasm 80*c8dee2aaSAndroid Build Coastguard Worker skia_use_rust_png_decode = false 81*c8dee2aaSAndroid Build Coastguard Worker skia_use_rust_png_encode = false 82*c8dee2aaSAndroid Build Coastguard Worker skia_use_sfml = false 83*c8dee2aaSAndroid Build Coastguard Worker skia_use_webgl = is_wasm 84*c8dee2aaSAndroid Build Coastguard Worker skia_use_webgpu = is_wasm 85*c8dee2aaSAndroid Build Coastguard Worker skia_use_wuffs = true 86*c8dee2aaSAndroid Build Coastguard Worker skia_use_x11 = is_linux 87*c8dee2aaSAndroid Build Coastguard Worker skia_use_xps = true 88*c8dee2aaSAndroid Build Coastguard Worker 89*c8dee2aaSAndroid Build Coastguard Worker # Use the safe mode for libcxx 90*c8dee2aaSAndroid Build Coastguard Worker # See: https://libcxx.llvm.org/UsingLibcxx.html#enabling-the-safe-libc-mode 91*c8dee2aaSAndroid Build Coastguard Worker skia_use_safe_libcxx = false 92*c8dee2aaSAndroid Build Coastguard Worker 93*c8dee2aaSAndroid Build Coastguard Worker # deprecated, we will eventually use just skia_enable_ganesh 94*c8dee2aaSAndroid Build Coastguard Worker skia_enable_gpu = true 95*c8dee2aaSAndroid Build Coastguard Worker skia_enable_graphite = false 96*c8dee2aaSAndroid Build Coastguard Worker skia_use_zlib = true 97*c8dee2aaSAndroid Build Coastguard Worker 98*c8dee2aaSAndroid Build Coastguard Worker if (is_ios) { 99*c8dee2aaSAndroid Build Coastguard Worker skia_ios_identity = ".*Google.*" 100*c8dee2aaSAndroid Build Coastguard Worker skia_ios_profile = "Google Development" 101*c8dee2aaSAndroid Build Coastguard Worker 102*c8dee2aaSAndroid Build Coastguard Worker # should only code sign when running on a device, not the simulator 103*c8dee2aaSAndroid Build Coastguard Worker skia_ios_use_signing = !ios_use_simulator 104*c8dee2aaSAndroid Build Coastguard Worker } 105*c8dee2aaSAndroid Build Coastguard Worker 106*c8dee2aaSAndroid Build Coastguard Worker skia_build_rust_targets = false 107*c8dee2aaSAndroid Build Coastguard Worker} 108*c8dee2aaSAndroid Build Coastguard Worker 109*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 110*c8dee2aaSAndroid Build Coastguard Worker skia_enable_ganesh = skia_enable_gpu 111*c8dee2aaSAndroid Build Coastguard Worker} 112*c8dee2aaSAndroid Build Coastguard Worker 113*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 114*c8dee2aaSAndroid Build Coastguard Worker # This is now a no-op. TODO(kjlubick) remove after Flutter stops using this. 115*c8dee2aaSAndroid Build Coastguard Worker skia_enable_sksl_tracing = false 116*c8dee2aaSAndroid Build Coastguard Worker} 117*c8dee2aaSAndroid Build Coastguard Worker 118*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 119*c8dee2aaSAndroid Build Coastguard Worker if (is_mac) { 120*c8dee2aaSAndroid Build Coastguard Worker skia_gl_standard = "gl" 121*c8dee2aaSAndroid Build Coastguard Worker } else if (is_ios) { 122*c8dee2aaSAndroid Build Coastguard Worker skia_gl_standard = "gles" 123*c8dee2aaSAndroid Build Coastguard Worker } else if (is_wasm && skia_enable_ganesh) { 124*c8dee2aaSAndroid Build Coastguard Worker skia_gl_standard = "webgl" 125*c8dee2aaSAndroid Build Coastguard Worker } else { 126*c8dee2aaSAndroid Build Coastguard Worker skia_gl_standard = "" 127*c8dee2aaSAndroid Build Coastguard Worker } 128*c8dee2aaSAndroid Build Coastguard Worker 129*c8dee2aaSAndroid Build Coastguard Worker if (is_fuchsia) { 130*c8dee2aaSAndroid Build Coastguard Worker skia_use_vulkan = true 131*c8dee2aaSAndroid Build Coastguard Worker } else { 132*c8dee2aaSAndroid Build Coastguard Worker skia_use_vulkan = false 133*c8dee2aaSAndroid Build Coastguard Worker } 134*c8dee2aaSAndroid Build Coastguard Worker 135*c8dee2aaSAndroid Build Coastguard Worker skia_build_fuzzers = is_clang && is_linux && target_cpu == "x64" 136*c8dee2aaSAndroid Build Coastguard Worker skia_use_libfuzzer_defaults = true 137*c8dee2aaSAndroid Build Coastguard Worker} 138*c8dee2aaSAndroid Build Coastguard Worker 139*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 140*c8dee2aaSAndroid Build Coastguard Worker skia_enable_skunicode = skia_use_icu || skia_use_client_icu || 141*c8dee2aaSAndroid Build Coastguard Worker skia_use_libgrapheme || skia_use_icu4x 142*c8dee2aaSAndroid Build Coastguard Worker} 143*c8dee2aaSAndroid Build Coastguard Worker 144*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_angle && skia_gl_standard != "gles") { 145*c8dee2aaSAndroid Build Coastguard Worker skia_gl_standard = "" 146*c8dee2aaSAndroid Build Coastguard Worker} 147*c8dee2aaSAndroid Build Coastguard Worker 148*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 149*c8dee2aaSAndroid Build Coastguard Worker skia_pdf_subset_harfbuzz = skia_use_harfbuzz 150*c8dee2aaSAndroid Build Coastguard Worker} 151*c8dee2aaSAndroid Build Coastguard Worker 152*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 153*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_android = skia_use_expat && skia_use_freetype 154*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_android_ndk = is_android && skia_use_freetype 155*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_custom_directory = 156*c8dee2aaSAndroid Build Coastguard Worker skia_use_freetype && !is_fuchsia && !is_wasm 157*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_custom_embedded = skia_use_freetype && !is_fuchsia 158*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_custom_empty = skia_use_freetype && !is_wasm 159*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_fontconfig = skia_use_freetype && skia_use_fontconfig 160*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_win_gdi = is_win && !skia_enable_winuwp 161*c8dee2aaSAndroid Build Coastguard Worker skia_enable_fontmgr_FontConfigInterface = 162*c8dee2aaSAndroid Build Coastguard Worker skia_use_freetype && skia_use_fontconfig 163*c8dee2aaSAndroid Build Coastguard Worker skia_enable_spirv_validation = is_skia_dev_build && is_debug && !skia_use_dawn 164*c8dee2aaSAndroid Build Coastguard Worker skia_use_dng_sdk = 165*c8dee2aaSAndroid Build Coastguard Worker !is_fuchsia && !is_wasm && skia_use_libjpeg_turbo_decode && skia_use_zlib 166*c8dee2aaSAndroid Build Coastguard Worker skia_enable_vulkan_debug_layers = skia_enable_gpu_debug_layers 167*c8dee2aaSAndroid Build Coastguard Worker skia_enable_direct3d_debug_layer = skia_enable_gpu_debug_layers 168*c8dee2aaSAndroid Build Coastguard Worker skia_enable_metal_debug_info = skia_enable_gpu_debug_layers 169*c8dee2aaSAndroid Build Coastguard Worker skia_use_vma = skia_use_vulkan 170*c8dee2aaSAndroid Build Coastguard Worker skia_vulkan_memory_allocator_dir = 171*c8dee2aaSAndroid Build Coastguard Worker "//third_party/externals/vulkanmemoryallocator" 172*c8dee2aaSAndroid Build Coastguard Worker skia_build_for_debugger = false 173*c8dee2aaSAndroid Build Coastguard Worker 174*c8dee2aaSAndroid Build Coastguard Worker # icu_bidi sources 175*c8dee2aaSAndroid Build Coastguard Worker skia_icu_bidi_third_party_dir = "//third_party/icu_bidi" 176*c8dee2aaSAndroid Build Coastguard Worker 177*c8dee2aaSAndroid Build Coastguard Worker # libgrapheme sources 178*c8dee2aaSAndroid Build Coastguard Worker skia_libgrapheme_third_party_dir = "//third_party/libgrapheme" 179*c8dee2aaSAndroid Build Coastguard Worker} 180*c8dee2aaSAndroid Build Coastguard Worker 181*c8dee2aaSAndroid Build Coastguard Workerassert(!skia_use_dawn || skia_enable_graphite) # Dawn is Graphite-only 182*c8dee2aaSAndroid Build Coastguard Worker 183*c8dee2aaSAndroid Build Coastguard Worker# Our tools require static linking (they use non-exported symbols), and the Ganesh backend. 184*c8dee2aaSAndroid Build Coastguard Workerskia_enable_tools = 185*c8dee2aaSAndroid Build Coastguard Worker skia_enable_tools && !is_component_build && skia_enable_ganesh 186*c8dee2aaSAndroid Build Coastguard Worker 187*c8dee2aaSAndroid Build Coastguard Workerif (skia_enable_optimize_size) { 188*c8dee2aaSAndroid Build Coastguard Worker assert( 189*c8dee2aaSAndroid Build Coastguard Worker !is_debug, 190*c8dee2aaSAndroid Build Coastguard Worker "Must set is_debug to false for skia_enable_optimize_size to do anything. If you want to build with debug mode and the correct define, add extra_cflags=['-DSK_ENABLE_OPTIMIZE_SIZE'] to your GN args.") 191*c8dee2aaSAndroid Build Coastguard Worker} 192*c8dee2aaSAndroid Build Coastguard Worker 193*c8dee2aaSAndroid Build Coastguard Worker# Current Perfetto integrations are mutually exclusive 194*c8dee2aaSAndroid Build Coastguard Workerassert(!skia_use_perfetto || !skia_android_framework_use_perfetto) 195*c8dee2aaSAndroid Build Coastguard Worker 196*c8dee2aaSAndroid Build Coastguard Worker# Skia's targets may be built inside other gn build systems. 197*c8dee2aaSAndroid Build Coastguard Worker# Skia builds other project's build targets inside its build. 198*c8dee2aaSAndroid Build Coastguard Worker# This is easier if the built-in target types remain generic. 199*c8dee2aaSAndroid Build Coastguard Worker# Place Skia target specific configs in skia_target_default_configs. 200*c8dee2aaSAndroid Build Coastguard Worker# These will be applied by the 'skia_*' templates. 201*c8dee2aaSAndroid Build Coastguard Worker# In the Skia build these configs apply many warnings as errors. 202*c8dee2aaSAndroid Build Coastguard Worker# Other projects may optionally set these configs as they see fit. 203*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_target") { 204*c8dee2aaSAndroid Build Coastguard Worker target(invoker._skia_target_type, target_name) { 205*c8dee2aaSAndroid Build Coastguard Worker # set_defaults(invoker._skia_target_type) might not exist or set configs 206*c8dee2aaSAndroid Build Coastguard Worker if (!defined(configs)) { 207*c8dee2aaSAndroid Build Coastguard Worker configs = [] 208*c8dee2aaSAndroid Build Coastguard Worker } 209*c8dee2aaSAndroid Build Coastguard Worker 210*c8dee2aaSAndroid Build Coastguard Worker # Explicit configs instead of set_defaults("skia_target") 211*c8dee2aaSAndroid Build Coastguard Worker # Allows template("skia_*") below to avoid the configs dance. 212*c8dee2aaSAndroid Build Coastguard Worker if (defined(skia_target_default_configs)) { 213*c8dee2aaSAndroid Build Coastguard Worker configs += skia_target_default_configs 214*c8dee2aaSAndroid Build Coastguard Worker } 215*c8dee2aaSAndroid Build Coastguard Worker 216*c8dee2aaSAndroid Build Coastguard Worker # "*" clobbers the current scope; append to existing configs 217*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*", [ "configs" ]) 218*c8dee2aaSAndroid Build Coastguard Worker if (defined(invoker.configs)) { 219*c8dee2aaSAndroid Build Coastguard Worker configs += invoker.configs 220*c8dee2aaSAndroid Build Coastguard Worker } 221*c8dee2aaSAndroid Build Coastguard Worker } 222*c8dee2aaSAndroid Build Coastguard Worker} 223*c8dee2aaSAndroid Build Coastguard Worker 224*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_executable") { 225*c8dee2aaSAndroid Build Coastguard Worker skia_target(target_name) { 226*c8dee2aaSAndroid Build Coastguard Worker assert(!defined(configs), "No set_defaults(skia_target)") 227*c8dee2aaSAndroid Build Coastguard Worker _skia_target_type = "executable" 228*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 229*c8dee2aaSAndroid Build Coastguard Worker } 230*c8dee2aaSAndroid Build Coastguard Worker} 231*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_source_set") { 232*c8dee2aaSAndroid Build Coastguard Worker skia_target(target_name) { 233*c8dee2aaSAndroid Build Coastguard Worker assert(!defined(configs), "No set_defaults(skia_target)") 234*c8dee2aaSAndroid Build Coastguard Worker _skia_target_type = "source_set" 235*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 236*c8dee2aaSAndroid Build Coastguard Worker } 237*c8dee2aaSAndroid Build Coastguard Worker} 238*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_static_library") { 239*c8dee2aaSAndroid Build Coastguard Worker skia_target(target_name) { 240*c8dee2aaSAndroid Build Coastguard Worker assert(!defined(configs), "No set_defaults(skia_target)") 241*c8dee2aaSAndroid Build Coastguard Worker _skia_target_type = "static_library" 242*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 243*c8dee2aaSAndroid Build Coastguard Worker } 244*c8dee2aaSAndroid Build Coastguard Worker} 245*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_shared_library") { 246*c8dee2aaSAndroid Build Coastguard Worker skia_target(target_name) { 247*c8dee2aaSAndroid Build Coastguard Worker assert(!defined(configs), "No set_defaults(skia_target)") 248*c8dee2aaSAndroid Build Coastguard Worker _skia_target_type = "shared_library" 249*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 250*c8dee2aaSAndroid Build Coastguard Worker } 251*c8dee2aaSAndroid Build Coastguard Worker} 252*c8dee2aaSAndroid Build Coastguard Workertemplate("skia_component") { 253*c8dee2aaSAndroid Build Coastguard Worker skia_target(target_name) { 254*c8dee2aaSAndroid Build Coastguard Worker assert(!defined(configs), "No set_defaults(skia_target)") 255*c8dee2aaSAndroid Build Coastguard Worker _skia_target_type = "component" 256*c8dee2aaSAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 257*c8dee2aaSAndroid Build Coastguard Worker } 258*c8dee2aaSAndroid Build Coastguard Worker} 259