# Copyright 2019 Google LLC. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("../build_overrides/skia.gni") import("platform.gni") if (!defined(is_skia_standalone)) { is_skia_standalone = true } if (!defined(skia_android_serial)) { skia_android_serial = "" } is_skia_dev_build = is_skia_standalone && !is_official_build declare_args() { skia_compile_processors = false skia_enable_api_available_macro = true skia_enable_android_utils = is_skia_dev_build skia_enable_skgpu_v1 = true skia_enable_discrete_gpu = true skia_enable_flutter_defines = false skia_enable_fontmgr_empty = false skia_enable_fontmgr_fuchsia = is_fuchsia skia_enable_fontmgr_win = is_win || is_mingw skia_enable_gpu = true skia_enable_pdf = true skia_enable_skottie = !((is_win || is_mingw) && is_component_build) skia_enable_skrive = true skia_enable_sksl = true skia_enable_skvm_jit_when_possible = is_skia_dev_build skia_enable_svg = !is_component_build skia_enable_tools = is_skia_dev_build skia_enable_gpu_debug_layers = is_skia_dev_build && is_debug skia_disable_vma_stl_shared_mutex = false skia_enable_winuwp = false skia_generate_workarounds = false skia_include_multiframe_procs = false skia_lex = false skia_libgifcodec_path = "third_party/externals/libgifcodec" skia_qt_path = getenv("QT_PATH") skia_skqp_global_error_tolerance = 0 skia_tools_require_resources = false skia_update_fuchsia_sdk = false skia_use_angle = false skia_use_dawn = false skia_use_direct3d = false skia_use_egl = false skia_use_expat = true skia_use_experimental_xform = false skia_use_ffmpeg = false skia_use_fixed_gamma_text = is_android skia_use_fontconfig = is_linux skia_use_fonthost_mac = is_mac || is_ios skia_use_freetype = is_android || is_fuchsia || is_linux skia_use_harfbuzz = true skia_use_gl = !is_fuchsia skia_use_icu = !is_fuchsia skia_use_libheif = is_skia_dev_build skia_use_libjpeg_turbo_decode = true skia_use_libjpeg_turbo_encode = true skia_use_libpng_decode = true skia_use_libpng_encode = true skia_use_libwebp_decode = true skia_use_libwebp_encode = true skia_use_lua = is_skia_dev_build && !is_ios skia_use_metal = false skia_use_ndk_images = is_android && defined(ndk_api) && ndk_api >= 30 skia_use_piex = !(is_win || is_mingw) skia_use_sfml = false skia_use_webgl = false skia_use_wuffs = false skia_use_x11 = is_linux skia_use_xps = true skia_enable_graphite = false skia_use_zlib = true skia_vtune_path = "" if (is_ios) { skia_ios_identity = ".*Google.*" skia_ios_profile = "Google Development" } if (is_mac) { skia_gl_standard = "gl" } else if (is_ios) { skia_gl_standard = "gles" } else { skia_gl_standard = "" } if (is_android) { skia_use_vulkan = defined(ndk_api) && ndk_api >= 24 } else if (is_fuchsia) { skia_use_vulkan = true } else { skia_use_vulkan = false } skia_build_fuzzers = is_clang && is_linux && target_cpu == "x64" skia_use_libfuzzer_defaults = true } declare_args() { skia_pdf_subset_harfbuzz = skia_use_harfbuzz } declare_args() { skia_compile_sksl_tests = skia_compile_processors skia_enable_fontmgr_android = skia_use_expat && skia_use_freetype skia_enable_fontmgr_custom_directory = skia_use_freetype && !is_fuchsia skia_enable_fontmgr_custom_embedded = skia_use_freetype && !is_fuchsia skia_enable_fontmgr_custom_empty = skia_use_freetype skia_enable_fontmgr_fontconfig = skia_use_freetype && skia_use_fontconfig skia_enable_fontmgr_win_gdi = (is_win || is_mingw) && !skia_enable_winuwp skia_enable_fontmgr_FontConfigInterface = skia_use_freetype && skia_use_fontconfig skia_enable_spirv_validation = is_skia_dev_build && is_debug && !skia_use_dawn skia_use_dng_sdk = !is_fuchsia && skia_use_libjpeg_turbo_decode && skia_use_zlib skia_use_libgifcodec = !skia_use_wuffs skia_use_sfntly = skia_use_icu skia_enable_vulkan_debug_layers = skia_enable_gpu_debug_layers skia_enable_direct3d_debug_layer = skia_enable_gpu_debug_layers skia_enable_metal_debug_info = skia_enable_gpu_debug_layers skia_use_vma = skia_use_vulkan } declare_args() { # skia_fontmgr_factory should define SkFontMgr::Factory() if (skia_enable_fontmgr_empty) { skia_fontmgr_factory = ":fontmgr_empty_factory" } else if (is_android && skia_enable_fontmgr_android) { skia_fontmgr_factory = ":fontmgr_android_factory" } else if ((is_win || is_mingw) && skia_enable_fontmgr_win) { skia_fontmgr_factory = ":fontmgr_win_factory" } else if ((is_mac || is_ios) && skia_use_fonthost_mac) { skia_fontmgr_factory = ":fontmgr_mac_ct_factory" } else if (skia_enable_fontmgr_fontconfig) { skia_fontmgr_factory = ":fontmgr_fontconfig_factory" } else if (skia_enable_fontmgr_custom_directory) { skia_fontmgr_factory = ":fontmgr_custom_directory_factory" } else if (skia_enable_fontmgr_custom_embedded) { skia_fontmgr_factory = ":fontmgr_custom_embedded_factory" } else if (skia_enable_fontmgr_custom_empty) { skia_fontmgr_factory = ":fontmgr_custom_empty_factory" } else { #"src/ports/SkFontMgr_FontConfigInterface_factory.cpp" #WontFix #"src/ports/SkFontMgr_win_gdi_factory.cpp" # WontFix skia_fontmgr_factory = ":fontmgr_empty_factory" } } # Our tools require static linking (they use non-exported symbols), and the GPU backend. skia_enable_tools = skia_enable_tools && !is_component_build && skia_enable_gpu # The GPU build requires SkSL skia_enable_sksl = skia_enable_sksl || skia_enable_gpu # Skia's targets may be built inside other gn build systems. # Skia builds other project's build targets inside its build. # This is easier if the built-in target types remain generic. # Place Skia target specific configs in skia_target_default_configs. # These will be applied by the 'skia_*' templates. # In the Skia build these configs apply many warnings as errors. # Other projects may optionally set these configs as they see fit. template("component") { _component_mode = "static_library" if (is_cross_platform_build) { _component_mode = "source_set" } if (is_component_build) { _component_mode = "shared_library" } target(_component_mode, target_name) { forward_variables_from(invoker, "*") } } set_defaults("component") { if (!is_component_build) { configs = [] if (defined(default_compiler_configs)) { configs += default_compiler_configs } if (!is_cross_platform_build) { complete_static_lib = true } } else { configs = default_shared_library_configs } configs += [ "${skia_root_dir}:skia_wno" ] } template("skia_target") { target(invoker._skia_target_type, target_name) { # set_defaults(invoker._skia_target_type) might not exist or set configs if (!defined(configs)) { configs = [] } # Explicit configs instead of set_defaults("skia_target") # Allows template("skia_*") below to avoid the configs dance. if (defined(skia_target_default_configs)) { configs += skia_target_default_configs } # "*" clobbers the current scope; append to existing configs forward_variables_from(invoker, "*", [ "configs" ]) if (defined(invoker.configs)) { configs += invoker.configs } } } template("skia_executable") { skia_target(target_name) { assert(!defined(configs), "No set_defaults(skia_target)") _skia_target_type = "executable" forward_variables_from(invoker, "*") } } template("skia_source_set") { skia_target(target_name) { assert(!defined(configs), "No set_defaults(skia_target)") _skia_target_type = "source_set" forward_variables_from(invoker, "*") } } template("skia_static_library") { skia_target(target_name) { assert(!defined(configs), "No set_defaults(skia_target)") _skia_target_type = "static_library" forward_variables_from(invoker, "*") } } template("skia_shared_library") { skia_target(target_name) { assert(!defined(configs), "No set_defaults(skia_target)") _skia_target_type = "shared_library" forward_variables_from(invoker, "*") } } template("skia_component") { skia_target(target_name) { assert(!defined(configs), "No set_defaults(skia_target)") _skia_target_type = "component" forward_variables_from(invoker, "*") } }