xref: /aosp_15_r20/external/skia/BUILD.gn (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2016 Google Inc.
2*c8dee2aaSAndroid Build Coastguard Worker#
3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workerimport("gn/codec.gni")
7*c8dee2aaSAndroid Build Coastguard Workerimport("gn/fuchsia_defines.gni")
8*c8dee2aaSAndroid Build Coastguard Workerimport("gn/shared_sources.gni")
9*c8dee2aaSAndroid Build Coastguard Workerimport("gn/skia.gni")
10*c8dee2aaSAndroid Build Coastguard Workerimport("gn/toolchain/wasm.gni")
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerif (is_fuchsia) {
13*c8dee2aaSAndroid Build Coastguard Worker  import("//build/fuchsia/sdk.gni")
14*c8dee2aaSAndroid Build Coastguard Worker  import("build/fuchsia/fuchsia_download_sdk.gni")
15*c8dee2aaSAndroid Build Coastguard Worker}
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_dawn) {
18*c8dee2aaSAndroid Build Coastguard Worker  import("//third_party/externals/dawn/scripts/dawn_features.gni")
19*c8dee2aaSAndroid Build Coastguard Worker}
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard Workerif (defined(skia_settings)) {
22*c8dee2aaSAndroid Build Coastguard Worker  import(skia_settings)
23*c8dee2aaSAndroid Build Coastguard Worker}
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Workerimport("gn/ios.gni")
26*c8dee2aaSAndroid Build Coastguard Worker
27*c8dee2aaSAndroid Build Coastguard Worker# Skia public API, generally provided by :skia.
28*c8dee2aaSAndroid Build Coastguard Workerconfig("skia_public") {
29*c8dee2aaSAndroid Build Coastguard Worker  include_dirs = [ "." ]
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard Worker  defines = [
32*c8dee2aaSAndroid Build Coastguard Worker    "SK_CODEC_DECODES_BMP",
33*c8dee2aaSAndroid Build Coastguard Worker    "SK_CODEC_DECODES_WBMP",
34*c8dee2aaSAndroid Build Coastguard Worker  ]
35*c8dee2aaSAndroid Build Coastguard Worker  cflags_objcc = []
36*c8dee2aaSAndroid Build Coastguard Worker  if (is_component_build) {
37*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SKIA_DLL" ]
38*c8dee2aaSAndroid Build Coastguard Worker  }
39*c8dee2aaSAndroid Build Coastguard Worker  if (is_fuchsia || is_linux) {
40*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_R32_SHIFT=16" ]
41*c8dee2aaSAndroid Build Coastguard Worker  }
42*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_optimize_size) {
43*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ENABLE_OPTIMIZE_SIZE" ]
44*c8dee2aaSAndroid Build Coastguard Worker  }
45*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_precompile) {
46*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ENABLE_PRECOMPILE" ]
47*c8dee2aaSAndroid Build Coastguard Worker  }
48*c8dee2aaSAndroid Build Coastguard Worker  if (is_fuchsia) {
49*c8dee2aaSAndroid Build Coastguard Worker    defines += fuchsia_defines
50*c8dee2aaSAndroid Build Coastguard Worker  }
51*c8dee2aaSAndroid Build Coastguard Worker  if (is_wasm) {
52*c8dee2aaSAndroid Build Coastguard Worker    defines += wasm_defines
53*c8dee2aaSAndroid Build Coastguard Worker  }
54*c8dee2aaSAndroid Build Coastguard Worker  if (skia_gl_standard == "gles") {
55*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ASSUME_GL_ES=1" ]
56*c8dee2aaSAndroid Build Coastguard Worker  } else if (skia_gl_standard == "gl") {
57*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ASSUME_GL=1" ]
58*c8dee2aaSAndroid Build Coastguard Worker  } else if (skia_gl_standard == "webgl") {
59*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ASSUME_WEBGL=1" ]
60*c8dee2aaSAndroid Build Coastguard Worker  }
61*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_ganesh) {
62*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_GANESH" ]
63*c8dee2aaSAndroid Build Coastguard Worker  }
64*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_graphite) {
65*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_GRAPHITE" ]
66*c8dee2aaSAndroid Build Coastguard Worker  }
67*c8dee2aaSAndroid Build Coastguard Worker  if (skia_disable_tracing) {
68*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_DISABLE_TRACING" ]
69*c8dee2aaSAndroid Build Coastguard Worker  }
70*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_perfetto) {
71*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_USE_PERFETTO" ]
72*c8dee2aaSAndroid Build Coastguard Worker  }
73*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_safe_libcxx) {
74*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "_LIBCPP_ENABLE_ASSERTIONS=1" ]
75*c8dee2aaSAndroid Build Coastguard Worker  }
76*c8dee2aaSAndroid Build Coastguard Worker
77*c8dee2aaSAndroid Build Coastguard Worker  # Some older versions of the Clang toolchain change the visibility of
78*c8dee2aaSAndroid Build Coastguard Worker  # symbols decorated with API_AVAILABLE macro to be visible. Users of such
79*c8dee2aaSAndroid Build Coastguard Worker  # toolchains suppress the use of this macro till toolchain updates are made.
80*c8dee2aaSAndroid Build Coastguard Worker  if (is_mac || is_ios) {
81*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_api_available_macro) {
82*c8dee2aaSAndroid Build Coastguard Worker      defines += [ "SK_ENABLE_API_AVAILABLE" ]
83*c8dee2aaSAndroid Build Coastguard Worker    } else {
84*c8dee2aaSAndroid Build Coastguard Worker      cflags_objcc += [ "-Wno-unguarded-availability" ]
85*c8dee2aaSAndroid Build Coastguard Worker    }
86*c8dee2aaSAndroid Build Coastguard Worker  }
87*c8dee2aaSAndroid Build Coastguard Worker}
88*c8dee2aaSAndroid Build Coastguard Worker
89*c8dee2aaSAndroid Build Coastguard Worker# Skia internal APIs, used by Skia itself and a few test tools.
90*c8dee2aaSAndroid Build Coastguard Workerconfig("skia_private") {
91*c8dee2aaSAndroid Build Coastguard Worker  visibility = [ "./*" ]
92*c8dee2aaSAndroid Build Coastguard Worker
93*c8dee2aaSAndroid Build Coastguard Worker  defines = [ "SK_GAMMA_APPLY_TO_A8" ]
94*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_fixed_gamma_text) {
95*c8dee2aaSAndroid Build Coastguard Worker    defines += [
96*c8dee2aaSAndroid Build Coastguard Worker      "SK_GAMMA_EXPONENT=1.4",
97*c8dee2aaSAndroid Build Coastguard Worker      "SK_GAMMA_CONTRAST=0.0",
98*c8dee2aaSAndroid Build Coastguard Worker    ]
99*c8dee2aaSAndroid Build Coastguard Worker  }
100*c8dee2aaSAndroid Build Coastguard Worker  if (is_skia_dev_build && !is_wasm) {
101*c8dee2aaSAndroid Build Coastguard Worker    defines += [
102*c8dee2aaSAndroid Build Coastguard Worker      "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1",
103*c8dee2aaSAndroid Build Coastguard Worker      "GPU_TEST_UTILS=1",
104*c8dee2aaSAndroid Build Coastguard Worker    ]
105*c8dee2aaSAndroid Build Coastguard Worker  }
106*c8dee2aaSAndroid Build Coastguard Worker  libs = []
107*c8dee2aaSAndroid Build Coastguard Worker  lib_dirs = []
108*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_gl && skia_use_angle) {
109*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ANGLE" ]
110*c8dee2aaSAndroid Build Coastguard Worker  }
111*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vma) {
112*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_USE_VMA" ]
113*c8dee2aaSAndroid Build Coastguard Worker  }
114*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_winuwp) {
115*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_WINUWP" ]
116*c8dee2aaSAndroid Build Coastguard Worker  }
117*c8dee2aaSAndroid Build Coastguard Worker  if (skia_print_sksl_shaders) {
118*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_PRINT_SKSL_SHADERS" ]
119*c8dee2aaSAndroid Build Coastguard Worker  }
120*c8dee2aaSAndroid Build Coastguard Worker  if (skia_print_native_shaders) {
121*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_PRINT_NATIVE_SHADERS" ]
122*c8dee2aaSAndroid Build Coastguard Worker  }
123*c8dee2aaSAndroid Build Coastguard Worker
124*c8dee2aaSAndroid Build Coastguard Worker  # Temporary staging flag:
125*c8dee2aaSAndroid Build Coastguard Worker  defines += [ "SK_ENABLE_AVX512_OPTS" ]
126*c8dee2aaSAndroid Build Coastguard Worker}
127*c8dee2aaSAndroid Build Coastguard Worker
128*c8dee2aaSAndroid Build Coastguard Worker# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
129*c8dee2aaSAndroid Build Coastguard Workerconfig("skia_library") {
130*c8dee2aaSAndroid Build Coastguard Worker  visibility = [ "./*" ]
131*c8dee2aaSAndroid Build Coastguard Worker  defines = [ "SKIA_IMPLEMENTATION=1" ]
132*c8dee2aaSAndroid Build Coastguard Worker}
133*c8dee2aaSAndroid Build Coastguard Worker
134*c8dee2aaSAndroid Build Coastguard Workerskia_library_configs = [
135*c8dee2aaSAndroid Build Coastguard Worker  ":skia_public",
136*c8dee2aaSAndroid Build Coastguard Worker  ":skia_private",
137*c8dee2aaSAndroid Build Coastguard Worker  ":skia_library",
138*c8dee2aaSAndroid Build Coastguard Worker]
139*c8dee2aaSAndroid Build Coastguard Worker
140*c8dee2aaSAndroid Build Coastguard Worker# Use for CPU-specific Skia code that needs particular compiler flags.
141*c8dee2aaSAndroid Build Coastguard Workertemplate("opts") {
142*c8dee2aaSAndroid Build Coastguard Worker  if (invoker.enabled) {
143*c8dee2aaSAndroid Build Coastguard Worker    skia_source_set(target_name) {
144*c8dee2aaSAndroid Build Coastguard Worker      visibility = [ ":*" ]
145*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
146*c8dee2aaSAndroid Build Coastguard Worker      configs = skia_library_configs
147*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker, "*")
148*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.configs)) {
149*c8dee2aaSAndroid Build Coastguard Worker        configs += invoker.configs
150*c8dee2aaSAndroid Build Coastguard Worker      }
151*c8dee2aaSAndroid Build Coastguard Worker    }
152*c8dee2aaSAndroid Build Coastguard Worker  } else {
153*c8dee2aaSAndroid Build Coastguard Worker    # If not enabled, a phony empty target that swallows all otherwise unused variables.
154*c8dee2aaSAndroid Build Coastguard Worker    skia_source_set(target_name) {
155*c8dee2aaSAndroid Build Coastguard Worker      visibility = [ ":*" ]
156*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
157*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker,
158*c8dee2aaSAndroid Build Coastguard Worker                             "*",
159*c8dee2aaSAndroid Build Coastguard Worker                             [
160*c8dee2aaSAndroid Build Coastguard Worker                               "sources",
161*c8dee2aaSAndroid Build Coastguard Worker                               "cflags",
162*c8dee2aaSAndroid Build Coastguard Worker                             ])
163*c8dee2aaSAndroid Build Coastguard Worker    }
164*c8dee2aaSAndroid Build Coastguard Worker  }
165*c8dee2aaSAndroid Build Coastguard Worker}
166*c8dee2aaSAndroid Build Coastguard Worker
167*c8dee2aaSAndroid Build Coastguard Workeris_x86 = current_cpu == "x64" || current_cpu == "x86"
168*c8dee2aaSAndroid Build Coastguard Workeris_loong64 = current_cpu == "loong64"
169*c8dee2aaSAndroid Build Coastguard Worker
170*c8dee2aaSAndroid Build Coastguard Workeropts("hsw") {
171*c8dee2aaSAndroid Build Coastguard Worker  enabled = is_x86
172*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_opts.hsw_sources
173*c8dee2aaSAndroid Build Coastguard Worker  if (is_win) {
174*c8dee2aaSAndroid Build Coastguard Worker    cflags = [ "/arch:AVX2" ]
175*c8dee2aaSAndroid Build Coastguard Worker  } else {
176*c8dee2aaSAndroid Build Coastguard Worker    cflags = [ "-march=haswell" ]
177*c8dee2aaSAndroid Build Coastguard Worker  }
178*c8dee2aaSAndroid Build Coastguard Worker}
179*c8dee2aaSAndroid Build Coastguard Worker
180*c8dee2aaSAndroid Build Coastguard Workeropts("skx") {
181*c8dee2aaSAndroid Build Coastguard Worker  enabled = is_x86
182*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_opts.skx_sources
183*c8dee2aaSAndroid Build Coastguard Worker  if (is_win) {
184*c8dee2aaSAndroid Build Coastguard Worker    cflags = [ "/arch:AVX512" ]
185*c8dee2aaSAndroid Build Coastguard Worker  } else {
186*c8dee2aaSAndroid Build Coastguard Worker    cflags = [ "-march=skylake-avx512" ]
187*c8dee2aaSAndroid Build Coastguard Worker  }
188*c8dee2aaSAndroid Build Coastguard Worker}
189*c8dee2aaSAndroid Build Coastguard Worker
190*c8dee2aaSAndroid Build Coastguard Workeropts("lasx") {
191*c8dee2aaSAndroid Build Coastguard Worker  enabled = is_loong64
192*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_opts.lasx_sources
193*c8dee2aaSAndroid Build Coastguard Worker  cflags = [ "-mlasx" ]
194*c8dee2aaSAndroid Build Coastguard Worker}
195*c8dee2aaSAndroid Build Coastguard Worker
196*c8dee2aaSAndroid Build Coastguard Worker# Any feature of Skia that requires third-party code should be optional and use this template.
197*c8dee2aaSAndroid Build Coastguard Workertemplate("optional") {
198*c8dee2aaSAndroid Build Coastguard Worker  if (invoker.enabled) {
199*c8dee2aaSAndroid Build Coastguard Worker    config(target_name + "_public") {
200*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.public_defines)) {
201*c8dee2aaSAndroid Build Coastguard Worker        defines = invoker.public_defines
202*c8dee2aaSAndroid Build Coastguard Worker      }
203*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.public_configs)) {
204*c8dee2aaSAndroid Build Coastguard Worker        configs = invoker.public_configs
205*c8dee2aaSAndroid Build Coastguard Worker      }
206*c8dee2aaSAndroid Build Coastguard Worker    }
207*c8dee2aaSAndroid Build Coastguard Worker    skia_source_set(target_name) {
208*c8dee2aaSAndroid Build Coastguard Worker      visibility = [ ":*" ]
209*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
210*c8dee2aaSAndroid Build Coastguard Worker      configs = skia_library_configs
211*c8dee2aaSAndroid Build Coastguard Worker
212*c8dee2aaSAndroid Build Coastguard Worker      # "*" clobbers the current scope; append to existing configs
213*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker,
214*c8dee2aaSAndroid Build Coastguard Worker                             "*",
215*c8dee2aaSAndroid Build Coastguard Worker                             [
216*c8dee2aaSAndroid Build Coastguard Worker                               "configs",
217*c8dee2aaSAndroid Build Coastguard Worker                               "public_defines",
218*c8dee2aaSAndroid Build Coastguard Worker                               "sources_for_tests",
219*c8dee2aaSAndroid Build Coastguard Worker                               "sources_when_disabled",
220*c8dee2aaSAndroid Build Coastguard Worker                             ])
221*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.configs)) {
222*c8dee2aaSAndroid Build Coastguard Worker        configs += invoker.configs
223*c8dee2aaSAndroid Build Coastguard Worker      }
224*c8dee2aaSAndroid Build Coastguard Worker      all_dependent_configs = [ ":" + target_name + "_public" ]
225*c8dee2aaSAndroid Build Coastguard Worker    }
226*c8dee2aaSAndroid Build Coastguard Worker    if (defined(invoker.sources_for_tests) && skia_enable_tools) {
227*c8dee2aaSAndroid Build Coastguard Worker      skia_source_set(target_name + "_tests") {
228*c8dee2aaSAndroid Build Coastguard Worker        visibility = [ ":*" ]
229*c8dee2aaSAndroid Build Coastguard Worker        check_includes = false
230*c8dee2aaSAndroid Build Coastguard Worker        configs = skia_library_configs
231*c8dee2aaSAndroid Build Coastguard Worker
232*c8dee2aaSAndroid Build Coastguard Worker        # "*" clobbers the current scope; append to existing configs
233*c8dee2aaSAndroid Build Coastguard Worker        forward_variables_from(invoker,
234*c8dee2aaSAndroid Build Coastguard Worker                               "*",
235*c8dee2aaSAndroid Build Coastguard Worker                               [
236*c8dee2aaSAndroid Build Coastguard Worker                                 "configs",
237*c8dee2aaSAndroid Build Coastguard Worker                                 "public_defines",
238*c8dee2aaSAndroid Build Coastguard Worker                                 "sources",
239*c8dee2aaSAndroid Build Coastguard Worker                                 "sources_for_tests",
240*c8dee2aaSAndroid Build Coastguard Worker                                 "sources_when_disabled",
241*c8dee2aaSAndroid Build Coastguard Worker                               ])
242*c8dee2aaSAndroid Build Coastguard Worker        if (defined(invoker.configs)) {
243*c8dee2aaSAndroid Build Coastguard Worker          configs += invoker.configs
244*c8dee2aaSAndroid Build Coastguard Worker        }
245*c8dee2aaSAndroid Build Coastguard Worker        testonly = true
246*c8dee2aaSAndroid Build Coastguard Worker        sources = invoker.sources_for_tests
247*c8dee2aaSAndroid Build Coastguard Worker        if (!defined(deps)) {
248*c8dee2aaSAndroid Build Coastguard Worker          deps = []
249*c8dee2aaSAndroid Build Coastguard Worker        }
250*c8dee2aaSAndroid Build Coastguard Worker        deps += [
251*c8dee2aaSAndroid Build Coastguard Worker          ":test",
252*c8dee2aaSAndroid Build Coastguard Worker          ":" + target_name,
253*c8dee2aaSAndroid Build Coastguard Worker        ]
254*c8dee2aaSAndroid Build Coastguard Worker        all_dependent_configs = [ ":" + target_name + "_public" ]
255*c8dee2aaSAndroid Build Coastguard Worker      }
256*c8dee2aaSAndroid Build Coastguard Worker    }
257*c8dee2aaSAndroid Build Coastguard Worker  } else {
258*c8dee2aaSAndroid Build Coastguard Worker    skia_source_set(target_name) {
259*c8dee2aaSAndroid Build Coastguard Worker      visibility = [ ":*" ]
260*c8dee2aaSAndroid Build Coastguard Worker      configs = skia_library_configs
261*c8dee2aaSAndroid Build Coastguard Worker
262*c8dee2aaSAndroid Build Coastguard Worker      # "*" clobbers the current scope; append to existing configs
263*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker,
264*c8dee2aaSAndroid Build Coastguard Worker                             "*",
265*c8dee2aaSAndroid Build Coastguard Worker                             [
266*c8dee2aaSAndroid Build Coastguard Worker                               "configs",
267*c8dee2aaSAndroid Build Coastguard Worker                               "public",
268*c8dee2aaSAndroid Build Coastguard Worker                               "public_defines",
269*c8dee2aaSAndroid Build Coastguard Worker                               "public_deps",
270*c8dee2aaSAndroid Build Coastguard Worker                               "deps",
271*c8dee2aaSAndroid Build Coastguard Worker                               "libs",
272*c8dee2aaSAndroid Build Coastguard Worker                               "frameworks",
273*c8dee2aaSAndroid Build Coastguard Worker                               "sources",
274*c8dee2aaSAndroid Build Coastguard Worker                               "sources_for_tests",
275*c8dee2aaSAndroid Build Coastguard Worker                               "sources_when_disabled",
276*c8dee2aaSAndroid Build Coastguard Worker                             ])
277*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.configs)) {
278*c8dee2aaSAndroid Build Coastguard Worker        configs += invoker.configs
279*c8dee2aaSAndroid Build Coastguard Worker      }
280*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.sources_when_disabled)) {
281*c8dee2aaSAndroid Build Coastguard Worker        sources = invoker.sources_when_disabled
282*c8dee2aaSAndroid Build Coastguard Worker      }
283*c8dee2aaSAndroid Build Coastguard Worker    }
284*c8dee2aaSAndroid Build Coastguard Worker    if (defined(invoker.sources_for_tests)) {
285*c8dee2aaSAndroid Build Coastguard Worker      skia_source_set(target_name + "_tests") {
286*c8dee2aaSAndroid Build Coastguard Worker        visibility = [ ":*" ]
287*c8dee2aaSAndroid Build Coastguard Worker      }
288*c8dee2aaSAndroid Build Coastguard Worker    }
289*c8dee2aaSAndroid Build Coastguard Worker  }
290*c8dee2aaSAndroid Build Coastguard Worker}
291*c8dee2aaSAndroid Build Coastguard Worker
292*c8dee2aaSAndroid Build Coastguard Workeroptional("android_utils") {
293*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_android_utils
294*c8dee2aaSAndroid Build Coastguard Worker
295*c8dee2aaSAndroid Build Coastguard Worker  public = [
296*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android/BRDAllocator.h",
297*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android/BitmapRegionDecoder.h",
298*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android/FrontBufferedStream.h",
299*c8dee2aaSAndroid Build Coastguard Worker  ]
300*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_ENABLE_ANDROID_UTILS" ]
301*c8dee2aaSAndroid Build Coastguard Worker  sources = [
302*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android/BitmapRegionDecoder.cpp",
303*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android/FrontBufferedStream.cpp",
304*c8dee2aaSAndroid Build Coastguard Worker  ]
305*c8dee2aaSAndroid Build Coastguard Worker}
306*c8dee2aaSAndroid Build Coastguard Worker
307*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_android") {
308*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_android
309*c8dee2aaSAndroid Build Coastguard Worker
310*c8dee2aaSAndroid Build Coastguard Worker  deps = [
311*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
312*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_proxy",
313*c8dee2aaSAndroid Build Coastguard Worker    "//third_party/expat",
314*c8dee2aaSAndroid Build Coastguard Worker  ]
315*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_ANDROID_AVAILABLE" ]
316*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_android_public
317*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_android_sources
318*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/FontMgrAndroidParserTest.cpp" ]
319*c8dee2aaSAndroid Build Coastguard Worker}
320*c8dee2aaSAndroid Build Coastguard Worker
321*c8dee2aaSAndroid Build Coastguard Worker# if building Skia for API >= 30 and not using custom fonts, enable
322*c8dee2aaSAndroid Build Coastguard Worker# skia_enable_fontmgr_android_ndk and disable skia_enable_fontmgr_android
323*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_android_ndk") {
324*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_android_ndk
325*c8dee2aaSAndroid Build Coastguard Worker
326*c8dee2aaSAndroid Build Coastguard Worker  deps = [ ":typeface_freetype" ]
327*c8dee2aaSAndroid Build Coastguard Worker  libs = [ "android" ]
328*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_ANDROID_NDK_AVAILABLE" ]
329*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_android_ndk_public
330*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_android_ndk_sources
331*c8dee2aaSAndroid Build Coastguard Worker}
332*c8dee2aaSAndroid Build Coastguard Worker
333*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_custom") {
334*c8dee2aaSAndroid Build Coastguard Worker  enabled =
335*c8dee2aaSAndroid Build Coastguard Worker      skia_enable_fontmgr_custom_directory ||
336*c8dee2aaSAndroid Build Coastguard Worker      skia_enable_fontmgr_custom_embedded || skia_enable_fontmgr_custom_empty
337*c8dee2aaSAndroid Build Coastguard Worker
338*c8dee2aaSAndroid Build Coastguard Worker  deps = [ ":typeface_freetype" ]
339*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_custom_sources
340*c8dee2aaSAndroid Build Coastguard Worker}
341*c8dee2aaSAndroid Build Coastguard Worker
342*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_custom_directory") {
343*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_custom_directory
344*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FREETYPE_DIRECTORY_AVAILABLE" ]
345*c8dee2aaSAndroid Build Coastguard Worker  deps = [
346*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom",
347*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
348*c8dee2aaSAndroid Build Coastguard Worker  ]
349*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_directory_public
350*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_directory_sources
351*c8dee2aaSAndroid Build Coastguard Worker}
352*c8dee2aaSAndroid Build Coastguard Worker
353*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_custom_embedded") {
354*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_custom_embedded
355*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FREETYPE_EMBEDDED_AVAILABLE" ]
356*c8dee2aaSAndroid Build Coastguard Worker  deps = [
357*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom",
358*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
359*c8dee2aaSAndroid Build Coastguard Worker  ]
360*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_embedded_public
361*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_embedded_sources
362*c8dee2aaSAndroid Build Coastguard Worker}
363*c8dee2aaSAndroid Build Coastguard Worker
364*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_custom_empty") {
365*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_custom_empty
366*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FREETYPE_EMPTY_AVAILABLE" ]
367*c8dee2aaSAndroid Build Coastguard Worker  deps = [
368*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom",
369*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
370*c8dee2aaSAndroid Build Coastguard Worker  ]
371*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_empty_public
372*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_empty_sources
373*c8dee2aaSAndroid Build Coastguard Worker}
374*c8dee2aaSAndroid Build Coastguard Worker
375*c8dee2aaSAndroid Build Coastguard Workerskia_source_set("typeface_proxy") {
376*c8dee2aaSAndroid Build Coastguard Worker  configs = [ ":skia_public" ]
377*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_typeface_proxy_sources
378*c8dee2aaSAndroid Build Coastguard Worker}
379*c8dee2aaSAndroid Build Coastguard Worker
380*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_fontconfig") {
381*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_fontconfig
382*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FONTCONFIG_AVAILABLE" ]
383*c8dee2aaSAndroid Build Coastguard Worker
384*c8dee2aaSAndroid Build Coastguard Worker  # The public header includes fontconfig.h and uses FcConfig*
385*c8dee2aaSAndroid Build Coastguard Worker  public_deps = [ "//third_party:fontconfig" ]
386*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_fontconfig_public
387*c8dee2aaSAndroid Build Coastguard Worker  deps = [
388*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
389*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_proxy",
390*c8dee2aaSAndroid Build Coastguard Worker  ]
391*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_fontconfig_sources
392*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/FontMgrFontConfigTest.cpp" ]
393*c8dee2aaSAndroid Build Coastguard Worker}
394*c8dee2aaSAndroid Build Coastguard Worker
395*c8dee2aaSAndroid Build Coastguard Workerskia_source_set("fontscanner_tests") {
396*c8dee2aaSAndroid Build Coastguard Worker  testonly = true
397*c8dee2aaSAndroid Build Coastguard Worker
398*c8dee2aaSAndroid Build Coastguard Worker  deps = [ ":skia" ]
399*c8dee2aaSAndroid Build Coastguard Worker  sources = [
400*c8dee2aaSAndroid Build Coastguard Worker    "tests/FontScanner.cpp",
401*c8dee2aaSAndroid Build Coastguard Worker    "tests/FontScanner.h",
402*c8dee2aaSAndroid Build Coastguard Worker  ]
403*c8dee2aaSAndroid Build Coastguard Worker}
404*c8dee2aaSAndroid Build Coastguard Worker
405*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_FontConfigInterface") {
406*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_FontConfigInterface
407*c8dee2aaSAndroid Build Coastguard Worker
408*c8dee2aaSAndroid Build Coastguard Worker  deps = [
409*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_freetype",
410*c8dee2aaSAndroid Build Coastguard Worker    "//third_party:fontconfig",
411*c8dee2aaSAndroid Build Coastguard Worker  ]
412*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fci_public
413*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fci_sources
414*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/FCITest.cpp" ]
415*c8dee2aaSAndroid Build Coastguard Worker}
416*c8dee2aaSAndroid Build Coastguard Worker
417*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_fontations_empty") {
418*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_fontations
419*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FONTATIONS_AVAILABLE" ]
420*c8dee2aaSAndroid Build Coastguard Worker
421*c8dee2aaSAndroid Build Coastguard Worker  deps = [ ":typeface_fontations" ]
422*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_fontations_public
423*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_fontations_sources
424*c8dee2aaSAndroid Build Coastguard Worker}
425*c8dee2aaSAndroid Build Coastguard Worker
426*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_fuchsia") {
427*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_fuchsia
428*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_FUCHSIA_AVAILABLE" ]
429*c8dee2aaSAndroid Build Coastguard Worker  deps = []
430*c8dee2aaSAndroid Build Coastguard Worker
431*c8dee2aaSAndroid Build Coastguard Worker  if (is_fuchsia && using_fuchsia_sdk) {
432*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//build/fuchsia/fidl:fuchsia.fonts" ]
433*c8dee2aaSAndroid Build Coastguard Worker  } else {
434*c8dee2aaSAndroid Build Coastguard Worker    deps = [ "//sdk/fidl/fuchsia.fonts" ]
435*c8dee2aaSAndroid Build Coastguard Worker  }
436*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_fuchsia_public
437*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_fuchsia_sources
438*c8dee2aaSAndroid Build Coastguard Worker}
439*c8dee2aaSAndroid Build Coastguard Worker
440*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_mac_ct") {
441*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_fonthost_mac
442*c8dee2aaSAndroid Build Coastguard Worker
443*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [
444*c8dee2aaSAndroid Build Coastguard Worker    "SK_TYPEFACE_FACTORY_CORETEXT",
445*c8dee2aaSAndroid Build Coastguard Worker    "SK_FONTMGR_CORETEXT_AVAILABLE",
446*c8dee2aaSAndroid Build Coastguard Worker  ]
447*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_fontmgr_coretext_public
448*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fontmgr_coretext_sources
449*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/TypefaceMacTest.cpp" ]
450*c8dee2aaSAndroid Build Coastguard Worker
451*c8dee2aaSAndroid Build Coastguard Worker  if (is_mac) {
452*c8dee2aaSAndroid Build Coastguard Worker    frameworks = [
453*c8dee2aaSAndroid Build Coastguard Worker      # AppKit symbols NSFontWeightXXX may be dlsym'ed.
454*c8dee2aaSAndroid Build Coastguard Worker      "AppKit.framework",
455*c8dee2aaSAndroid Build Coastguard Worker      "ApplicationServices.framework",
456*c8dee2aaSAndroid Build Coastguard Worker    ]
457*c8dee2aaSAndroid Build Coastguard Worker  }
458*c8dee2aaSAndroid Build Coastguard Worker
459*c8dee2aaSAndroid Build Coastguard Worker  if (is_ios) {
460*c8dee2aaSAndroid Build Coastguard Worker    frameworks = [
461*c8dee2aaSAndroid Build Coastguard Worker      "CoreFoundation.framework",
462*c8dee2aaSAndroid Build Coastguard Worker      "CoreGraphics.framework",
463*c8dee2aaSAndroid Build Coastguard Worker      "CoreText.framework",
464*c8dee2aaSAndroid Build Coastguard Worker
465*c8dee2aaSAndroid Build Coastguard Worker      # UIKit symbols UIFontWeightXXX may be dlsym'ed.
466*c8dee2aaSAndroid Build Coastguard Worker      "UIKit.framework",
467*c8dee2aaSAndroid Build Coastguard Worker    ]
468*c8dee2aaSAndroid Build Coastguard Worker  }
469*c8dee2aaSAndroid Build Coastguard Worker}
470*c8dee2aaSAndroid Build Coastguard Worker
471*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_win") {
472*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_win
473*c8dee2aaSAndroid Build Coastguard Worker
474*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [
475*c8dee2aaSAndroid Build Coastguard Worker    "SK_TYPEFACE_FACTORY_DIRECTWRITE",
476*c8dee2aaSAndroid Build Coastguard Worker    "SK_FONTMGR_DIRECTWRITE_AVAILABLE",
477*c8dee2aaSAndroid Build Coastguard Worker  ]
478*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_windows_fonts_public
479*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_windows_fonts_sources
480*c8dee2aaSAndroid Build Coastguard Worker  if (skia_dwritecore_sdk != "") {
481*c8dee2aaSAndroid Build Coastguard Worker    defines = [ "DWRITE_CORE" ]
482*c8dee2aaSAndroid Build Coastguard Worker    if (is_win && is_clang) {
483*c8dee2aaSAndroid Build Coastguard Worker      # Clang complains about these headers, so mark them as system. These
484*c8dee2aaSAndroid Build Coastguard Worker      # headers are hiding SDK headers of the same name, which are also
485*c8dee2aaSAndroid Build Coastguard Worker      # included as system headers, so these need to go first in the cflags
486*c8dee2aaSAndroid Build Coastguard Worker      # "includes" before the SDK. gn appends configs in the order listed,
487*c8dee2aaSAndroid Build Coastguard Worker      # so these flags will be first.
488*c8dee2aaSAndroid Build Coastguard Worker      cflags = [
489*c8dee2aaSAndroid Build Coastguard Worker        "-imsvc",
490*c8dee2aaSAndroid Build Coastguard Worker        "${skia_dwritecore_sdk}/include",
491*c8dee2aaSAndroid Build Coastguard Worker      ]
492*c8dee2aaSAndroid Build Coastguard Worker    } else {
493*c8dee2aaSAndroid Build Coastguard Worker      include_dirs = [ "${skia_dwritecore_sdk}/include" ]
494*c8dee2aaSAndroid Build Coastguard Worker    }
495*c8dee2aaSAndroid Build Coastguard Worker  }
496*c8dee2aaSAndroid Build Coastguard Worker}
497*c8dee2aaSAndroid Build Coastguard Worker
498*c8dee2aaSAndroid Build Coastguard Workeroptional("fontmgr_win_gdi") {
499*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_fontmgr_win_gdi
500*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_FONTMGR_GDI_AVAILABLE" ]
501*c8dee2aaSAndroid Build Coastguard Worker  public = skia_ports_windows_fonts_public
502*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_fonthost_win_sources
503*c8dee2aaSAndroid Build Coastguard Worker  libs = [ "Gdi32.lib" ]
504*c8dee2aaSAndroid Build Coastguard Worker}
505*c8dee2aaSAndroid Build Coastguard Worker
506*c8dee2aaSAndroid Build Coastguard Workerif (skia_lex) {
507*c8dee2aaSAndroid Build Coastguard Worker  skia_executable("sksllex") {
508*c8dee2aaSAndroid Build Coastguard Worker    sources = [
509*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/DFA.h",
510*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/DFAState.h",
511*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/LexUtil.h",
512*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/Main.cpp",
513*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/NFA.cpp",
514*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/NFA.h",
515*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/NFAState.h",
516*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/NFAtoDFA.h",
517*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/RegexNode.cpp",
518*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/RegexNode.h",
519*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/RegexParser.cpp",
520*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/RegexParser.h",
521*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/TransitionTable.cpp",
522*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/lex/TransitionTable.h",
523*c8dee2aaSAndroid Build Coastguard Worker    ]
524*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "." ]
525*c8dee2aaSAndroid Build Coastguard Worker  }
526*c8dee2aaSAndroid Build Coastguard Worker
527*c8dee2aaSAndroid Build Coastguard Worker  action("run_sksllex") {
528*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/run_sksllex.py"
529*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":sksllex(//gn/toolchain:$host_toolchain)" ]
530*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "src/sksl/lex/sksl.lex" ]
531*c8dee2aaSAndroid Build Coastguard Worker
532*c8dee2aaSAndroid Build Coastguard Worker    # GN insists its outputs should go somewhere underneath target_out_dir, so we trick it with a
533*c8dee2aaSAndroid Build Coastguard Worker    # path that starts with target_out_dir and then uses ".." to back up into the src dir.
534*c8dee2aaSAndroid Build Coastguard Worker    outputs = [
535*c8dee2aaSAndroid Build Coastguard Worker      "$target_out_dir/" + rebase_path("src/sksl/SkSLLexer.h", target_out_dir),
536*c8dee2aaSAndroid Build Coastguard Worker      # the script also modifies the corresponding .cpp file, but if we tell GN that it gets
537*c8dee2aaSAndroid Build Coastguard Worker      # confused due to the same file being named by two different paths
538*c8dee2aaSAndroid Build Coastguard Worker    ]
539*c8dee2aaSAndroid Build Coastguard Worker    sksllex_path = "$root_out_dir/"
540*c8dee2aaSAndroid Build Coastguard Worker    sksllex_path += "sksllex"
541*c8dee2aaSAndroid Build Coastguard Worker    if (host_os == "win") {
542*c8dee2aaSAndroid Build Coastguard Worker      sksllex_path += ".exe"
543*c8dee2aaSAndroid Build Coastguard Worker    }
544*c8dee2aaSAndroid Build Coastguard Worker    args = [
545*c8dee2aaSAndroid Build Coastguard Worker      rebase_path(sksllex_path),
546*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("bin/clang-format"),
547*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("bin/fetch-clang-format"),
548*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("src"),
549*c8dee2aaSAndroid Build Coastguard Worker    ]
550*c8dee2aaSAndroid Build Coastguard Worker  }
551*c8dee2aaSAndroid Build Coastguard Worker} else {
552*c8dee2aaSAndroid Build Coastguard Worker  group("run_sksllex") {
553*c8dee2aaSAndroid Build Coastguard Worker  }
554*c8dee2aaSAndroid Build Coastguard Worker}
555*c8dee2aaSAndroid Build Coastguard Worker
556*c8dee2aaSAndroid Build Coastguard Workerif (skia_compile_modules || skia_compile_sksl_tests) {
557*c8dee2aaSAndroid Build Coastguard Worker  # Copy the module source files into the same directory as skslc.
558*c8dee2aaSAndroid Build Coastguard Worker  copy("sksl_modules") {
559*c8dee2aaSAndroid Build Coastguard Worker    sources = [
560*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_compute.sksl",
561*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_frag.sksl",
562*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_gpu.sksl",
563*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_graphite_frag.sksl",
564*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_graphite_frag_es2.sksl",
565*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_graphite_vert.sksl",
566*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_graphite_vert_es2.sksl",
567*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_public.sksl",
568*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_rt_shader.sksl",
569*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_shared.sksl",
570*c8dee2aaSAndroid Build Coastguard Worker      "src/sksl/sksl_vert.sksl",
571*c8dee2aaSAndroid Build Coastguard Worker    ]
572*c8dee2aaSAndroid Build Coastguard Worker    skslc_dir = "$root_out_dir/"
573*c8dee2aaSAndroid Build Coastguard Worker    if (host_toolchain != default_toolchain_name) {
574*c8dee2aaSAndroid Build Coastguard Worker      skslc_dir += "$host_toolchain/"
575*c8dee2aaSAndroid Build Coastguard Worker    }
576*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ "$skslc_dir/{{source_file_part}}" ]
577*c8dee2aaSAndroid Build Coastguard Worker  }
578*c8dee2aaSAndroid Build Coastguard Worker}
579*c8dee2aaSAndroid Build Coastguard Worker
580*c8dee2aaSAndroid Build Coastguard Workerif (skia_compile_modules) {
581*c8dee2aaSAndroid Build Coastguard Worker  # Generate the sksl-minify binary.
582*c8dee2aaSAndroid Build Coastguard Worker  skia_executable("sksl-minify") {
583*c8dee2aaSAndroid Build Coastguard Worker    defines = [
584*c8dee2aaSAndroid Build Coastguard Worker      "SKSL_STANDALONE",
585*c8dee2aaSAndroid Build Coastguard Worker      "SK_DISABLE_TRACING",
586*c8dee2aaSAndroid Build Coastguard Worker    ]
587*c8dee2aaSAndroid Build Coastguard Worker    sources = skslc_deps
588*c8dee2aaSAndroid Build Coastguard Worker    sources += [
589*c8dee2aaSAndroid Build Coastguard Worker      "tools/sksl-minify/SkSLMinify.cpp",
590*c8dee2aaSAndroid Build Coastguard Worker      "tools/skslc/ProcessWorklist.cpp",
591*c8dee2aaSAndroid Build Coastguard Worker      "tools/skslc/ProcessWorklist.h",
592*c8dee2aaSAndroid Build Coastguard Worker    ]
593*c8dee2aaSAndroid Build Coastguard Worker    libs = []
594*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
595*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_win.cpp" ]
596*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac || is_ios) {
597*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_mac.cpp" ]
598*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux || is_android) {
599*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_linux.cpp" ]
600*c8dee2aaSAndroid Build Coastguard Worker    }
601*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
602*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_ports_windows_sources
603*c8dee2aaSAndroid Build Coastguard Worker    } else {
604*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/ports/SkOSFile_posix.cpp" ]
605*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "dl" ]
606*c8dee2aaSAndroid Build Coastguard Worker    }
607*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_core_sources
608*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_codegen_sources
609*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "." ]
610*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":run_sksllex" ]
611*c8dee2aaSAndroid Build Coastguard Worker  }
612*c8dee2aaSAndroid Build Coastguard Worker
613*c8dee2aaSAndroid Build Coastguard Worker  sksl_minify_path = "$root_out_dir/"
614*c8dee2aaSAndroid Build Coastguard Worker  if (host_toolchain != default_toolchain_name) {
615*c8dee2aaSAndroid Build Coastguard Worker    sksl_minify_path += "$host_toolchain/"
616*c8dee2aaSAndroid Build Coastguard Worker  }
617*c8dee2aaSAndroid Build Coastguard Worker  sksl_minify_path += "sksl-minify"
618*c8dee2aaSAndroid Build Coastguard Worker  if (host_os == "win") {
619*c8dee2aaSAndroid Build Coastguard Worker    sksl_minify_path += ".exe"
620*c8dee2aaSAndroid Build Coastguard Worker  }
621*c8dee2aaSAndroid Build Coastguard Worker
622*c8dee2aaSAndroid Build Coastguard Worker  # Use minify_sksl.py to precompile all of the modules.
623*c8dee2aaSAndroid Build Coastguard Worker  minify_sksl_sources = get_target_outputs(":sksl_modules")
624*c8dee2aaSAndroid Build Coastguard Worker
625*c8dee2aaSAndroid Build Coastguard Worker  minify_sksl_outputs = []
626*c8dee2aaSAndroid Build Coastguard Worker  foreach(src, minify_sksl_sources) {
627*c8dee2aaSAndroid Build Coastguard Worker    name = get_path_info(src, "name")
628*c8dee2aaSAndroid Build Coastguard Worker
629*c8dee2aaSAndroid Build Coastguard Worker    # GN insists its outputs should go somewhere underneath target_out_dir, so we trick it with a
630*c8dee2aaSAndroid Build Coastguard Worker    # path that starts with target_out_dir and then uses ".." to back up into the src dir.
631*c8dee2aaSAndroid Build Coastguard Worker    minify_sksl_outputs += [ "$target_out_dir/" + rebase_path(
632*c8dee2aaSAndroid Build Coastguard Worker                                 "src/sksl/generated/$name.minified.sksl",
633*c8dee2aaSAndroid Build Coastguard Worker                                 target_out_dir) ]
634*c8dee2aaSAndroid Build Coastguard Worker    minify_sksl_outputs += [ "$target_out_dir/" + rebase_path(
635*c8dee2aaSAndroid Build Coastguard Worker                                 "src/sksl/generated/$name.unoptimized.sksl",
636*c8dee2aaSAndroid Build Coastguard Worker                                 target_out_dir) ]
637*c8dee2aaSAndroid Build Coastguard Worker  }
638*c8dee2aaSAndroid Build Coastguard Worker
639*c8dee2aaSAndroid Build Coastguard Worker  action("minify_sksl") {
640*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/minify_sksl.py"
641*c8dee2aaSAndroid Build Coastguard Worker    deps = [
642*c8dee2aaSAndroid Build Coastguard Worker      ":sksl-minify(//gn/toolchain:$host_toolchain)",
643*c8dee2aaSAndroid Build Coastguard Worker      ":sksl_modules",
644*c8dee2aaSAndroid Build Coastguard Worker    ]
645*c8dee2aaSAndroid Build Coastguard Worker    sources = minify_sksl_sources
646*c8dee2aaSAndroid Build Coastguard Worker    outputs = minify_sksl_outputs
647*c8dee2aaSAndroid Build Coastguard Worker    args = [
648*c8dee2aaSAndroid Build Coastguard Worker      rebase_path(sksl_minify_path),
649*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("src/sksl/generated"),
650*c8dee2aaSAndroid Build Coastguard Worker    ]
651*c8dee2aaSAndroid Build Coastguard Worker    args += rebase_path(minify_sksl_sources)
652*c8dee2aaSAndroid Build Coastguard Worker  }
653*c8dee2aaSAndroid Build Coastguard Worker
654*c8dee2aaSAndroid Build Coastguard Worker  if (skia_compile_sksl_tests) {
655*c8dee2aaSAndroid Build Coastguard Worker    # Minify our existing .rts files into golden minified outputs.
656*c8dee2aaSAndroid Build Coastguard Worker    import("gn/sksl_tests.gni")
657*c8dee2aaSAndroid Build Coastguard Worker    action("minify_sksl_tests") {
658*c8dee2aaSAndroid Build Coastguard Worker      script = "gn/minify_sksl_tests.py"
659*c8dee2aaSAndroid Build Coastguard Worker      deps = [
660*c8dee2aaSAndroid Build Coastguard Worker        ":sksl-minify(//gn/toolchain:$host_toolchain)",
661*c8dee2aaSAndroid Build Coastguard Worker        ":sksl_modules",
662*c8dee2aaSAndroid Build Coastguard Worker      ]
663*c8dee2aaSAndroid Build Coastguard Worker      sources = []
664*c8dee2aaSAndroid Build Coastguard Worker      outputs = []
665*c8dee2aaSAndroid Build Coastguard Worker      response_file_contents = []
666*c8dee2aaSAndroid Build Coastguard Worker      args = [
667*c8dee2aaSAndroid Build Coastguard Worker        # Comments match the variable names in minify_sksl_tests.py
668*c8dee2aaSAndroid Build Coastguard Worker        rebase_path(sksl_minify_path),  # sksl_minify
669*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("src/sksl/sksl_shared.sksl"),  # shared_module
670*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("src/sksl/sksl_public.sksl"),  # public_module
671*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("src/sksl/sksl_rt_shader.sksl"),  # public_module
672*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("resources"),  # input_root_dir
673*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("tests"),  # output_root_dir
674*c8dee2aaSAndroid Build Coastguard Worker        "{{response_file_name}}",  # input_file
675*c8dee2aaSAndroid Build Coastguard Worker      ]
676*c8dee2aaSAndroid Build Coastguard Worker
677*c8dee2aaSAndroid Build Coastguard Worker      testsDir = get_path_info("tests/sksl/", "abspath")
678*c8dee2aaSAndroid Build Coastguard Worker      resourcesDir = get_path_info("resources/sksl/", "abspath")
679*c8dee2aaSAndroid Build Coastguard Worker
680*c8dee2aaSAndroid Build Coastguard Worker      foreach(partialPath, sksl_minify_tests_sources) {
681*c8dee2aaSAndroid Build Coastguard Worker        dst = testsDir + partialPath
682*c8dee2aaSAndroid Build Coastguard Worker        src = resourcesDir + partialPath
683*c8dee2aaSAndroid Build Coastguard Worker
684*c8dee2aaSAndroid Build Coastguard Worker        dir = get_path_info(dst, "dir")
685*c8dee2aaSAndroid Build Coastguard Worker        name = get_path_info(dst, "name")
686*c8dee2aaSAndroid Build Coastguard Worker        ext = get_path_info(dst, "extension")
687*c8dee2aaSAndroid Build Coastguard Worker        if (ext == "rts" || ext == "privrts" || ext == "rtcf" || ext == "rtb" ||
688*c8dee2aaSAndroid Build Coastguard Worker            ext == "mfrag" || ext == "mvert") {
689*c8dee2aaSAndroid Build Coastguard Worker          response_file_contents += [ rebase_path(src) ]
690*c8dee2aaSAndroid Build Coastguard Worker          sources += [ src ]
691*c8dee2aaSAndroid Build Coastguard Worker          outputs += [ target_out_dir + "/" +
692*c8dee2aaSAndroid Build Coastguard Worker                       rebase_path(dir + "/" + name + ".minified.sksl",
693*c8dee2aaSAndroid Build Coastguard Worker                                   target_out_dir) ]
694*c8dee2aaSAndroid Build Coastguard Worker        }
695*c8dee2aaSAndroid Build Coastguard Worker      }
696*c8dee2aaSAndroid Build Coastguard Worker    }
697*c8dee2aaSAndroid Build Coastguard Worker  }
698*c8dee2aaSAndroid Build Coastguard Worker} else {
699*c8dee2aaSAndroid Build Coastguard Worker  group("minify_sksl") {
700*c8dee2aaSAndroid Build Coastguard Worker  }
701*c8dee2aaSAndroid Build Coastguard Worker  group("minify_sksl_tests") {
702*c8dee2aaSAndroid Build Coastguard Worker  }
703*c8dee2aaSAndroid Build Coastguard Worker}
704*c8dee2aaSAndroid Build Coastguard Worker
705*c8dee2aaSAndroid Build Coastguard Worker# `Compile SkSL Tests` relies on skslc and the precompiled modules.
706*c8dee2aaSAndroid Build Coastguard Workerif (skia_compile_sksl_tests) {
707*c8dee2aaSAndroid Build Coastguard Worker  # Build skslc.
708*c8dee2aaSAndroid Build Coastguard Worker  skia_executable("skslc") {
709*c8dee2aaSAndroid Build Coastguard Worker    defines = [
710*c8dee2aaSAndroid Build Coastguard Worker      "SKSL_STANDALONE",
711*c8dee2aaSAndroid Build Coastguard Worker      "SK_DISABLE_TRACING",
712*c8dee2aaSAndroid Build Coastguard Worker      "SK_COMPILE_WITH_GN",
713*c8dee2aaSAndroid Build Coastguard Worker    ]
714*c8dee2aaSAndroid Build Coastguard Worker    sources = skslc_deps
715*c8dee2aaSAndroid Build Coastguard Worker    sources += [
716*c8dee2aaSAndroid Build Coastguard Worker      "tools/skslc/Main.cpp",
717*c8dee2aaSAndroid Build Coastguard Worker      "tools/skslc/ProcessWorklist.cpp",
718*c8dee2aaSAndroid Build Coastguard Worker      "tools/skslc/ProcessWorklist.h",
719*c8dee2aaSAndroid Build Coastguard Worker    ]
720*c8dee2aaSAndroid Build Coastguard Worker    libs = []
721*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
722*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_win.cpp" ]
723*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac || is_ios) {
724*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_mac.cpp" ]
725*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux || is_android) {
726*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/utils/SkGetExecutablePath_linux.cpp" ]
727*c8dee2aaSAndroid Build Coastguard Worker    }
728*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
729*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_ports_windows_sources
730*c8dee2aaSAndroid Build Coastguard Worker    } else {
731*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/ports/SkOSFile_posix.cpp" ]
732*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "dl" ]
733*c8dee2aaSAndroid Build Coastguard Worker    }
734*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_codegen_sources
735*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_core_sources
736*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_hlsl_sources
737*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_pipeline_sources
738*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_tracing_sources
739*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_validate_spirv_sources
740*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_validate_wgsl_sources
741*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "." ]
742*c8dee2aaSAndroid Build Coastguard Worker    deps = [
743*c8dee2aaSAndroid Build Coastguard Worker      ":run_sksllex",
744*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/externals/dawn/src/tint/api:api",
745*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/externals/spirv-tools:spvtools",
746*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/externals/spirv-tools:spvtools_val",
747*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/spirv-cross:spirv_cross",
748*c8dee2aaSAndroid Build Coastguard Worker    ]
749*c8dee2aaSAndroid Build Coastguard Worker  }
750*c8dee2aaSAndroid Build Coastguard Worker
751*c8dee2aaSAndroid Build Coastguard Worker  skslc_path = "$root_out_dir/"
752*c8dee2aaSAndroid Build Coastguard Worker  if (host_toolchain != default_toolchain_name) {
753*c8dee2aaSAndroid Build Coastguard Worker    skslc_path += "$host_toolchain/"
754*c8dee2aaSAndroid Build Coastguard Worker  }
755*c8dee2aaSAndroid Build Coastguard Worker  skslc_path += "skslc"
756*c8dee2aaSAndroid Build Coastguard Worker  if (host_os == "win") {
757*c8dee2aaSAndroid Build Coastguard Worker    skslc_path += ".exe"
758*c8dee2aaSAndroid Build Coastguard Worker  }
759*c8dee2aaSAndroid Build Coastguard Worker
760*c8dee2aaSAndroid Build Coastguard Worker  # Build the test files using skslc.
761*c8dee2aaSAndroid Build Coastguard Worker  import("gn/sksl_tests.gni")
762*c8dee2aaSAndroid Build Coastguard Worker  template("compile_sksl") {
763*c8dee2aaSAndroid Build Coastguard Worker    # Compile the passed-in `sources` into `outputs` using skslc, with the given language/settings.
764*c8dee2aaSAndroid Build Coastguard Worker    action("compile_sksl_${target_name}") {
765*c8dee2aaSAndroid Build Coastguard Worker      script = "gn/compile_sksl_tests.py"
766*c8dee2aaSAndroid Build Coastguard Worker      deps = [
767*c8dee2aaSAndroid Build Coastguard Worker        ":sksl_modules",
768*c8dee2aaSAndroid Build Coastguard Worker        ":skslc(//gn/toolchain:$host_toolchain)",
769*c8dee2aaSAndroid Build Coastguard Worker      ]
770*c8dee2aaSAndroid Build Coastguard Worker      sources = []
771*c8dee2aaSAndroid Build Coastguard Worker      outputs = []
772*c8dee2aaSAndroid Build Coastguard Worker      response_file_contents = []
773*c8dee2aaSAndroid Build Coastguard Worker      args = [
774*c8dee2aaSAndroid Build Coastguard Worker        # Comments are the variable name in compile_sksl_tests.py
775*c8dee2aaSAndroid Build Coastguard Worker        rebase_path(skslc_path),  # skslc
776*c8dee2aaSAndroid Build Coastguard Worker        invoker.lang,  # lang
777*c8dee2aaSAndroid Build Coastguard Worker        invoker.settings,  # settings
778*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("resources"),  # input_root_dir
779*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("tests"),  # output_root_dir
780*c8dee2aaSAndroid Build Coastguard Worker        "{{response_file_name}}",  # input_file
781*c8dee2aaSAndroid Build Coastguard Worker      ]
782*c8dee2aaSAndroid Build Coastguard Worker
783*c8dee2aaSAndroid Build Coastguard Worker      testsDir = get_path_info("tests/sksl/", "abspath")
784*c8dee2aaSAndroid Build Coastguard Worker      resourcesDir = get_path_info("resources/sksl/", "abspath")
785*c8dee2aaSAndroid Build Coastguard Worker
786*c8dee2aaSAndroid Build Coastguard Worker      foreach(partialPath, invoker.sources) {
787*c8dee2aaSAndroid Build Coastguard Worker        dst = testsDir + partialPath
788*c8dee2aaSAndroid Build Coastguard Worker        src = resourcesDir + partialPath
789*c8dee2aaSAndroid Build Coastguard Worker
790*c8dee2aaSAndroid Build Coastguard Worker        dir = get_path_info(dst, "dir")
791*c8dee2aaSAndroid Build Coastguard Worker        name = get_path_info(dst, "name")
792*c8dee2aaSAndroid Build Coastguard Worker        ext = get_path_info(dst, "extension")
793*c8dee2aaSAndroid Build Coastguard Worker        response_file_contents += [ rebase_path(src) ]
794*c8dee2aaSAndroid Build Coastguard Worker        sources += [ src ]
795*c8dee2aaSAndroid Build Coastguard Worker
796*c8dee2aaSAndroid Build Coastguard Worker        foreach(outExtension, invoker.outExtensions) {
797*c8dee2aaSAndroid Build Coastguard Worker          # SPIR-V uses separate extensions for .vert and .compute shaders.
798*c8dee2aaSAndroid Build Coastguard Worker          if (ext == "vert" && outExtension == ".asm.frag") {
799*c8dee2aaSAndroid Build Coastguard Worker            outExtension = ".asm.vert"
800*c8dee2aaSAndroid Build Coastguard Worker          } else if (ext == "compute" && outExtension == ".asm.frag") {
801*c8dee2aaSAndroid Build Coastguard Worker            outExtension = ".asm.comp"
802*c8dee2aaSAndroid Build Coastguard Worker          }
803*c8dee2aaSAndroid Build Coastguard Worker          outputs +=
804*c8dee2aaSAndroid Build Coastguard Worker              [ target_out_dir + "/" +
805*c8dee2aaSAndroid Build Coastguard Worker                rebase_path(dir + "/" + name + outExtension, target_out_dir) ]
806*c8dee2aaSAndroid Build Coastguard Worker        }
807*c8dee2aaSAndroid Build Coastguard Worker      }
808*c8dee2aaSAndroid Build Coastguard Worker    }
809*c8dee2aaSAndroid Build Coastguard Worker  }
810*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("glsl_tests") {
811*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_glsl_tests_sources + sksl_glsl_settings_tests_sources
812*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".glsl" ]
813*c8dee2aaSAndroid Build Coastguard Worker    lang = "--glsl"
814*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
815*c8dee2aaSAndroid Build Coastguard Worker  }
816*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("glsl_nosettings_tests") {
817*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_glsl_settings_tests_sources
818*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ "StandaloneSettings.glsl" ]
819*c8dee2aaSAndroid Build Coastguard Worker    lang = "--glsl"
820*c8dee2aaSAndroid Build Coastguard Worker    settings = "--nosettings"
821*c8dee2aaSAndroid Build Coastguard Worker  }
822*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("metal_tests") {
823*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_metal_tests_sources
824*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".metal" ]
825*c8dee2aaSAndroid Build Coastguard Worker    lang = "--metal"
826*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
827*c8dee2aaSAndroid Build Coastguard Worker  }
828*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("hlsl_tests") {
829*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_hlsl_tests_sources
830*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".hlsl" ]
831*c8dee2aaSAndroid Build Coastguard Worker    lang = "--hlsl"
832*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
833*c8dee2aaSAndroid Build Coastguard Worker  }
834*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("skrp_tests") {
835*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_skrp_tests_sources
836*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".skrp" ]
837*c8dee2aaSAndroid Build Coastguard Worker    lang = "--skrp"
838*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
839*c8dee2aaSAndroid Build Coastguard Worker  }
840*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("stage_tests") {
841*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_stage_tests_sources
842*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".stage" ]
843*c8dee2aaSAndroid Build Coastguard Worker    lang = "--stage"
844*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
845*c8dee2aaSAndroid Build Coastguard Worker  }
846*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("spirv_tests") {
847*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_spirv_tests_sources
848*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".asm.frag" ]
849*c8dee2aaSAndroid Build Coastguard Worker    lang = "--spirv"
850*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
851*c8dee2aaSAndroid Build Coastguard Worker  }
852*c8dee2aaSAndroid Build Coastguard Worker  compile_sksl("wgsl_tests") {
853*c8dee2aaSAndroid Build Coastguard Worker    sources = sksl_wgsl_tests_sources
854*c8dee2aaSAndroid Build Coastguard Worker    outExtensions = [ ".wgsl" ]
855*c8dee2aaSAndroid Build Coastguard Worker    lang = "--wgsl"
856*c8dee2aaSAndroid Build Coastguard Worker    settings = "--settings"
857*c8dee2aaSAndroid Build Coastguard Worker  }
858*c8dee2aaSAndroid Build Coastguard Worker} else {
859*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_glsl_tests") {
860*c8dee2aaSAndroid Build Coastguard Worker  }
861*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_glsl_nosettings_tests") {
862*c8dee2aaSAndroid Build Coastguard Worker  }
863*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_metal_tests") {
864*c8dee2aaSAndroid Build Coastguard Worker  }
865*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_hlsl_tests") {
866*c8dee2aaSAndroid Build Coastguard Worker  }
867*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_skrp_tests") {
868*c8dee2aaSAndroid Build Coastguard Worker  }
869*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_spirv_tests") {
870*c8dee2aaSAndroid Build Coastguard Worker  }
871*c8dee2aaSAndroid Build Coastguard Worker  group("compile_sksl_wgsl_tests") {
872*c8dee2aaSAndroid Build Coastguard Worker  }
873*c8dee2aaSAndroid Build Coastguard Worker}
874*c8dee2aaSAndroid Build Coastguard Worker
875*c8dee2aaSAndroid Build Coastguard Workergroup("compile_all_sksl_tests") {
876*c8dee2aaSAndroid Build Coastguard Worker  deps = [
877*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_glsl_nosettings_tests",
878*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_glsl_tests",
879*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_hlsl_tests",
880*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_metal_tests",
881*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_skrp_tests",
882*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_spirv_tests",
883*c8dee2aaSAndroid Build Coastguard Worker    ":compile_sksl_wgsl_tests",
884*c8dee2aaSAndroid Build Coastguard Worker  ]
885*c8dee2aaSAndroid Build Coastguard Worker}
886*c8dee2aaSAndroid Build Coastguard Worker
887*c8dee2aaSAndroid Build Coastguard Workeroptional("gpu_shared") {
888*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_ganesh || skia_enable_graphite
889*c8dee2aaSAndroid Build Coastguard Worker
890*c8dee2aaSAndroid Build Coastguard Worker  configs = []
891*c8dee2aaSAndroid Build Coastguard Worker  deps = []
892*c8dee2aaSAndroid Build Coastguard Worker  libs = []
893*c8dee2aaSAndroid Build Coastguard Worker  public_defines = []
894*c8dee2aaSAndroid Build Coastguard Worker  public_deps = []
895*c8dee2aaSAndroid Build Coastguard Worker  frameworks = []
896*c8dee2aaSAndroid Build Coastguard Worker
897*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_shared_gpu_sources
898*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_pipeline_sources
899*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_codegen_sources
900*c8dee2aaSAndroid Build Coastguard Worker
901*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_dawn) {
902*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_DAWN" ]
903*c8dee2aaSAndroid Build Coastguard Worker
904*c8dee2aaSAndroid Build Coastguard Worker    # When building for WASM, the WebGPU headers are provided by Emscripten. For native builds we
905*c8dee2aaSAndroid Build Coastguard Worker    # have to depend on Dawn directly.
906*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_use_webgpu) {
907*c8dee2aaSAndroid Build Coastguard Worker      public_deps += [
908*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/externals/dawn/include/dawn:cpp_headers",
909*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/externals/dawn/src/dawn:cpp",
910*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/externals/dawn/src/dawn:proc",
911*c8dee2aaSAndroid Build Coastguard Worker      ]
912*c8dee2aaSAndroid Build Coastguard Worker
913*c8dee2aaSAndroid Build Coastguard Worker      if (dawn_enable_d3d12 || dawn_enable_d3d11 || dawn_enable_desktop_gl ||
914*c8dee2aaSAndroid Build Coastguard Worker          dawn_enable_metal || dawn_enable_opengles || dawn_enable_vulkan) {
915*c8dee2aaSAndroid Build Coastguard Worker        public_deps += [ "//third_party/externals/dawn/src/dawn/native" ]
916*c8dee2aaSAndroid Build Coastguard Worker      }
917*c8dee2aaSAndroid Build Coastguard Worker      if (dawn_enable_d3d12) {
918*c8dee2aaSAndroid Build Coastguard Worker        libs += [
919*c8dee2aaSAndroid Build Coastguard Worker          "d3d12.lib",
920*c8dee2aaSAndroid Build Coastguard Worker          "dxgi.lib",
921*c8dee2aaSAndroid Build Coastguard Worker          "d3dcompiler.lib",
922*c8dee2aaSAndroid Build Coastguard Worker        ]
923*c8dee2aaSAndroid Build Coastguard Worker      } else if (dawn_enable_metal) {
924*c8dee2aaSAndroid Build Coastguard Worker        frameworks += [ "Metal.framework" ]
925*c8dee2aaSAndroid Build Coastguard Worker      }
926*c8dee2aaSAndroid Build Coastguard Worker    }
927*c8dee2aaSAndroid Build Coastguard Worker  }
928*c8dee2aaSAndroid Build Coastguard Worker
929*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_direct3d) {
930*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_sksl_hlsl_sources
931*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/spirv-cross:spirv_cross" ]
932*c8dee2aaSAndroid Build Coastguard Worker  }
933*c8dee2aaSAndroid Build Coastguard Worker
934*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vulkan) {
935*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_VULKAN" ]
936*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_shared_vk_sources
937*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":use_skia_vulkan_headers" ]
938*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_vulkan_debug_layers) {
939*c8dee2aaSAndroid Build Coastguard Worker      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
940*c8dee2aaSAndroid Build Coastguard Worker    }
941*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_vma) {
942*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_vma_sources
943*c8dee2aaSAndroid Build Coastguard Worker      public_deps += [ "src/gpu/vk/vulkanmemoryallocator" ]
944*c8dee2aaSAndroid Build Coastguard Worker    }
945*c8dee2aaSAndroid Build Coastguard Worker  }
946*c8dee2aaSAndroid Build Coastguard Worker
947*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_metal) {
948*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_METAL" ]
949*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_shared_mtl_sources
950*c8dee2aaSAndroid Build Coastguard Worker  }
951*c8dee2aaSAndroid Build Coastguard Worker
952*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
953*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_shared_android_sources
954*c8dee2aaSAndroid Build Coastguard Worker  }
955*c8dee2aaSAndroid Build Coastguard Worker}
956*c8dee2aaSAndroid Build Coastguard Worker
957*c8dee2aaSAndroid Build Coastguard Workeroptional("gpu") {
958*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_ganesh
959*c8dee2aaSAndroid Build Coastguard Worker  deps = [
960*c8dee2aaSAndroid Build Coastguard Worker    ":gpu_shared",
961*c8dee2aaSAndroid Build Coastguard Worker    ":minify_sksl",
962*c8dee2aaSAndroid Build Coastguard Worker    ":run_sksllex",
963*c8dee2aaSAndroid Build Coastguard Worker  ]
964*c8dee2aaSAndroid Build Coastguard Worker  if (skia_generate_workarounds) {
965*c8dee2aaSAndroid Build Coastguard Worker    deps += [ ":workaround_list" ]
966*c8dee2aaSAndroid Build Coastguard Worker  }
967*c8dee2aaSAndroid Build Coastguard Worker  configs = []
968*c8dee2aaSAndroid Build Coastguard Worker  public_defines = []
969*c8dee2aaSAndroid Build Coastguard Worker  public_configs = []
970*c8dee2aaSAndroid Build Coastguard Worker  public_deps = []
971*c8dee2aaSAndroid Build Coastguard Worker
972*c8dee2aaSAndroid Build Coastguard Worker  public = skia_gpu_public
973*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ganesh_private
974*c8dee2aaSAndroid Build Coastguard Worker
975*c8dee2aaSAndroid Build Coastguard Worker  libs = []
976*c8dee2aaSAndroid Build Coastguard Worker  frameworks = []
977*c8dee2aaSAndroid Build Coastguard Worker
978*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
979*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_gpu_android_private
980*c8dee2aaSAndroid Build Coastguard Worker
981*c8dee2aaSAndroid Build Coastguard Worker    # this lib is required to link against AHardwareBuffer
982*c8dee2aaSAndroid Build Coastguard Worker    if (defined(ndk_api) && ndk_api >= 26) {
983*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "android" ]
984*c8dee2aaSAndroid Build Coastguard Worker    }
985*c8dee2aaSAndroid Build Coastguard Worker  }
986*c8dee2aaSAndroid Build Coastguard Worker
987*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_gl) {
988*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_GL" ]
989*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
990*c8dee2aaSAndroid Build Coastguard Worker      sources += [
991*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.cpp",
992*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/egl/GrGLMakeNativeInterface_egl.cpp",
993*c8dee2aaSAndroid Build Coastguard Worker      ]
994*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_android_gl_sources
995*c8dee2aaSAndroid Build Coastguard Worker
996*c8dee2aaSAndroid Build Coastguard Worker      # this lib is required to link against AHardwareBuffer
997*c8dee2aaSAndroid Build Coastguard Worker      if (defined(ndk_api) && ndk_api >= 26) {
998*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "android" ]
999*c8dee2aaSAndroid Build Coastguard Worker      }
1000*c8dee2aaSAndroid Build Coastguard Worker    } else if (skia_use_egl) {
1001*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_epoxy_egl) {
1002*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "src/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.cpp" ]
1003*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "epoxy" ]
1004*c8dee2aaSAndroid Build Coastguard Worker      } else {
1005*c8dee2aaSAndroid Build Coastguard Worker        sources += [
1006*c8dee2aaSAndroid Build Coastguard Worker          "src/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.cpp",
1007*c8dee2aaSAndroid Build Coastguard Worker          "src/gpu/ganesh/gl/egl/GrGLMakeNativeInterface_egl.cpp",
1008*c8dee2aaSAndroid Build Coastguard Worker        ]
1009*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "EGL" ]
1010*c8dee2aaSAndroid Build Coastguard Worker      }
1011*c8dee2aaSAndroid Build Coastguard Worker    } else if (skia_use_webgl) {
1012*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/gpu/ganesh/gl/webgl/GrGLMakeNativeInterface_webgl.cpp" ]
1013*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux && skia_use_x11) {
1014*c8dee2aaSAndroid Build Coastguard Worker      sources += [
1015*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.cpp",
1016*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/glx/GrGLMakeNativeInterface_glx.cpp",
1017*c8dee2aaSAndroid Build Coastguard Worker      ]
1018*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "GL" ]
1019*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac) {
1020*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/gpu/ganesh/gl/mac/GrGLMakeNativeInterface_mac.cpp" ]
1021*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_ios) {
1022*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/gpu/ganesh/gl/iOS/GrGLMakeNativeInterface_iOS.cpp" ]
1023*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win && !skia_enable_winuwp) {
1024*c8dee2aaSAndroid Build Coastguard Worker      sources += [
1025*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/win/GrGLMakeNativeInterface_win.cpp",
1026*c8dee2aaSAndroid Build Coastguard Worker        "src/gpu/ganesh/gl/win/GrGLMakeWinInterface.cpp",
1027*c8dee2aaSAndroid Build Coastguard Worker      ]
1028*c8dee2aaSAndroid Build Coastguard Worker      if (target_cpu != "arm64") {
1029*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "OpenGL32.lib" ]
1030*c8dee2aaSAndroid Build Coastguard Worker      }
1031*c8dee2aaSAndroid Build Coastguard Worker    } else {
1032*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/gpu/ganesh/gl/GrGLMakeNativeInterface_none.cpp" ]
1033*c8dee2aaSAndroid Build Coastguard Worker    }
1034*c8dee2aaSAndroid Build Coastguard Worker    public += skia_gpu_gl_public
1035*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_gpu_gl_private
1036*c8dee2aaSAndroid Build Coastguard Worker  }
1037*c8dee2aaSAndroid Build Coastguard Worker
1038*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vulkan) {
1039*c8dee2aaSAndroid Build Coastguard Worker    public += skia_gpu_vk_public
1040*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_gpu_vk_private
1041*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":use_skia_vulkan_headers" ]
1042*c8dee2aaSAndroid Build Coastguard Worker    if (is_fuchsia) {
1043*c8dee2aaSAndroid Build Coastguard Worker      if (using_fuchsia_sdk) {
1044*c8dee2aaSAndroid Build Coastguard Worker        public_deps += [ "$fuchsia_sdk_root/pkg:vulkan" ]
1045*c8dee2aaSAndroid Build Coastguard Worker      } else {
1046*c8dee2aaSAndroid Build Coastguard Worker        public_deps += [ "//src/graphics/lib/vulkan" ]
1047*c8dee2aaSAndroid Build Coastguard Worker      }
1048*c8dee2aaSAndroid Build Coastguard Worker    }
1049*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
1050*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_gpu_vk_android_private
1051*c8dee2aaSAndroid Build Coastguard Worker    }
1052*c8dee2aaSAndroid Build Coastguard Worker  }
1053*c8dee2aaSAndroid Build Coastguard Worker
1054*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_direct3d) {
1055*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_DIRECT3D" ]
1056*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/d3d12allocator" ]
1057*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_direct3d_sources
1058*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_direct3d_debug_layer) {
1059*c8dee2aaSAndroid Build Coastguard Worker      public_defines += [ "SK_ENABLE_D3D_DEBUG_LAYER" ]
1060*c8dee2aaSAndroid Build Coastguard Worker    }
1061*c8dee2aaSAndroid Build Coastguard Worker    libs += [
1062*c8dee2aaSAndroid Build Coastguard Worker      "d3d12.lib",
1063*c8dee2aaSAndroid Build Coastguard Worker      "dxgi.lib",
1064*c8dee2aaSAndroid Build Coastguard Worker      "d3dcompiler.lib",
1065*c8dee2aaSAndroid Build Coastguard Worker    ]
1066*c8dee2aaSAndroid Build Coastguard Worker  }
1067*c8dee2aaSAndroid Build Coastguard Worker
1068*c8dee2aaSAndroid Build Coastguard Worker  cflags_objcc = []
1069*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_metal) {
1070*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_METAL" ]
1071*c8dee2aaSAndroid Build Coastguard Worker    public += skia_gpu_metal_public
1072*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_gpu_metal_private
1073*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_gpu_metal_cpp
1074*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_metal_debug_info) {
1075*c8dee2aaSAndroid Build Coastguard Worker      public_defines += [ "SK_ENABLE_MTL_DEBUG_INFO" ]
1076*c8dee2aaSAndroid Build Coastguard Worker    }
1077*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [ "Metal.framework" ]
1078*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [ "Foundation.framework" ]
1079*c8dee2aaSAndroid Build Coastguard Worker    if (is_ios) {
1080*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "UIKit.framework" ]
1081*c8dee2aaSAndroid Build Coastguard Worker    }
1082*c8dee2aaSAndroid Build Coastguard Worker    cflags_objcc += [ "-fobjc-arc" ]
1083*c8dee2aaSAndroid Build Coastguard Worker  }
1084*c8dee2aaSAndroid Build Coastguard Worker
1085*c8dee2aaSAndroid Build Coastguard Worker  if (is_debug || skia_build_for_debugger) {
1086*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_ENABLE_DUMP_GPU" ]
1087*c8dee2aaSAndroid Build Coastguard Worker  }
1088*c8dee2aaSAndroid Build Coastguard Worker}
1089*c8dee2aaSAndroid Build Coastguard Worker
1090*c8dee2aaSAndroid Build Coastguard Workeroptional("vello") {
1091*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_vello_shaders
1092*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_ENABLE_VELLO_SHADERS" ]
1093*c8dee2aaSAndroid Build Coastguard Worker  public_deps = [ "//third_party/vello" ]
1094*c8dee2aaSAndroid Build Coastguard Worker}
1095*c8dee2aaSAndroid Build Coastguard Worker
1096*c8dee2aaSAndroid Build Coastguard Workeroptional("heif") {
1097*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libheif
1098*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_HAS_HEIF_LIBRARY" ]
1099*c8dee2aaSAndroid Build Coastguard Worker
1100*c8dee2aaSAndroid Build Coastguard Worker  # This HEIF decoding functionality is a part of the Android Framework.
1101*c8dee2aaSAndroid Build Coastguard Worker  # https://android.googlesource.com/platform/frameworks/av/+/master/media/libheif/include/HeifDecoderAPI.h
1102*c8dee2aaSAndroid Build Coastguard Worker  # There isn't a way to compile that library outside of it, so we just link against
1103*c8dee2aaSAndroid Build Coastguard Worker  # the library. This feature is not supported on other platforms (and we haven't
1104*c8dee2aaSAndroid Build Coastguard Worker  # yet tried something like https://github.com/strukturag/libheif/tree/master/libheif).
1105*c8dee2aaSAndroid Build Coastguard Worker  # The dependency for Android is set in gn_to_bp.py.
1106*c8dee2aaSAndroid Build Coastguard Worker  deps = []
1107*c8dee2aaSAndroid Build Coastguard Worker
1108*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkHeifCodec.cpp" ]
1109*c8dee2aaSAndroid Build Coastguard Worker}
1110*c8dee2aaSAndroid Build Coastguard Worker
1111*c8dee2aaSAndroid Build Coastguard Workeroptional("avif") {
1112*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libavif
1113*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_AVIF" ]
1114*c8dee2aaSAndroid Build Coastguard Worker
1115*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libavif" ]
1116*c8dee2aaSAndroid Build Coastguard Worker
1117*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkAvifCodec.cpp" ]
1118*c8dee2aaSAndroid Build Coastguard Worker}
1119*c8dee2aaSAndroid Build Coastguard Worker
1120*c8dee2aaSAndroid Build Coastguard Workeroptional("crabbyavif") {
1121*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_crabbyavif
1122*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_AVIF" ]
1123*c8dee2aaSAndroid Build Coastguard Worker
1124*c8dee2aaSAndroid Build Coastguard Worker  # AVIF decoding is provided by CrabbyAvif (a Rust library). Since skia's
1125*c8dee2aaSAndroid Build Coastguard Worker  # standalone builds do not support Rust, it is only being enabled when
1126*c8dee2aaSAndroid Build Coastguard Worker  # building for the Android framework.
1127*c8dee2aaSAndroid Build Coastguard Worker  # The dependency for Android is set in gn_to_bp.py
1128*c8dee2aaSAndroid Build Coastguard Worker  deps = []
1129*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkCrabbyAvifCodec.cpp" ]
1130*c8dee2aaSAndroid Build Coastguard Worker}
1131*c8dee2aaSAndroid Build Coastguard Worker
1132*c8dee2aaSAndroid Build Coastguard Workeroptional("jpeg_mpf") {
1133*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_jpeg_gainmaps &&
1134*c8dee2aaSAndroid Build Coastguard Worker            (skia_use_libjpeg_turbo_encode || skia_use_libjpeg_turbo_decode)
1135*c8dee2aaSAndroid Build Coastguard Worker  sources = [
1136*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegMultiPicture.cpp",
1137*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegSegmentScan.cpp",
1138*c8dee2aaSAndroid Build Coastguard Worker  ]
1139*c8dee2aaSAndroid Build Coastguard Worker}
1140*c8dee2aaSAndroid Build Coastguard Worker
1141*c8dee2aaSAndroid Build Coastguard Workeroptional("jpeg_decode") {
1142*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libjpeg_turbo_decode
1143*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_JPEG" ]
1144*c8dee2aaSAndroid Build Coastguard Worker
1145*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libjpeg-turbo:libjpeg" ]
1146*c8dee2aaSAndroid Build Coastguard Worker  sources = [
1147*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegCodec.cpp",
1148*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegDecoderMgr.cpp",
1149*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegMetadataDecoderImpl.cpp",
1150*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegSourceMgr.cpp",
1151*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkJpegUtility.cpp",
1152*c8dee2aaSAndroid Build Coastguard Worker  ]
1153*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_jpeg_gainmaps) {
1154*c8dee2aaSAndroid Build Coastguard Worker    # Theoretically this doesn't need to be public, but this allows gn_to_bp.py to see it, and seems
1155*c8dee2aaSAndroid Build Coastguard Worker    # to align with other codec support. See b/265939413
1156*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_CODEC_DECODES_JPEG_GAINMAPS" ]
1157*c8dee2aaSAndroid Build Coastguard Worker    deps += [
1158*c8dee2aaSAndroid Build Coastguard Worker      ":jpeg_mpf",
1159*c8dee2aaSAndroid Build Coastguard Worker      ":xml",
1160*c8dee2aaSAndroid Build Coastguard Worker    ]
1161*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_codec_jpeg_xmp
1162*c8dee2aaSAndroid Build Coastguard Worker  }
1163*c8dee2aaSAndroid Build Coastguard Worker}
1164*c8dee2aaSAndroid Build Coastguard Worker
1165*c8dee2aaSAndroid Build Coastguard Workeroptional("jpeg_encode") {
1166*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libjpeg_turbo_encode && !skia_use_ndk_images
1167*c8dee2aaSAndroid Build Coastguard Worker
1168*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libjpeg-turbo:libjpeg" ]
1169*c8dee2aaSAndroid Build Coastguard Worker  public = skia_encode_jpeg_public
1170*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_encode_jpeg_srcs
1171*c8dee2aaSAndroid Build Coastguard Worker
1172*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_jpeg_gainmaps) {
1173*c8dee2aaSAndroid Build Coastguard Worker    deps += [ ":jpeg_mpf" ]
1174*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/encode/SkJpegGainmapEncoder.cpp" ]
1175*c8dee2aaSAndroid Build Coastguard Worker  }
1176*c8dee2aaSAndroid Build Coastguard Worker}
1177*c8dee2aaSAndroid Build Coastguard Worker
1178*c8dee2aaSAndroid Build Coastguard Workeroptional("jpegxl_decode") {
1179*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libjxl_decode
1180*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_JPEGXL" ]
1181*c8dee2aaSAndroid Build Coastguard Worker
1182*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libjxl" ]
1183*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkJpegxlCodec.cpp" ]
1184*c8dee2aaSAndroid Build Coastguard Worker}
1185*c8dee2aaSAndroid Build Coastguard Worker
1186*c8dee2aaSAndroid Build Coastguard Workeroptional("ndk_images") {
1187*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_ndk_images
1188*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_ENABLE_NDK_IMAGES" ]
1189*c8dee2aaSAndroid Build Coastguard Worker  sources = [
1190*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkImageEncoder_NDK.cpp",
1191*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkImageGeneratorNDK.cpp",
1192*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkNDKConversions.cpp",
1193*c8dee2aaSAndroid Build Coastguard Worker  ]
1194*c8dee2aaSAndroid Build Coastguard Worker  libs = [ "jnigraphics" ]
1195*c8dee2aaSAndroid Build Coastguard Worker}
1196*c8dee2aaSAndroid Build Coastguard Worker
1197*c8dee2aaSAndroid Build Coastguard Workeroptional("graphite") {
1198*c8dee2aaSAndroid Build Coastguard Worker  configs = []
1199*c8dee2aaSAndroid Build Coastguard Worker  libs = []
1200*c8dee2aaSAndroid Build Coastguard Worker  frameworks = []
1201*c8dee2aaSAndroid Build Coastguard Worker  public_defines = []
1202*c8dee2aaSAndroid Build Coastguard Worker
1203*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_enable_graphite
1204*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1205*c8dee2aaSAndroid Build Coastguard Worker    ":gpu_shared",
1206*c8dee2aaSAndroid Build Coastguard Worker    ":vello",
1207*c8dee2aaSAndroid Build Coastguard Worker  ]
1208*c8dee2aaSAndroid Build Coastguard Worker  public = skia_graphite_public
1209*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_graphite_sources
1210*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_graphite_modules_sources
1211*c8dee2aaSAndroid Build Coastguard Worker
1212*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
1213*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_android_private
1214*c8dee2aaSAndroid Build Coastguard Worker  }
1215*c8dee2aaSAndroid Build Coastguard Worker
1216*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_vello_shaders) {
1217*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_vello_sources
1218*c8dee2aaSAndroid Build Coastguard Worker  }
1219*c8dee2aaSAndroid Build Coastguard Worker
1220*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_dawn) {
1221*c8dee2aaSAndroid Build Coastguard Worker    public += skia_graphite_dawn_public
1222*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_dawn_sources
1223*c8dee2aaSAndroid Build Coastguard Worker  }
1224*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_metal) {
1225*c8dee2aaSAndroid Build Coastguard Worker    public_defines += [ "SK_METAL" ]
1226*c8dee2aaSAndroid Build Coastguard Worker    public += skia_graphite_mtl_public
1227*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_mtl_sources
1228*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_metal_debug_info) {
1229*c8dee2aaSAndroid Build Coastguard Worker      public_defines += [ "SK_ENABLE_MTL_DEBUG_INFO" ]
1230*c8dee2aaSAndroid Build Coastguard Worker    }
1231*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [ "Metal.framework" ]
1232*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [ "Foundation.framework" ]
1233*c8dee2aaSAndroid Build Coastguard Worker    if (is_ios) {
1234*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "UIKit.framework" ]
1235*c8dee2aaSAndroid Build Coastguard Worker    }
1236*c8dee2aaSAndroid Build Coastguard Worker  }
1237*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vulkan) {
1238*c8dee2aaSAndroid Build Coastguard Worker    public += skia_graphite_vk_public
1239*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_vk_sources
1240*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":use_skia_vulkan_headers" ]
1241*c8dee2aaSAndroid Build Coastguard Worker  }
1242*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_precompile) {
1243*c8dee2aaSAndroid Build Coastguard Worker    public += skia_graphite_precompile_public
1244*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_graphite_precompile_sources
1245*c8dee2aaSAndroid Build Coastguard Worker  }
1246*c8dee2aaSAndroid Build Coastguard Worker}
1247*c8dee2aaSAndroid Build Coastguard Worker
1248*c8dee2aaSAndroid Build Coastguard Workeroptional("pdf") {
1249*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_zlib && skia_enable_pdf && skia_use_libjpeg_turbo_decode &&
1250*c8dee2aaSAndroid Build Coastguard Worker            skia_use_libjpeg_turbo_encode
1251*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_SUPPORT_PDF" ]
1252*c8dee2aaSAndroid Build Coastguard Worker
1253*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/zlib" ]
1254*c8dee2aaSAndroid Build Coastguard Worker  public = skia_pdf_public
1255*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_pdf_sources
1256*c8dee2aaSAndroid Build Coastguard Worker  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
1257*c8dee2aaSAndroid Build Coastguard Worker  if (skia_pdf_subset_harfbuzz) {
1258*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/harfbuzz" ]
1259*c8dee2aaSAndroid Build Coastguard Worker    defines = [ "SK_PDF_USE_HARFBUZZ_SUBSET" ]
1260*c8dee2aaSAndroid Build Coastguard Worker  }
1261*c8dee2aaSAndroid Build Coastguard Worker  deps += [
1262*c8dee2aaSAndroid Build Coastguard Worker    ":jpeg_decode",
1263*c8dee2aaSAndroid Build Coastguard Worker    ":jpeg_encode",
1264*c8dee2aaSAndroid Build Coastguard Worker  ]
1265*c8dee2aaSAndroid Build Coastguard Worker}
1266*c8dee2aaSAndroid Build Coastguard Worker
1267*c8dee2aaSAndroid Build Coastguard Workeroptional("xps") {
1268*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_xps && is_win
1269*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_SUPPORT_XPS" ]
1270*c8dee2aaSAndroid Build Coastguard Worker  public = skia_xps_public
1271*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_xps_sources
1272*c8dee2aaSAndroid Build Coastguard Worker}
1273*c8dee2aaSAndroid Build Coastguard Worker
1274*c8dee2aaSAndroid Build Coastguard Workeroptional("png_decode") {
1275*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libpng_decode
1276*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [
1277*c8dee2aaSAndroid Build Coastguard Worker    "SK_CODEC_DECODES_ICO",
1278*c8dee2aaSAndroid Build Coastguard Worker    "SK_CODEC_DECODES_PNG",
1279*c8dee2aaSAndroid Build Coastguard Worker  ]
1280*c8dee2aaSAndroid Build Coastguard Worker
1281*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libpng" ]
1282*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkIcoCodec.cpp" ] + skia_codec_png
1283*c8dee2aaSAndroid Build Coastguard Worker}
1284*c8dee2aaSAndroid Build Coastguard Worker
1285*c8dee2aaSAndroid Build Coastguard Workeroptional("png_encode") {
1286*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libpng_encode && !skia_use_ndk_images
1287*c8dee2aaSAndroid Build Coastguard Worker  public = skia_encode_png_public
1288*c8dee2aaSAndroid Build Coastguard Worker
1289*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libpng" ]
1290*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_encode_png_srcs
1291*c8dee2aaSAndroid Build Coastguard Worker}
1292*c8dee2aaSAndroid Build Coastguard Worker
1293*c8dee2aaSAndroid Build Coastguard Workeroptional("raw") {
1294*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_dng_sdk && skia_use_libjpeg_turbo_decode && skia_use_piex
1295*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_RAW" ]
1296*c8dee2aaSAndroid Build Coastguard Worker
1297*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1298*c8dee2aaSAndroid Build Coastguard Worker    "//third_party/dng_sdk",
1299*c8dee2aaSAndroid Build Coastguard Worker    "//third_party/libjpeg-turbo:libjpeg",
1300*c8dee2aaSAndroid Build Coastguard Worker    "//third_party/piex",
1301*c8dee2aaSAndroid Build Coastguard Worker  ]
1302*c8dee2aaSAndroid Build Coastguard Worker
1303*c8dee2aaSAndroid Build Coastguard Worker  # SkRawCodec catches any exceptions thrown by dng_sdk, insulating the rest of
1304*c8dee2aaSAndroid Build Coastguard Worker  # Skia.
1305*c8dee2aaSAndroid Build Coastguard Worker  configs = [ "gn/portable:add_exceptions" ]
1306*c8dee2aaSAndroid Build Coastguard Worker
1307*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkRawCodec.cpp" ]
1308*c8dee2aaSAndroid Build Coastguard Worker}
1309*c8dee2aaSAndroid Build Coastguard Worker
1310*c8dee2aaSAndroid Build Coastguard Workeroptional("typeface_freetype") {
1311*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_freetype
1312*c8dee2aaSAndroid Build Coastguard Worker
1313*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_TYPEFACE_FACTORY_FREETYPE" ]
1314*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/freetype2" ]
1315*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_freetype_sources
1316*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/FontScanner_FreeTypeTest.cpp" ]
1317*c8dee2aaSAndroid Build Coastguard Worker}
1318*c8dee2aaSAndroid Build Coastguard Worker
1319*c8dee2aaSAndroid Build Coastguard Workerbazel_args = []
1320*c8dee2aaSAndroid Build Coastguard Workerif (is_mac && target_cpu == "arm64") {
1321*c8dee2aaSAndroid Build Coastguard Worker  # TODO: Normally the target toolchain would be specified with `--platforms` but that doesn't
1322*c8dee2aaSAndroid Build Coastguard Worker  # work. When building and running on an arm64 mac, setting `--host_platform` seems to do the
1323*c8dee2aaSAndroid Build Coastguard Worker  # right thing but may not be the right build configuration in the long run.
1324*c8dee2aaSAndroid Build Coastguard Worker  bazel_args += [ "--host_platform=//bazel/platform:mac_arm64_hermetic" ]
1325*c8dee2aaSAndroid Build Coastguard Worker}
1326*c8dee2aaSAndroid Build Coastguard Workerif (is_debug) {
1327*c8dee2aaSAndroid Build Coastguard Worker  bazel_args += [ "--compilation_mode=dbg" ]
1328*c8dee2aaSAndroid Build Coastguard Worker} else {
1329*c8dee2aaSAndroid Build Coastguard Worker  bazel_args += [ "--compilation_mode=opt" ]
1330*c8dee2aaSAndroid Build Coastguard Worker}
1331*c8dee2aaSAndroid Build Coastguard Worker
1332*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_fontations) {
1333*c8dee2aaSAndroid Build Coastguard Worker  action("fontations_rust_side_bazel_build") {
1334*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
1335*c8dee2aaSAndroid Build Coastguard Worker    sources = [
1336*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/fontations/BUILD.bazel",
1337*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/fontations/src/ffi.rs",
1338*c8dee2aaSAndroid Build Coastguard Worker    ]
1339*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/libbridge_rust_side.a" ]
1340*c8dee2aaSAndroid Build Coastguard Worker    args =
1341*c8dee2aaSAndroid Build Coastguard Worker        [
1342*c8dee2aaSAndroid Build Coastguard Worker          "//src/ports/fontations:bridge_rust_side",
1343*c8dee2aaSAndroid Build Coastguard Worker          rebase_path("//bazel-bin/src/ports/fontations/libbridge_rust_side.a",
1344*c8dee2aaSAndroid Build Coastguard Worker                      root_build_dir),
1345*c8dee2aaSAndroid Build Coastguard Worker        ] + bazel_args
1346*c8dee2aaSAndroid Build Coastguard Worker  }
1347*c8dee2aaSAndroid Build Coastguard Worker
1348*c8dee2aaSAndroid Build Coastguard Worker  # We only use Bazel to get the generated `.cc` and `.h` file and then compile
1349*c8dee2aaSAndroid Build Coastguard Worker  # them on GN/ninja side using `skia_source_set` below.  This ensures that the
1350*c8dee2aaSAndroid Build Coastguard Worker  # same C++ stdlib and compiler is used throughout the build (in some scenarios
1351*c8dee2aaSAndroid Build Coastguard Worker  # Bazel may end up using different ones).
1352*c8dee2aaSAndroid Build Coastguard Worker  action("fontations_ffi_bazel_build") {
1353*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
1354*c8dee2aaSAndroid Build Coastguard Worker    sources = [
1355*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/fontations/BUILD.bazel",
1356*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/fontations/src/ffi.rs",
1357*c8dee2aaSAndroid Build Coastguard Worker    ]
1358*c8dee2aaSAndroid Build Coastguard Worker    outputs = [
1359*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/src/ports/fontations/src/ffi.rs.h",
1360*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/src/ports/fontations/src/ffi.rs.cc",
1361*c8dee2aaSAndroid Build Coastguard Worker    ]
1362*c8dee2aaSAndroid Build Coastguard Worker    args = [
1363*c8dee2aaSAndroid Build Coastguard Worker             "//src/ports/fontations:fontations_ffi",
1364*c8dee2aaSAndroid Build Coastguard Worker
1365*c8dee2aaSAndroid Build Coastguard Worker             # we want the header to not simply be copied into the output directory,
1366*c8dee2aaSAndroid Build Coastguard Worker             # but in the same path as the Bazel build uses.
1367*c8dee2aaSAndroid Build Coastguard Worker             rebase_path("//bazel-bin/src/ports/fontations/src/ffi.rs.h",
1368*c8dee2aaSAndroid Build Coastguard Worker                         root_build_dir) + "=src/ports/fontations/src/ffi.rs.h",
1369*c8dee2aaSAndroid Build Coastguard Worker             rebase_path("//bazel-bin/src/ports/fontations/src/ffi.rs.cc",
1370*c8dee2aaSAndroid Build Coastguard Worker                         root_build_dir) +
1371*c8dee2aaSAndroid Build Coastguard Worker                 "=src/ports/fontations/src/ffi.rs.cc",
1372*c8dee2aaSAndroid Build Coastguard Worker           ] + bazel_args
1373*c8dee2aaSAndroid Build Coastguard Worker  }
1374*c8dee2aaSAndroid Build Coastguard Worker  config("fontations_ffi_public_config") {
1375*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [
1376*c8dee2aaSAndroid Build Coastguard Worker      # This is where `src/ports/fontations/src/ffi.rs.h` was put by Bazel
1377*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir",
1378*c8dee2aaSAndroid Build Coastguard Worker    ]
1379*c8dee2aaSAndroid Build Coastguard Worker  }
1380*c8dee2aaSAndroid Build Coastguard Worker  config("fontations_ffi_private_config") {
1381*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [
1382*c8dee2aaSAndroid Build Coastguard Worker      # This entry is needed so that `ffi.rs.cc` can resolve
1383*c8dee2aaSAndroid Build Coastguard Worker      # `#include "src/ports/fontations/src/ffi.rs.h"`
1384*c8dee2aaSAndroid Build Coastguard Worker      ".",
1385*c8dee2aaSAndroid Build Coastguard Worker    ]
1386*c8dee2aaSAndroid Build Coastguard Worker  }
1387*c8dee2aaSAndroid Build Coastguard Worker  skia_source_set("fontations_ffi") {
1388*c8dee2aaSAndroid Build Coastguard Worker    deps = [
1389*c8dee2aaSAndroid Build Coastguard Worker      ":fontations_ffi_bazel_build",
1390*c8dee2aaSAndroid Build Coastguard Worker      ":fontations_rust_side_bazel_build",
1391*c8dee2aaSAndroid Build Coastguard Worker    ]
1392*c8dee2aaSAndroid Build Coastguard Worker    public = [ "${root_out_dir}/src/ports/fontations/src/ffi.rs.h" ]
1393*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "${root_out_dir}/src/ports/fontations/src/ffi.rs.cc" ]
1394*c8dee2aaSAndroid Build Coastguard Worker    libs = [ "$root_out_dir/libbridge_rust_side.a" ]
1395*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":fontations_ffi_public_config" ]
1396*c8dee2aaSAndroid Build Coastguard Worker    configs = [ ":fontations_ffi_private_config" ]
1397*c8dee2aaSAndroid Build Coastguard Worker  }
1398*c8dee2aaSAndroid Build Coastguard Worker}
1399*c8dee2aaSAndroid Build Coastguard Worker
1400*c8dee2aaSAndroid Build Coastguard Workeroptional("typeface_fontations") {
1401*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_TYPEFACE_FACTORY_FONTATIONS" ]
1402*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_fontations
1403*c8dee2aaSAndroid Build Coastguard Worker  public_deps = [ ":fontations_ffi" ]
1404*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_ports_typeface_fontations_sources
1405*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [
1406*c8dee2aaSAndroid Build Coastguard Worker    "tests/FontationsTest.cpp",
1407*c8dee2aaSAndroid Build Coastguard Worker    "tests/FontationsFtCompTest.cpp",
1408*c8dee2aaSAndroid Build Coastguard Worker    "tests/FontScanner_FontationsTest.cpp",
1409*c8dee2aaSAndroid Build Coastguard Worker  ]
1410*c8dee2aaSAndroid Build Coastguard Worker}
1411*c8dee2aaSAndroid Build Coastguard Worker
1412*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_rust_png_decode || skia_use_rust_png_encode) {
1413*c8dee2aaSAndroid Build Coastguard Worker  # We only use Bazel to get the generated `.cc` and `.h` file and then compile
1414*c8dee2aaSAndroid Build Coastguard Worker  # them on GN/ninja side using `skia_source_set` below.  This ensures that the
1415*c8dee2aaSAndroid Build Coastguard Worker  # same C++ stdlib and compiler is used throughout the build (in some scenarios
1416*c8dee2aaSAndroid Build Coastguard Worker  # Bazel may end up using different ones).
1417*c8dee2aaSAndroid Build Coastguard Worker  action("rust_png_ffi_bazel_build") {
1418*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
1419*c8dee2aaSAndroid Build Coastguard Worker    sources = [
1420*c8dee2aaSAndroid Build Coastguard Worker      "experimental/rust_png/ffi/BUILD.bazel",
1421*c8dee2aaSAndroid Build Coastguard Worker      "experimental/rust_png/ffi/FFI.h",
1422*c8dee2aaSAndroid Build Coastguard Worker      "experimental/rust_png/ffi/FFI.rs",
1423*c8dee2aaSAndroid Build Coastguard Worker    ]
1424*c8dee2aaSAndroid Build Coastguard Worker    outputs = [
1425*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/librust_png_ffi_rs.a",
1426*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/experimental/rust_png/ffi/FFI.rs.h",
1427*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/experimental/rust_png/ffi/FFI.rs.cc",
1428*c8dee2aaSAndroid Build Coastguard Worker    ]
1429*c8dee2aaSAndroid Build Coastguard Worker    args =
1430*c8dee2aaSAndroid Build Coastguard Worker        [
1431*c8dee2aaSAndroid Build Coastguard Worker          "//experimental/rust_png/ffi:*",
1432*c8dee2aaSAndroid Build Coastguard Worker
1433*c8dee2aaSAndroid Build Coastguard Worker          rebase_path("//bazel-bin/experimental/rust_png/ffi/libffi_rs.a",
1434*c8dee2aaSAndroid Build Coastguard Worker                      root_build_dir) + "=librust_png_ffi_rs.a",
1435*c8dee2aaSAndroid Build Coastguard Worker
1436*c8dee2aaSAndroid Build Coastguard Worker          # we want the `cxx`-generated headers to not simply be copied into
1437*c8dee2aaSAndroid Build Coastguard Worker          # the output directory, but in the same path as the Bazel build
1438*c8dee2aaSAndroid Build Coastguard Worker          # uses.
1439*c8dee2aaSAndroid Build Coastguard Worker          rebase_path("//bazel-bin/experimental/rust_png/ffi/FFI.rs.h",
1440*c8dee2aaSAndroid Build Coastguard Worker                      root_build_dir) + "=experimental/rust_png/ffi/FFI.rs.h",
1441*c8dee2aaSAndroid Build Coastguard Worker          rebase_path("//bazel-bin/experimental/rust_png/ffi/FFI.rs.cc",
1442*c8dee2aaSAndroid Build Coastguard Worker                      root_build_dir) + "=experimental/rust_png/ffi/FFI.rs.cc",
1443*c8dee2aaSAndroid Build Coastguard Worker        ] + bazel_args
1444*c8dee2aaSAndroid Build Coastguard Worker  }
1445*c8dee2aaSAndroid Build Coastguard Worker  action("rust_png_cxx_core_bazel_build") {
1446*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
1447*c8dee2aaSAndroid Build Coastguard Worker    sources = [
1448*c8dee2aaSAndroid Build Coastguard Worker      "WORKSPACE.bazel",
1449*c8dee2aaSAndroid Build Coastguard Worker      "bazel/external/cxx/BUILD.bazel",
1450*c8dee2aaSAndroid Build Coastguard Worker      "bazel/external/cxx/BUILD.bazel.skia",
1451*c8dee2aaSAndroid Build Coastguard Worker    ]
1452*c8dee2aaSAndroid Build Coastguard Worker    outputs = [
1453*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/librust_png_cxx_core_lib.a",
1454*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/third_party/rust/cxx/v1/cxx.h",
1455*c8dee2aaSAndroid Build Coastguard Worker    ]
1456*c8dee2aaSAndroid Build Coastguard Worker    args = [
1457*c8dee2aaSAndroid Build Coastguard Worker             "@cxx//:core-lib",
1458*c8dee2aaSAndroid Build Coastguard Worker
1459*c8dee2aaSAndroid Build Coastguard Worker             rebase_path("//bazel-bin/external/cxx/libcore-lib.a",
1460*c8dee2aaSAndroid Build Coastguard Worker                         root_build_dir) + "=librust_png_cxx_core_lib.a",
1461*c8dee2aaSAndroid Build Coastguard Worker
1462*c8dee2aaSAndroid Build Coastguard Worker             # we want the `cxx.h` header to not simply be copied into the
1463*c8dee2aaSAndroid Build Coastguard Worker             # output directory, but in the same path as the Bazel build uses.
1464*c8dee2aaSAndroid Build Coastguard Worker             rebase_path(
1465*c8dee2aaSAndroid Build Coastguard Worker                     "//bazel-bin/external/cxx/_virtual_includes/core-lib/third_party/rust/cxx/v1/cxx.h",
1466*c8dee2aaSAndroid Build Coastguard Worker                     root_build_dir) + "=third_party/rust/cxx/v1/cxx.h",
1467*c8dee2aaSAndroid Build Coastguard Worker           ] + bazel_args
1468*c8dee2aaSAndroid Build Coastguard Worker  }
1469*c8dee2aaSAndroid Build Coastguard Worker  config("rust_png_cxx_bridge_public_config") {
1470*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [
1471*c8dee2aaSAndroid Build Coastguard Worker      # This is where `experimental/rust_png/ffi/FFI.rs.h` and
1472*c8dee2aaSAndroid Build Coastguard Worker      # `third_party/rust/cxx/v1/cxx.h` were put by Bazel
1473*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir",
1474*c8dee2aaSAndroid Build Coastguard Worker    ]
1475*c8dee2aaSAndroid Build Coastguard Worker  }
1476*c8dee2aaSAndroid Build Coastguard Worker  config("rust_png_cxx_bridge_private_config") {
1477*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [
1478*c8dee2aaSAndroid Build Coastguard Worker      # This entry is needed so that `FFI.rs.cc` can resolve
1479*c8dee2aaSAndroid Build Coastguard Worker      # `#include "experimental/rust_png/ffi/FFI.h"`
1480*c8dee2aaSAndroid Build Coastguard Worker      ".",
1481*c8dee2aaSAndroid Build Coastguard Worker    ]
1482*c8dee2aaSAndroid Build Coastguard Worker  }
1483*c8dee2aaSAndroid Build Coastguard Worker  skia_source_set("rust_png_cxx_bridge") {
1484*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":rust_png_ffi_bazel_build" ]
1485*c8dee2aaSAndroid Build Coastguard Worker    public = [ "${root_out_dir}/experimental/rust_png/ffi/FFI.rs.h" ]
1486*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "${root_out_dir}/experimental/rust_png/ffi/FFI.rs.cc" ]
1487*c8dee2aaSAndroid Build Coastguard Worker    libs = [ "$root_out_dir/librust_png_ffi_rs.a" ]
1488*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":rust_png_cxx_bridge_public_config" ]
1489*c8dee2aaSAndroid Build Coastguard Worker    configs = [ ":rust_png_cxx_bridge_private_config" ]
1490*c8dee2aaSAndroid Build Coastguard Worker  }
1491*c8dee2aaSAndroid Build Coastguard Worker}
1492*c8dee2aaSAndroid Build Coastguard Worker
1493*c8dee2aaSAndroid Build Coastguard Workeroptional("rust_png_decode") {
1494*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_USE_RUST_PNG_DECODE" ]
1495*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_rust_png_decode
1496*c8dee2aaSAndroid Build Coastguard Worker  public = skia_codec_rust_png_public  # From `gn/codec.gni`
1497*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_codec_rust_png  # From `gn/codec.gni`
1498*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/SkPngRustDecoderTest.cpp" ]
1499*c8dee2aaSAndroid Build Coastguard Worker
1500*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1501*c8dee2aaSAndroid Build Coastguard Worker    ":rust_png_cxx_bridge",
1502*c8dee2aaSAndroid Build Coastguard Worker    ":rust_png_cxx_core_bazel_build",
1503*c8dee2aaSAndroid Build Coastguard Worker  ]
1504*c8dee2aaSAndroid Build Coastguard Worker  libs = [ "$root_out_dir/librust_png_cxx_core_lib.a" ]
1505*c8dee2aaSAndroid Build Coastguard Worker}
1506*c8dee2aaSAndroid Build Coastguard Worker
1507*c8dee2aaSAndroid Build Coastguard Workeroptional("rust_png_encode") {
1508*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_USE_RUST_PNG_ENCODE" ]
1509*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_rust_png_encode
1510*c8dee2aaSAndroid Build Coastguard Worker  public = skia_encode_rust_png_public  # From `gn/core.gni`
1511*c8dee2aaSAndroid Build Coastguard Worker  sources =
1512*c8dee2aaSAndroid Build Coastguard Worker      skia_encode_rust_png_srcs + skia_encode_png_base  # From `gn/core.gni`
1513*c8dee2aaSAndroid Build Coastguard Worker  sources_for_tests = [ "tests/SkPngRustEncoderTest.cpp" ]
1514*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1515*c8dee2aaSAndroid Build Coastguard Worker    ":rust_png_cxx_bridge",
1516*c8dee2aaSAndroid Build Coastguard Worker    ":rust_png_cxx_core_bazel_build",
1517*c8dee2aaSAndroid Build Coastguard Worker  ]
1518*c8dee2aaSAndroid Build Coastguard Worker  libs = [ "$root_out_dir/librust_png_cxx_core_lib.a" ]
1519*c8dee2aaSAndroid Build Coastguard Worker}
1520*c8dee2aaSAndroid Build Coastguard Worker
1521*c8dee2aaSAndroid Build Coastguard Workeroptional("webp_decode") {
1522*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libwebp_decode
1523*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_CODEC_DECODES_WEBP" ]
1524*c8dee2aaSAndroid Build Coastguard Worker
1525*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libwebp" ]
1526*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkWebpCodec.cpp" ]
1527*c8dee2aaSAndroid Build Coastguard Worker}
1528*c8dee2aaSAndroid Build Coastguard Worker
1529*c8dee2aaSAndroid Build Coastguard Workeroptional("webp_encode") {
1530*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_libwebp_encode && !skia_use_ndk_images
1531*c8dee2aaSAndroid Build Coastguard Worker  public = skia_encode_webp_public
1532*c8dee2aaSAndroid Build Coastguard Worker
1533*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/libwebp" ]
1534*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_encode_webp_srcs
1535*c8dee2aaSAndroid Build Coastguard Worker}
1536*c8dee2aaSAndroid Build Coastguard Worker
1537*c8dee2aaSAndroid Build Coastguard Workeroptional("wuffs") {
1538*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_wuffs
1539*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [
1540*c8dee2aaSAndroid Build Coastguard Worker    "SK_HAS_WUFFS_LIBRARY",
1541*c8dee2aaSAndroid Build Coastguard Worker    "SK_CODEC_DECODES_GIF",
1542*c8dee2aaSAndroid Build Coastguard Worker  ]
1543*c8dee2aaSAndroid Build Coastguard Worker
1544*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/wuffs" ]
1545*c8dee2aaSAndroid Build Coastguard Worker  sources = [ "src/codec/SkWuffsCodec.cpp" ]
1546*c8dee2aaSAndroid Build Coastguard Worker}
1547*c8dee2aaSAndroid Build Coastguard Worker
1548*c8dee2aaSAndroid Build Coastguard Workeroptional("xml") {
1549*c8dee2aaSAndroid Build Coastguard Worker  enabled = skia_use_expat || skia_use_jpeg_gainmaps
1550*c8dee2aaSAndroid Build Coastguard Worker  public_defines = [ "SK_XML" ]
1551*c8dee2aaSAndroid Build Coastguard Worker
1552*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "//third_party/expat" ]
1553*c8dee2aaSAndroid Build Coastguard Worker  sources = skia_xml_sources + skia_codec_xmp + [
1554*c8dee2aaSAndroid Build Coastguard Worker              "src/svg/SkSVGCanvas.cpp",
1555*c8dee2aaSAndroid Build Coastguard Worker              "src/svg/SkSVGDevice.cpp",
1556*c8dee2aaSAndroid Build Coastguard Worker            ]
1557*c8dee2aaSAndroid Build Coastguard Worker}
1558*c8dee2aaSAndroid Build Coastguard Worker
1559*c8dee2aaSAndroid Build Coastguard Workerif (skia_enable_ganesh && skia_generate_workarounds) {
1560*c8dee2aaSAndroid Build Coastguard Worker  action("workaround_list") {
1561*c8dee2aaSAndroid Build Coastguard Worker    script = "tools/build_workaround_header.py"
1562*c8dee2aaSAndroid Build Coastguard Worker
1563*c8dee2aaSAndroid Build Coastguard Worker    inputs = [ "src/gpu/gpu_workaround_list.txt" ]
1564*c8dee2aaSAndroid Build Coastguard Worker
1565*c8dee2aaSAndroid Build Coastguard Worker    # GN insists its outputs should go somewhere underneath root_out_dir, so we trick it with a
1566*c8dee2aaSAndroid Build Coastguard Worker    # path that starts with root_out_dir and then uses ".." to back up into the src dir.
1567*c8dee2aaSAndroid Build Coastguard Worker    output_file =
1568*c8dee2aaSAndroid Build Coastguard Worker        rebase_path("include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h",
1569*c8dee2aaSAndroid Build Coastguard Worker                    root_out_dir)
1570*c8dee2aaSAndroid Build Coastguard Worker
1571*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/$output_file" ]
1572*c8dee2aaSAndroid Build Coastguard Worker    args = [
1573*c8dee2aaSAndroid Build Coastguard Worker      "--output-file",
1574*c8dee2aaSAndroid Build Coastguard Worker      "$output_file",
1575*c8dee2aaSAndroid Build Coastguard Worker    ]
1576*c8dee2aaSAndroid Build Coastguard Worker
1577*c8dee2aaSAndroid Build Coastguard Worker    foreach(file, inputs) {
1578*c8dee2aaSAndroid Build Coastguard Worker      args += [ rebase_path(file, root_build_dir) ]
1579*c8dee2aaSAndroid Build Coastguard Worker    }
1580*c8dee2aaSAndroid Build Coastguard Worker  }
1581*c8dee2aaSAndroid Build Coastguard Worker}
1582*c8dee2aaSAndroid Build Coastguard Worker
1583*c8dee2aaSAndroid Build Coastguard Workerimport("gn/codec.gni")
1584*c8dee2aaSAndroid Build Coastguard Worker
1585*c8dee2aaSAndroid Build Coastguard Workerskia_component("skia") {
1586*c8dee2aaSAndroid Build Coastguard Worker  public_configs = [ ":skia_public" ]
1587*c8dee2aaSAndroid Build Coastguard Worker  configs = skia_library_configs
1588*c8dee2aaSAndroid Build Coastguard Worker
1589*c8dee2aaSAndroid Build Coastguard Worker  public_deps = [
1590*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_FontConfigInterface",
1591*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_android",
1592*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_android_ndk",
1593*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom_directory",
1594*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom_embedded",
1595*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_custom_empty",
1596*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_fontations_empty",
1597*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_fontconfig",
1598*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_fuchsia",
1599*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_mac_ct",
1600*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_win",
1601*c8dee2aaSAndroid Build Coastguard Worker    ":fontmgr_win_gdi",
1602*c8dee2aaSAndroid Build Coastguard Worker    ":gpu",
1603*c8dee2aaSAndroid Build Coastguard Worker    ":graphite",
1604*c8dee2aaSAndroid Build Coastguard Worker    ":jpeg_encode",
1605*c8dee2aaSAndroid Build Coastguard Worker    ":pdf",
1606*c8dee2aaSAndroid Build Coastguard Worker    ":png_encode",
1607*c8dee2aaSAndroid Build Coastguard Worker    ":webp_encode",
1608*c8dee2aaSAndroid Build Coastguard Worker    ":xps",
1609*c8dee2aaSAndroid Build Coastguard Worker  ]
1610*c8dee2aaSAndroid Build Coastguard Worker
1611*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1612*c8dee2aaSAndroid Build Coastguard Worker    ":android_utils",
1613*c8dee2aaSAndroid Build Coastguard Worker    ":avif",
1614*c8dee2aaSAndroid Build Coastguard Worker    ":crabbyavif",
1615*c8dee2aaSAndroid Build Coastguard Worker    ":heif",
1616*c8dee2aaSAndroid Build Coastguard Worker    ":hsw",
1617*c8dee2aaSAndroid Build Coastguard Worker    ":jpeg_decode",
1618*c8dee2aaSAndroid Build Coastguard Worker    ":jpegxl_decode",
1619*c8dee2aaSAndroid Build Coastguard Worker    ":lasx",
1620*c8dee2aaSAndroid Build Coastguard Worker    ":minify_sksl",
1621*c8dee2aaSAndroid Build Coastguard Worker    ":ndk_images",
1622*c8dee2aaSAndroid Build Coastguard Worker    ":png_decode",
1623*c8dee2aaSAndroid Build Coastguard Worker    ":raw",
1624*c8dee2aaSAndroid Build Coastguard Worker    ":skx",
1625*c8dee2aaSAndroid Build Coastguard Worker    ":typeface_fontations",
1626*c8dee2aaSAndroid Build Coastguard Worker    ":vello",
1627*c8dee2aaSAndroid Build Coastguard Worker    ":webp_decode",
1628*c8dee2aaSAndroid Build Coastguard Worker    ":wuffs",
1629*c8dee2aaSAndroid Build Coastguard Worker    ":xml",
1630*c8dee2aaSAndroid Build Coastguard Worker    "modules/skcms",
1631*c8dee2aaSAndroid Build Coastguard Worker  ]
1632*c8dee2aaSAndroid Build Coastguard Worker
1633*c8dee2aaSAndroid Build Coastguard Worker  public = skia_core_public
1634*c8dee2aaSAndroid Build Coastguard Worker  public += skia_codec_public
1635*c8dee2aaSAndroid Build Coastguard Worker  public += skia_utils_public
1636*c8dee2aaSAndroid Build Coastguard Worker  public += skia_effects_public
1637*c8dee2aaSAndroid Build Coastguard Worker  public += skia_effects_imagefilter_public
1638*c8dee2aaSAndroid Build Coastguard Worker
1639*c8dee2aaSAndroid Build Coastguard Worker  sources = []
1640*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_core_sources
1641*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_utils_private
1642*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_utils_chromium
1643*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_effects_sources
1644*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_colorfilters_sources
1645*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_effects_imagefilter_sources
1646*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_codec_shared
1647*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_codec_decode_bmp
1648*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_encode_srcs
1649*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_core_sources
1650*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_core_module_sources
1651*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_sksl_tracing_sources
1652*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_ports_sources
1653*c8dee2aaSAndroid Build Coastguard Worker  sources += [
1654*c8dee2aaSAndroid Build Coastguard Worker    "src/android/SkAndroidFrameworkUtils.cpp",
1655*c8dee2aaSAndroid Build Coastguard Worker    "src/android/SkAnimatedImage.cpp",
1656*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkAndroidCodec.cpp",
1657*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkAndroidCodecAdapter.cpp",
1658*c8dee2aaSAndroid Build Coastguard Worker    "src/codec/SkSampledCodec.cpp",
1659*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkDiscardableMemory_none.cpp",
1660*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkMemory_malloc.cpp",
1661*c8dee2aaSAndroid Build Coastguard Worker    "src/sfnt/SkOTTable_name.cpp",
1662*c8dee2aaSAndroid Build Coastguard Worker    "src/sfnt/SkOTUtils.cpp",
1663*c8dee2aaSAndroid Build Coastguard Worker  ]
1664*c8dee2aaSAndroid Build Coastguard Worker
1665*c8dee2aaSAndroid Build Coastguard Worker  defines = []
1666*c8dee2aaSAndroid Build Coastguard Worker  libs = []
1667*c8dee2aaSAndroid Build Coastguard Worker
1668*c8dee2aaSAndroid Build Coastguard Worker  if (skia_build_for_debugger) {
1669*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_BUILD_FOR_DEBUGGER" ]
1670*c8dee2aaSAndroid Build Coastguard Worker  }
1671*c8dee2aaSAndroid Build Coastguard Worker
1672*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_no_jpeg_encode) {
1673*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_no_encode_jpeg_srcs
1674*c8dee2aaSAndroid Build Coastguard Worker  }
1675*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_no_png_encode) {
1676*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_no_encode_png_srcs
1677*c8dee2aaSAndroid Build Coastguard Worker  }
1678*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_no_webp_encode) {
1679*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_no_encode_webp_srcs
1680*c8dee2aaSAndroid Build Coastguard Worker  }
1681*c8dee2aaSAndroid Build Coastguard Worker
1682*c8dee2aaSAndroid Build Coastguard Worker  if (is_win) {
1683*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_ports_windows_sources + [
1684*c8dee2aaSAndroid Build Coastguard Worker                 "src/ports/SkDebug_win.cpp",
1685*c8dee2aaSAndroid Build Coastguard Worker                 "src/ports/SkImageGeneratorWIC.cpp",
1686*c8dee2aaSAndroid Build Coastguard Worker               ]
1687*c8dee2aaSAndroid Build Coastguard Worker    libs += [
1688*c8dee2aaSAndroid Build Coastguard Worker      "Ole32.lib",
1689*c8dee2aaSAndroid Build Coastguard Worker      "OleAut32.lib",
1690*c8dee2aaSAndroid Build Coastguard Worker    ]
1691*c8dee2aaSAndroid Build Coastguard Worker
1692*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_winuwp) {
1693*c8dee2aaSAndroid Build Coastguard Worker      libs += [
1694*c8dee2aaSAndroid Build Coastguard Worker        "FontSub.lib",
1695*c8dee2aaSAndroid Build Coastguard Worker        "User32.lib",
1696*c8dee2aaSAndroid Build Coastguard Worker        "Usp10.lib",
1697*c8dee2aaSAndroid Build Coastguard Worker      ]
1698*c8dee2aaSAndroid Build Coastguard Worker    }
1699*c8dee2aaSAndroid Build Coastguard Worker  } else {
1700*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/ports/SkOSFile_posix.cpp" ]
1701*c8dee2aaSAndroid Build Coastguard Worker    if (is_ios) {
1702*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "src/ports/SkOSFile_ios.h" ]
1703*c8dee2aaSAndroid Build Coastguard Worker    }
1704*c8dee2aaSAndroid Build Coastguard Worker    libs += [ "dl" ]
1705*c8dee2aaSAndroid Build Coastguard Worker  }
1706*c8dee2aaSAndroid Build Coastguard Worker
1707*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
1708*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/expat" ]
1709*c8dee2aaSAndroid Build Coastguard Worker    if (defined(ndk) && ndk != "") {
1710*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/cpu-features" ]
1711*c8dee2aaSAndroid Build Coastguard Worker    }
1712*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/ports/SkDebug_android.cpp" ]
1713*c8dee2aaSAndroid Build Coastguard Worker    libs += [
1714*c8dee2aaSAndroid Build Coastguard Worker      "EGL",
1715*c8dee2aaSAndroid Build Coastguard Worker      "GLESv2",
1716*c8dee2aaSAndroid Build Coastguard Worker      "log",
1717*c8dee2aaSAndroid Build Coastguard Worker    ]
1718*c8dee2aaSAndroid Build Coastguard Worker  }
1719*c8dee2aaSAndroid Build Coastguard Worker
1720*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux || is_wasm) {
1721*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/ports/SkDebug_stdio.cpp" ]
1722*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_egl) {
1723*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "GLESv2" ]
1724*c8dee2aaSAndroid Build Coastguard Worker    }
1725*c8dee2aaSAndroid Build Coastguard Worker  }
1726*c8dee2aaSAndroid Build Coastguard Worker
1727*c8dee2aaSAndroid Build Coastguard Worker  if (is_mac) {
1728*c8dee2aaSAndroid Build Coastguard Worker    public += [ "include/ports/SkCFObject.h" ]
1729*c8dee2aaSAndroid Build Coastguard Worker    sources += [
1730*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/SkDebug_stdio.cpp",
1731*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/SkImageGeneratorCG.cpp",
1732*c8dee2aaSAndroid Build Coastguard Worker    ]
1733*c8dee2aaSAndroid Build Coastguard Worker    frameworks = [
1734*c8dee2aaSAndroid Build Coastguard Worker      "ApplicationServices.framework",
1735*c8dee2aaSAndroid Build Coastguard Worker      "OpenGL.framework",
1736*c8dee2aaSAndroid Build Coastguard Worker    ]
1737*c8dee2aaSAndroid Build Coastguard Worker  }
1738*c8dee2aaSAndroid Build Coastguard Worker
1739*c8dee2aaSAndroid Build Coastguard Worker  if (is_ios) {
1740*c8dee2aaSAndroid Build Coastguard Worker    public += [ "include/ports/SkCFObject.h" ]
1741*c8dee2aaSAndroid Build Coastguard Worker    sources += [
1742*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/SkDebug_stdio.cpp",
1743*c8dee2aaSAndroid Build Coastguard Worker      "src/ports/SkImageGeneratorCG.cpp",
1744*c8dee2aaSAndroid Build Coastguard Worker    ]
1745*c8dee2aaSAndroid Build Coastguard Worker    frameworks = [
1746*c8dee2aaSAndroid Build Coastguard Worker      "CoreFoundation.framework",
1747*c8dee2aaSAndroid Build Coastguard Worker      "ImageIO.framework",
1748*c8dee2aaSAndroid Build Coastguard Worker      "MobileCoreServices.framework",
1749*c8dee2aaSAndroid Build Coastguard Worker    ]
1750*c8dee2aaSAndroid Build Coastguard Worker  }
1751*c8dee2aaSAndroid Build Coastguard Worker
1752*c8dee2aaSAndroid Build Coastguard Worker  if (is_fuchsia) {
1753*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/ports/SkDebug_stdio.cpp" ]
1754*c8dee2aaSAndroid Build Coastguard Worker  }
1755*c8dee2aaSAndroid Build Coastguard Worker
1756*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_spirv_validation) {
1757*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/externals/spirv-tools:spvtools_val" ]
1758*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ENABLE_SPIRV_VALIDATION" ]
1759*c8dee2aaSAndroid Build Coastguard Worker  }
1760*c8dee2aaSAndroid Build Coastguard Worker
1761*c8dee2aaSAndroid Build Coastguard Worker  if (skia_include_multiframe_procs) {
1762*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "tools/SkSharingProc.cpp" ]
1763*c8dee2aaSAndroid Build Coastguard Worker  }
1764*c8dee2aaSAndroid Build Coastguard Worker
1765*c8dee2aaSAndroid Build Coastguard Worker  # Overrides TRACE_EVENT0..2 macros (etc) to map to Perfetto's tracing macros.
1766*c8dee2aaSAndroid Build Coastguard Worker  # Currently only supported in Android framework.
1767*c8dee2aaSAndroid Build Coastguard Worker  if (skia_android_framework_use_perfetto) {
1768*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_ANDROID_FRAMEWORK_USE_PERFETTO" ]
1769*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "src/android/SkAndroidFrameworkPerfettoStaticStorage.cpp" ]
1770*c8dee2aaSAndroid Build Coastguard Worker  }
1771*c8dee2aaSAndroid Build Coastguard Worker
1772*c8dee2aaSAndroid Build Coastguard Worker  if (!skia_enable_ganesh && !skia_enable_graphite) {
1773*c8dee2aaSAndroid Build Coastguard Worker    sources += skia_no_slug_srcs
1774*c8dee2aaSAndroid Build Coastguard Worker  }
1775*c8dee2aaSAndroid Build Coastguard Worker}
1776*c8dee2aaSAndroid Build Coastguard Worker
1777*c8dee2aaSAndroid Build Coastguard Worker# DebugCanvas used in experimental/wasm-skp-debugger
1778*c8dee2aaSAndroid Build Coastguard Workerif (is_wasm) {
1779*c8dee2aaSAndroid Build Coastguard Worker  skia_static_library("debugcanvas") {
1780*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":skia_public" ]
1781*c8dee2aaSAndroid Build Coastguard Worker
1782*c8dee2aaSAndroid Build Coastguard Worker    sources = [
1783*c8dee2aaSAndroid Build Coastguard Worker      "tools/SkSharingProc.cpp",
1784*c8dee2aaSAndroid Build Coastguard Worker      "tools/UrlDataManager.cpp",
1785*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugCanvas.cpp",
1786*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugLayerManager.cpp",
1787*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DrawCommand.cpp",
1788*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/JsonWriteBuffer.cpp",
1789*c8dee2aaSAndroid Build Coastguard Worker    ]
1790*c8dee2aaSAndroid Build Coastguard Worker  }
1791*c8dee2aaSAndroid Build Coastguard Worker}
1792*c8dee2aaSAndroid Build Coastguard Worker
1793*c8dee2aaSAndroid Build Coastguard Workerskia_static_library("pathkit") {
1794*c8dee2aaSAndroid Build Coastguard Worker  check_includes = false
1795*c8dee2aaSAndroid Build Coastguard Worker  public_configs = [ ":skia_public" ]
1796*c8dee2aaSAndroid Build Coastguard Worker  configs = skia_library_configs
1797*c8dee2aaSAndroid Build Coastguard Worker
1798*c8dee2aaSAndroid Build Coastguard Worker  deps = [ ":hsw" ]
1799*c8dee2aaSAndroid Build Coastguard Worker
1800*c8dee2aaSAndroid Build Coastguard Worker  sources = []
1801*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_pathops_sources
1802*c8dee2aaSAndroid Build Coastguard Worker  sources += skia_pathops_public
1803*c8dee2aaSAndroid Build Coastguard Worker  sources += [
1804*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkArenaAlloc.cpp",
1805*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkBezierCurves.cpp",
1806*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkContainers.cpp",
1807*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkCubics.cpp",
1808*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkFloatingPoint.cpp",
1809*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkMalloc.cpp",
1810*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkMathPriv.cpp",
1811*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkQuads.cpp",
1812*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkSafeMath.cpp",
1813*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkSemaphore.cpp",
1814*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkTDArray.cpp",
1815*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkThreadID.cpp",
1816*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkUTF.cpp",
1817*c8dee2aaSAndroid Build Coastguard Worker    "src/base/SkUtils.cpp",
1818*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkAnalyticEdge.cpp",
1819*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkContourMeasure.cpp",
1820*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkCubicMap.cpp",
1821*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkEdge.cpp",
1822*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkEdgeBuilder.cpp",
1823*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkEdgeClipper.cpp",
1824*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkGeometry.cpp",
1825*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkIDChangeListener.cpp",
1826*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkLineClipper.cpp",
1827*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkMallocPixelRef.cpp",
1828*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkMatrix.cpp",
1829*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkOpts.cpp",
1830*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPaint.cpp",
1831*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPaintPriv.cpp",
1832*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPath.cpp",
1833*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPathBuilder.cpp",
1834*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPathEffect.cpp",
1835*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPathMeasure.cpp",
1836*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPathRef.cpp",
1837*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPathUtils.cpp",
1838*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkPoint.cpp",
1839*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkRRect.cpp",
1840*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkReadBuffer.cpp",
1841*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkRect.cpp",
1842*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkStream.cpp",
1843*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkString.cpp",
1844*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkStringUtils.cpp",
1845*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkStroke.cpp",
1846*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkStrokeRec.cpp",
1847*c8dee2aaSAndroid Build Coastguard Worker    "src/core/SkStrokerPriv.cpp",
1848*c8dee2aaSAndroid Build Coastguard Worker    "src/effects/SkDashPathEffect.cpp",
1849*c8dee2aaSAndroid Build Coastguard Worker    "src/effects/SkTrimPathEffect.cpp",
1850*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkDebug_stdio.cpp",
1851*c8dee2aaSAndroid Build Coastguard Worker    "src/ports/SkMemory_malloc.cpp",
1852*c8dee2aaSAndroid Build Coastguard Worker    "src/utils/SkDashPath.cpp",
1853*c8dee2aaSAndroid Build Coastguard Worker    "src/utils/SkParse.cpp",
1854*c8dee2aaSAndroid Build Coastguard Worker    "src/utils/SkParsePath.cpp",
1855*c8dee2aaSAndroid Build Coastguard Worker  ]
1856*c8dee2aaSAndroid Build Coastguard Worker}
1857*c8dee2aaSAndroid Build Coastguard Worker
1858*c8dee2aaSAndroid Build Coastguard Workergroup("modules") {
1859*c8dee2aaSAndroid Build Coastguard Worker  deps = [
1860*c8dee2aaSAndroid Build Coastguard Worker    "modules/bentleyottmann",
1861*c8dee2aaSAndroid Build Coastguard Worker    "modules/skottie",
1862*c8dee2aaSAndroid Build Coastguard Worker    "modules/skparagraph",
1863*c8dee2aaSAndroid Build Coastguard Worker    "modules/skshaper",
1864*c8dee2aaSAndroid Build Coastguard Worker    "modules/svg",
1865*c8dee2aaSAndroid Build Coastguard Worker  ]
1866*c8dee2aaSAndroid Build Coastguard Worker
1867*c8dee2aaSAndroid Build Coastguard Worker  if (is_wasm) {
1868*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "modules/canvaskit" ]
1869*c8dee2aaSAndroid Build Coastguard Worker  }
1870*c8dee2aaSAndroid Build Coastguard Worker}
1871*c8dee2aaSAndroid Build Coastguard Worker
1872*c8dee2aaSAndroid Build Coastguard Workerconfig("use_skia_vulkan_headers") {
1873*c8dee2aaSAndroid Build Coastguard Worker  include_dirs = [ "include/third_party/vulkan" ]
1874*c8dee2aaSAndroid Build Coastguard Worker  defines = [ "SK_USE_INTERNAL_VULKAN_HEADERS" ]
1875*c8dee2aaSAndroid Build Coastguard Worker}
1876*c8dee2aaSAndroid Build Coastguard Worker
1877*c8dee2aaSAndroid Build Coastguard Workerconfig("vulkan_memory_allocator") {
1878*c8dee2aaSAndroid Build Coastguard Worker  include_dirs = [ "$skia_vulkan_memory_allocator_dir/include" ]
1879*c8dee2aaSAndroid Build Coastguard Worker}
1880*c8dee2aaSAndroid Build Coastguard Worker
1881*c8dee2aaSAndroid Build Coastguard Worker# Targets guarded by skia_enable_tools may use //third_party freely.
1882*c8dee2aaSAndroid Build Coastguard Workerif (skia_enable_tools) {
1883*c8dee2aaSAndroid Build Coastguard Worker  skia_public_includes = [
1884*c8dee2aaSAndroid Build Coastguard Worker    "client_utils/android",
1885*c8dee2aaSAndroid Build Coastguard Worker    "include/android",
1886*c8dee2aaSAndroid Build Coastguard Worker    "include/codec",
1887*c8dee2aaSAndroid Build Coastguard Worker    "include/config",
1888*c8dee2aaSAndroid Build Coastguard Worker    "include/core",
1889*c8dee2aaSAndroid Build Coastguard Worker    "include/docs",
1890*c8dee2aaSAndroid Build Coastguard Worker    "include/effects",
1891*c8dee2aaSAndroid Build Coastguard Worker    "include/encode",
1892*c8dee2aaSAndroid Build Coastguard Worker    "include/gpu",
1893*c8dee2aaSAndroid Build Coastguard Worker    "include/pathops",
1894*c8dee2aaSAndroid Build Coastguard Worker    "include/ports",
1895*c8dee2aaSAndroid Build Coastguard Worker    "include/svg",
1896*c8dee2aaSAndroid Build Coastguard Worker    "include/utils",
1897*c8dee2aaSAndroid Build Coastguard Worker    "include/utils/mac",
1898*c8dee2aaSAndroid Build Coastguard Worker    "modules/skottie/include",
1899*c8dee2aaSAndroid Build Coastguard Worker    "modules/skparagraph/include",
1900*c8dee2aaSAndroid Build Coastguard Worker    "modules/skshaper/include",
1901*c8dee2aaSAndroid Build Coastguard Worker    "modules/svg/include",
1902*c8dee2aaSAndroid Build Coastguard Worker  ]
1903*c8dee2aaSAndroid Build Coastguard Worker
1904*c8dee2aaSAndroid Build Coastguard Worker  # Used by gn_to_bp.py to list our public include dirs.
1905*c8dee2aaSAndroid Build Coastguard Worker  skia_source_set("public") {
1906*c8dee2aaSAndroid Build Coastguard Worker    configs = [ ":skia_public" ]
1907*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = skia_public_includes
1908*c8dee2aaSAndroid Build Coastguard Worker  }
1909*c8dee2aaSAndroid Build Coastguard Worker
1910*c8dee2aaSAndroid Build Coastguard Worker  config("skia.h_config") {
1911*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "$target_gen_dir" ]
1912*c8dee2aaSAndroid Build Coastguard Worker  }
1913*c8dee2aaSAndroid Build Coastguard Worker  action("skia.h") {
1914*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":skia.h_config" ]
1915*c8dee2aaSAndroid Build Coastguard Worker    skia_h = "$target_gen_dir/skia.h"
1916*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/find_headers.py"
1917*c8dee2aaSAndroid Build Coastguard Worker
1918*c8dee2aaSAndroid Build Coastguard Worker    args = [ rebase_path("//bin/gn") ] + [ rebase_path("//") ] +
1919*c8dee2aaSAndroid Build Coastguard Worker           [ rebase_path(skia_h, root_build_dir) ] +
1920*c8dee2aaSAndroid Build Coastguard Worker           rebase_path(skia_public_includes)
1921*c8dee2aaSAndroid Build Coastguard Worker    depfile = "$skia_h.deps"
1922*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ skia_h ]
1923*c8dee2aaSAndroid Build Coastguard Worker  }
1924*c8dee2aaSAndroid Build Coastguard Worker
1925*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux && target_cpu == "x64") {
1926*c8dee2aaSAndroid Build Coastguard Worker    skia_executable("fiddle") {
1927*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
1928*c8dee2aaSAndroid Build Coastguard Worker      libs = []
1929*c8dee2aaSAndroid Build Coastguard Worker      sources = [
1930*c8dee2aaSAndroid Build Coastguard Worker        "tools/fiddle/draw.cpp",
1931*c8dee2aaSAndroid Build Coastguard Worker        "tools/fiddle/fiddle_main.cpp",
1932*c8dee2aaSAndroid Build Coastguard Worker      ]
1933*c8dee2aaSAndroid Build Coastguard Worker
1934*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_egl) {
1935*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/fiddle/egl_context.cpp" ]
1936*c8dee2aaSAndroid Build Coastguard Worker      } else {
1937*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/fiddle/null_context.cpp" ]
1938*c8dee2aaSAndroid Build Coastguard Worker      }
1939*c8dee2aaSAndroid Build Coastguard Worker      testonly = true
1940*c8dee2aaSAndroid Build Coastguard Worker      deps = [
1941*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
1942*c8dee2aaSAndroid Build Coastguard Worker        ":gpu_tool_utils",
1943*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
1944*c8dee2aaSAndroid Build Coastguard Worker        ":skia.h",
1945*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
1946*c8dee2aaSAndroid Build Coastguard Worker        "modules/skparagraph",
1947*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper",
1948*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
1949*c8dee2aaSAndroid Build Coastguard Worker      ]
1950*c8dee2aaSAndroid Build Coastguard Worker    }
1951*c8dee2aaSAndroid Build Coastguard Worker  }
1952*c8dee2aaSAndroid Build Coastguard Worker
1953*c8dee2aaSAndroid Build Coastguard Worker  config("cpp17") {
1954*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
1955*c8dee2aaSAndroid Build Coastguard Worker      cflags_cc = [ "/std:c++17" ]
1956*c8dee2aaSAndroid Build Coastguard Worker    } else {
1957*c8dee2aaSAndroid Build Coastguard Worker      cflags_cc = [ "-std=c++17" ]
1958*c8dee2aaSAndroid Build Coastguard Worker    }
1959*c8dee2aaSAndroid Build Coastguard Worker  }
1960*c8dee2aaSAndroid Build Coastguard Worker
1961*c8dee2aaSAndroid Build Coastguard Worker  skia_source_set("public_headers_warnings_check") {
1962*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/public_headers_warnings_check.cpp" ]
1963*c8dee2aaSAndroid Build Coastguard Worker    configs = [
1964*c8dee2aaSAndroid Build Coastguard Worker      ":use_skia_vulkan_headers",
1965*c8dee2aaSAndroid Build Coastguard Worker      ":cpp17",
1966*c8dee2aaSAndroid Build Coastguard Worker    ]
1967*c8dee2aaSAndroid Build Coastguard Worker    if (defined(skia_header_target_default_configs)) {
1968*c8dee2aaSAndroid Build Coastguard Worker      configs += skia_header_target_default_configs
1969*c8dee2aaSAndroid Build Coastguard Worker    }
1970*c8dee2aaSAndroid Build Coastguard Worker    deps = [
1971*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
1972*c8dee2aaSAndroid Build Coastguard Worker      ":skia.h",
1973*c8dee2aaSAndroid Build Coastguard Worker      "modules/skottie",
1974*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper",
1975*c8dee2aaSAndroid Build Coastguard Worker    ]
1976*c8dee2aaSAndroid Build Coastguard Worker
1977*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_dawn) {
1978*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/externals/dawn/include/dawn:headers" ]
1979*c8dee2aaSAndroid Build Coastguard Worker    }
1980*c8dee2aaSAndroid Build Coastguard Worker  }
1981*c8dee2aaSAndroid Build Coastguard Worker
1982*c8dee2aaSAndroid Build Coastguard Worker  template("test_lib") {
1983*c8dee2aaSAndroid Build Coastguard Worker    config(target_name + "_config") {
1984*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.public_defines)) {
1985*c8dee2aaSAndroid Build Coastguard Worker        defines = invoker.public_defines
1986*c8dee2aaSAndroid Build Coastguard Worker      }
1987*c8dee2aaSAndroid Build Coastguard Worker    }
1988*c8dee2aaSAndroid Build Coastguard Worker    skia_source_set(target_name) {
1989*c8dee2aaSAndroid Build Coastguard Worker      forward_variables_from(invoker, "*", [])
1990*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
1991*c8dee2aaSAndroid Build Coastguard Worker      public_configs = [
1992*c8dee2aaSAndroid Build Coastguard Worker        ":" + target_name + "_config",
1993*c8dee2aaSAndroid Build Coastguard Worker        ":skia_private",
1994*c8dee2aaSAndroid Build Coastguard Worker      ]
1995*c8dee2aaSAndroid Build Coastguard Worker
1996*c8dee2aaSAndroid Build Coastguard Worker      if (!defined(deps)) {
1997*c8dee2aaSAndroid Build Coastguard Worker        deps = []
1998*c8dee2aaSAndroid Build Coastguard Worker      }
1999*c8dee2aaSAndroid Build Coastguard Worker      deps += [ ":skia" ]
2000*c8dee2aaSAndroid Build Coastguard Worker      testonly = true
2001*c8dee2aaSAndroid Build Coastguard Worker    }
2002*c8dee2aaSAndroid Build Coastguard Worker  }
2003*c8dee2aaSAndroid Build Coastguard Worker
2004*c8dee2aaSAndroid Build Coastguard Worker  template("test_app") {
2005*c8dee2aaSAndroid Build Coastguard Worker    if (is_ios) {
2006*c8dee2aaSAndroid Build Coastguard Worker      ios_app_bundle(target_name) {
2007*c8dee2aaSAndroid Build Coastguard Worker        forward_variables_from(invoker,
2008*c8dee2aaSAndroid Build Coastguard Worker                               "*",
2009*c8dee2aaSAndroid Build Coastguard Worker                               [
2010*c8dee2aaSAndroid Build Coastguard Worker                                 "output_name",
2011*c8dee2aaSAndroid Build Coastguard Worker                                 "visibility",
2012*c8dee2aaSAndroid Build Coastguard Worker                                 "is_shared_library",
2013*c8dee2aaSAndroid Build Coastguard Worker                               ])
2014*c8dee2aaSAndroid Build Coastguard Worker        testonly = true
2015*c8dee2aaSAndroid Build Coastguard Worker        extra_configs = [ ":skia_private" ]
2016*c8dee2aaSAndroid Build Coastguard Worker        launchscreen = "platform_tools/ios/app/LaunchScreen.storyboard"
2017*c8dee2aaSAndroid Build Coastguard Worker        data_sources = [ "resources" ]
2018*c8dee2aaSAndroid Build Coastguard Worker        if ("True" == exec_script("//gn/checkdir.py",
2019*c8dee2aaSAndroid Build Coastguard Worker                                  [ rebase_path("skps", root_build_dir) ],
2020*c8dee2aaSAndroid Build Coastguard Worker                                  "trim string")) {
2021*c8dee2aaSAndroid Build Coastguard Worker          data_sources += [ "skps" ]
2022*c8dee2aaSAndroid Build Coastguard Worker        }
2023*c8dee2aaSAndroid Build Coastguard Worker        if ("True" == exec_script("//gn/checkdir.py",
2024*c8dee2aaSAndroid Build Coastguard Worker                                  [ rebase_path("mskps", root_build_dir) ],
2025*c8dee2aaSAndroid Build Coastguard Worker                                  "trim string")) {
2026*c8dee2aaSAndroid Build Coastguard Worker          data_sources += [ "mskps" ]
2027*c8dee2aaSAndroid Build Coastguard Worker        }
2028*c8dee2aaSAndroid Build Coastguard Worker      }
2029*c8dee2aaSAndroid Build Coastguard Worker    } else {
2030*c8dee2aaSAndroid Build Coastguard Worker      # !is_ios
2031*c8dee2aaSAndroid Build Coastguard Worker
2032*c8dee2aaSAndroid Build Coastguard Worker      if (defined(invoker.is_shared_library) && invoker.is_shared_library) {
2033*c8dee2aaSAndroid Build Coastguard Worker        skia_shared_library("lib" + target_name) {
2034*c8dee2aaSAndroid Build Coastguard Worker          output_dir = root_build_dir
2035*c8dee2aaSAndroid Build Coastguard Worker          forward_variables_from(invoker, "*", [ "is_shared_library" ])
2036*c8dee2aaSAndroid Build Coastguard Worker          if (!defined(configs)) {
2037*c8dee2aaSAndroid Build Coastguard Worker            configs = []
2038*c8dee2aaSAndroid Build Coastguard Worker          }
2039*c8dee2aaSAndroid Build Coastguard Worker          configs += [ ":skia_private" ]
2040*c8dee2aaSAndroid Build Coastguard Worker          testonly = true
2041*c8dee2aaSAndroid Build Coastguard Worker        }
2042*c8dee2aaSAndroid Build Coastguard Worker      } else {
2043*c8dee2aaSAndroid Build Coastguard Worker        _executable = target_name
2044*c8dee2aaSAndroid Build Coastguard Worker        skia_executable(_executable) {
2045*c8dee2aaSAndroid Build Coastguard Worker          check_includes = false
2046*c8dee2aaSAndroid Build Coastguard Worker          output_dir = root_build_dir
2047*c8dee2aaSAndroid Build Coastguard Worker          forward_variables_from(invoker, "*", [ "is_shared_library" ])
2048*c8dee2aaSAndroid Build Coastguard Worker          if (!defined(configs)) {
2049*c8dee2aaSAndroid Build Coastguard Worker            configs = []
2050*c8dee2aaSAndroid Build Coastguard Worker          }
2051*c8dee2aaSAndroid Build Coastguard Worker          configs += [ ":skia_private" ]
2052*c8dee2aaSAndroid Build Coastguard Worker          testonly = true
2053*c8dee2aaSAndroid Build Coastguard Worker        }
2054*c8dee2aaSAndroid Build Coastguard Worker      }
2055*c8dee2aaSAndroid Build Coastguard Worker      if (is_android && skia_android_serial != "" && defined(_executable)) {
2056*c8dee2aaSAndroid Build Coastguard Worker        action("push_" + target_name) {
2057*c8dee2aaSAndroid Build Coastguard Worker          output_dir = root_build_dir
2058*c8dee2aaSAndroid Build Coastguard Worker          script = "gn/push_to_android.py"
2059*c8dee2aaSAndroid Build Coastguard Worker          deps = [ ":" + _executable ]
2060*c8dee2aaSAndroid Build Coastguard Worker          _stamp = "$target_gen_dir/$_executable.pushed_$skia_android_serial"
2061*c8dee2aaSAndroid Build Coastguard Worker          outputs = [ _stamp ]
2062*c8dee2aaSAndroid Build Coastguard Worker          args = [
2063*c8dee2aaSAndroid Build Coastguard Worker            rebase_path("$root_build_dir/$_executable"),
2064*c8dee2aaSAndroid Build Coastguard Worker            skia_android_serial,
2065*c8dee2aaSAndroid Build Coastguard Worker            rebase_path(_stamp),
2066*c8dee2aaSAndroid Build Coastguard Worker          ]
2067*c8dee2aaSAndroid Build Coastguard Worker          testonly = true
2068*c8dee2aaSAndroid Build Coastguard Worker        }
2069*c8dee2aaSAndroid Build Coastguard Worker      }
2070*c8dee2aaSAndroid Build Coastguard Worker    }
2071*c8dee2aaSAndroid Build Coastguard Worker  }
2072*c8dee2aaSAndroid Build Coastguard Worker
2073*c8dee2aaSAndroid Build Coastguard Worker  test_lib("load_dynamic_library") {
2074*c8dee2aaSAndroid Build Coastguard Worker    configs = [ ":skia_private" ]
2075*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":skia" ]
2076*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/library/LoadDynamicLibrary.h" ]
2077*c8dee2aaSAndroid Build Coastguard Worker    if (is_win) {
2078*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/library/LoadDynamicLibrary_win.cpp" ]
2079*c8dee2aaSAndroid Build Coastguard Worker    } else {
2080*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/library/LoadDynamicLibrary_posix.cpp" ]
2081*c8dee2aaSAndroid Build Coastguard Worker    }
2082*c8dee2aaSAndroid Build Coastguard Worker  }
2083*c8dee2aaSAndroid Build Coastguard Worker
2084*c8dee2aaSAndroid Build Coastguard Worker  test_lib("gpu_tool_utils") {
2085*c8dee2aaSAndroid Build Coastguard Worker    public_defines = []
2086*c8dee2aaSAndroid Build Coastguard Worker
2087*c8dee2aaSAndroid Build Coastguard Worker    # Bots and even devs may not have Vulkan headers, so put
2088*c8dee2aaSAndroid Build Coastguard Worker    # include/third_party/vulkan on our path so they're always available.
2089*c8dee2aaSAndroid Build Coastguard Worker    all_dependent_configs = [ ":use_skia_vulkan_headers" ]
2090*c8dee2aaSAndroid Build Coastguard Worker
2091*c8dee2aaSAndroid Build Coastguard Worker    defines = []
2092*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_discrete_gpu) {
2093*c8dee2aaSAndroid Build Coastguard Worker      defines += [ "SK_ENABLE_DISCRETE_GPU" ]
2094*c8dee2aaSAndroid Build Coastguard Worker    }
2095*c8dee2aaSAndroid Build Coastguard Worker
2096*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":load_dynamic_library" ]
2097*c8dee2aaSAndroid Build Coastguard Worker    public_deps = []
2098*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2099*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/BackendSurfaceFactory.cpp",
2100*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/BackendSurfaceFactory.h",
2101*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/BackendTextureImageFactory.cpp",
2102*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/BackendTextureImageFactory.h",
2103*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ContextType.cpp",
2104*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ContextType.h",
2105*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/FlushFinishTracker.cpp",
2106*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/FlushFinishTracker.h",
2107*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/GrContextFactory.cpp",
2108*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/GrContextFactory.h",
2109*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/GrTest.cpp",
2110*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ManagedBackendTexture.cpp",
2111*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ManagedBackendTexture.h",
2112*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/MemoryCache.cpp",
2113*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/MemoryCache.h",
2114*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ProtectedUtils.cpp",
2115*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ProtectedUtils.h",
2116*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ProxyUtils.cpp",
2117*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/ProxyUtils.h",
2118*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/TestCanvas.cpp",
2119*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/TestCanvas.h",
2120*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/TestContext.cpp",
2121*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/TestOps.cpp",
2122*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/TestOps.h",
2123*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/YUVUtils.cpp",
2124*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/YUVUtils.h",
2125*c8dee2aaSAndroid Build Coastguard Worker      "tools/gpu/mock/MockTestContext.cpp",
2126*c8dee2aaSAndroid Build Coastguard Worker      "tools/text/gpu/TextBlobTools.cpp",
2127*c8dee2aaSAndroid Build Coastguard Worker    ]
2128*c8dee2aaSAndroid Build Coastguard Worker
2129*c8dee2aaSAndroid Build Coastguard Worker    libs = []
2130*c8dee2aaSAndroid Build Coastguard Worker    frameworks = []
2131*c8dee2aaSAndroid Build Coastguard Worker
2132*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_gl) {
2133*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/gl/GLTestContext.cpp" ]
2134*c8dee2aaSAndroid Build Coastguard Worker      if (is_ios) {
2135*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/gpu/gl/iOS/CreatePlatformGLTestContext_iOS.mm" ]
2136*c8dee2aaSAndroid Build Coastguard Worker        frameworks += [ "OpenGLES.framework" ]
2137*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_mac) {
2138*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
2139*c8dee2aaSAndroid Build Coastguard Worker      }
2140*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_angle) {
2141*c8dee2aaSAndroid Build Coastguard Worker        deps += [ "//third_party/angle2" ]
2142*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
2143*c8dee2aaSAndroid Build Coastguard Worker      }
2144*c8dee2aaSAndroid Build Coastguard Worker    }
2145*c8dee2aaSAndroid Build Coastguard Worker
2146*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_gl && target_cpu != "wasm") {
2147*c8dee2aaSAndroid Build Coastguard Worker      if (is_android || skia_use_egl) {
2148*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
2149*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "EGL" ]
2150*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_linux) {
2151*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
2152*c8dee2aaSAndroid Build Coastguard Worker        libs += [
2153*c8dee2aaSAndroid Build Coastguard Worker          "GLU",
2154*c8dee2aaSAndroid Build Coastguard Worker          "GL",
2155*c8dee2aaSAndroid Build Coastguard Worker          "X11",
2156*c8dee2aaSAndroid Build Coastguard Worker        ]
2157*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_win) {
2158*c8dee2aaSAndroid Build Coastguard Worker        sources += [
2159*c8dee2aaSAndroid Build Coastguard Worker          "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp",
2160*c8dee2aaSAndroid Build Coastguard Worker          "tools/gpu/gl/win/SkWGL.h",
2161*c8dee2aaSAndroid Build Coastguard Worker          "tools/gpu/gl/win/SkWGL_win.cpp",
2162*c8dee2aaSAndroid Build Coastguard Worker        ]
2163*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "Gdi32.lib" ]
2164*c8dee2aaSAndroid Build Coastguard Worker        if (target_cpu != "arm64") {
2165*c8dee2aaSAndroid Build Coastguard Worker          libs += [ "OpenGL32.lib" ]
2166*c8dee2aaSAndroid Build Coastguard Worker        }
2167*c8dee2aaSAndroid Build Coastguard Worker      }
2168*c8dee2aaSAndroid Build Coastguard Worker    }
2169*c8dee2aaSAndroid Build Coastguard Worker
2170*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_vulkan) {
2171*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestContext.h" ]
2172*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
2173*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestHelper.h" ]
2174*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestHelper.cpp" ]
2175*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestMemoryAllocator.h" ]
2176*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestMemoryAllocator.cpp" ]
2177*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestUtils.h" ]
2178*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestUtils.cpp" ]
2179*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkYcbcrSamplerHelper.h" ]
2180*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkYcbcrSamplerHelper.cpp" ]
2181*c8dee2aaSAndroid Build Coastguard Worker      all_dependent_configs += [ ":vulkan_memory_allocator" ]
2182*c8dee2aaSAndroid Build Coastguard Worker    }
2183*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_metal) {
2184*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/mtl/MtlTestContext.mm" ]
2185*c8dee2aaSAndroid Build Coastguard Worker    }
2186*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_direct3d) {
2187*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/d3d/D3DTestContext.cpp" ]
2188*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/d3d/D3DTestUtils.cpp" ]
2189*c8dee2aaSAndroid Build Coastguard Worker    }
2190*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_dawn) {
2191*c8dee2aaSAndroid Build Coastguard Worker      public_deps += [ "//third_party/externals/dawn/include/dawn:headers" ]
2192*c8dee2aaSAndroid Build Coastguard Worker      if (is_clang) {
2193*c8dee2aaSAndroid Build Coastguard Worker        cflags_cc = [ "-Wno-microsoft-cast" ]
2194*c8dee2aaSAndroid Build Coastguard Worker      }
2195*c8dee2aaSAndroid Build Coastguard Worker    }
2196*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_ganesh) {
2197*c8dee2aaSAndroid Build Coastguard Worker      sources -= [ "tools/gpu/GrTest.cpp" ]
2198*c8dee2aaSAndroid Build Coastguard Worker      sources -= [ "tools/gpu/TestOps.cpp" ]
2199*c8dee2aaSAndroid Build Coastguard Worker      sources -= [ "tools/gpu/TestOps.h" ]
2200*c8dee2aaSAndroid Build Coastguard Worker    } else {
2201*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2202*c8dee2aaSAndroid Build Coastguard Worker        "tools/gpu/ganesh/AtlasTextOpTools.cpp",
2203*c8dee2aaSAndroid Build Coastguard Worker        "tools/gpu/ganesh/AtlasTextOpTools.h",
2204*c8dee2aaSAndroid Build Coastguard Worker        "tools/gpu/ganesh/GrAtlasTools.cpp",
2205*c8dee2aaSAndroid Build Coastguard Worker        "tools/gpu/ganesh/GrAtlasTools.h",
2206*c8dee2aaSAndroid Build Coastguard Worker      ]
2207*c8dee2aaSAndroid Build Coastguard Worker    }
2208*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite) {
2209*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2210*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/ContextFactory.cpp",
2211*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/ContextFactory.h",
2212*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/GraphiteTestContext.cpp",
2213*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/GraphiteTestContext.h",
2214*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/GraphiteToolUtils.cpp",
2215*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/GraphiteToolUtils.h",
2216*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/ProtectedUtils_Graphite.cpp",
2217*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/UniqueKeyUtils.cpp",
2218*c8dee2aaSAndroid Build Coastguard Worker        "tools/graphite/UniqueKeyUtils.h",
2219*c8dee2aaSAndroid Build Coastguard Worker      ]
2220*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_dawn) {
2221*c8dee2aaSAndroid Build Coastguard Worker        sources += [
2222*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/dawn/GraphiteDawnTestContext.cpp",
2223*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/dawn/GraphiteDawnTestContext.h",
2224*c8dee2aaSAndroid Build Coastguard Worker        ]
2225*c8dee2aaSAndroid Build Coastguard Worker      }
2226*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_metal) {
2227*c8dee2aaSAndroid Build Coastguard Worker        sources += [
2228*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/mtl/GraphiteMtlTestContext.h",
2229*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/mtl/GraphiteMtlTestContext.mm",
2230*c8dee2aaSAndroid Build Coastguard Worker        ]
2231*c8dee2aaSAndroid Build Coastguard Worker      }
2232*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_vulkan) {
2233*c8dee2aaSAndroid Build Coastguard Worker        sources += [
2234*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/vk/GraphiteVulkanTestContext.cpp",
2235*c8dee2aaSAndroid Build Coastguard Worker          "tools/graphite/vk/GraphiteVulkanTestContext.h",
2236*c8dee2aaSAndroid Build Coastguard Worker        ]
2237*c8dee2aaSAndroid Build Coastguard Worker      }
2238*c8dee2aaSAndroid Build Coastguard Worker    }
2239*c8dee2aaSAndroid Build Coastguard Worker
2240*c8dee2aaSAndroid Build Coastguard Worker    if (is_fuchsia && using_fuchsia_sdk) {
2241*c8dee2aaSAndroid Build Coastguard Worker      libs +=
2242*c8dee2aaSAndroid Build Coastguard Worker          [ "${fuchsia_sdk_path}/arch/${target_cpu}/sysroot/lib/libzircon.so" ]
2243*c8dee2aaSAndroid Build Coastguard Worker    }
2244*c8dee2aaSAndroid Build Coastguard Worker  }  # test_lib("gpu_tool_utils")
2245*c8dee2aaSAndroid Build Coastguard Worker
2246*c8dee2aaSAndroid Build Coastguard Worker  test_lib("flags") {
2247*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2248*c8dee2aaSAndroid Build Coastguard Worker      "tools/flags/CommandLineFlags.cpp",
2249*c8dee2aaSAndroid Build Coastguard Worker      "tools/flags/CommandLineFlags.h",
2250*c8dee2aaSAndroid Build Coastguard Worker    ]
2251*c8dee2aaSAndroid Build Coastguard Worker  }
2252*c8dee2aaSAndroid Build Coastguard Worker
2253*c8dee2aaSAndroid Build Coastguard Worker  test_lib("common_flags_config") {
2254*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2255*c8dee2aaSAndroid Build Coastguard Worker      "tools/flags/CommonFlags.h",
2256*c8dee2aaSAndroid Build Coastguard Worker      "tools/flags/CommonFlagsConfig.cpp",
2257*c8dee2aaSAndroid Build Coastguard Worker      "tools/flags/CommonFlagsConfig.h",
2258*c8dee2aaSAndroid Build Coastguard Worker    ]
2259*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2260*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":gpu_tool_utils" ]
2261*c8dee2aaSAndroid Build Coastguard Worker  }
2262*c8dee2aaSAndroid Build Coastguard Worker  test_lib("common_flags_gpu") {
2263*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/flags/CommonFlagsGanesh.cpp" ]
2264*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2265*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":gpu_tool_utils" ]
2266*c8dee2aaSAndroid Build Coastguard Worker  }
2267*c8dee2aaSAndroid Build Coastguard Worker  test_lib("common_flags_graphite") {
2268*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/flags/CommonFlagsGraphite.cpp" ]
2269*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2270*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":gpu_tool_utils" ]
2271*c8dee2aaSAndroid Build Coastguard Worker  }
2272*c8dee2aaSAndroid Build Coastguard Worker  test_lib("common_flags_images") {
2273*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/flags/CommonFlagsImages.cpp" ]
2274*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2275*c8dee2aaSAndroid Build Coastguard Worker  }
2276*c8dee2aaSAndroid Build Coastguard Worker
2277*c8dee2aaSAndroid Build Coastguard Worker  test_lib("trace") {
2278*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2279*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2280*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/ChromeTracingTracer.cpp",
2281*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/ChromeTracingTracer.h",
2282*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/EventTracingPriv.cpp",
2283*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/EventTracingPriv.h",
2284*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/SkDebugfTracer.cpp",
2285*c8dee2aaSAndroid Build Coastguard Worker      "tools/trace/SkDebugfTracer.h",
2286*c8dee2aaSAndroid Build Coastguard Worker    ]
2287*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_perfetto) {
2288*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/perfetto" ]
2289*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2290*c8dee2aaSAndroid Build Coastguard Worker        "tools/trace/SkPerfettoTrace.cpp",
2291*c8dee2aaSAndroid Build Coastguard Worker        "tools/trace/SkPerfettoTrace.h",
2292*c8dee2aaSAndroid Build Coastguard Worker      ]
2293*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "SK_USE_PERFETTO" ]
2294*c8dee2aaSAndroid Build Coastguard Worker    }
2295*c8dee2aaSAndroid Build Coastguard Worker  }
2296*c8dee2aaSAndroid Build Coastguard Worker
2297*c8dee2aaSAndroid Build Coastguard Worker  test_lib("tool_utils") {
2298*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2299*c8dee2aaSAndroid Build Coastguard Worker      "tools/AndroidSkDebugToStdOut.cpp",
2300*c8dee2aaSAndroid Build Coastguard Worker      "tools/AutoreleasePool.h",
2301*c8dee2aaSAndroid Build Coastguard Worker      "tools/DDLPromiseImageHelper.cpp",
2302*c8dee2aaSAndroid Build Coastguard Worker      "tools/DDLPromiseImageHelper.h",
2303*c8dee2aaSAndroid Build Coastguard Worker      "tools/DDLTileHelper.cpp",
2304*c8dee2aaSAndroid Build Coastguard Worker      "tools/DDLTileHelper.h",
2305*c8dee2aaSAndroid Build Coastguard Worker      "tools/DecodeUtils.cpp",
2306*c8dee2aaSAndroid Build Coastguard Worker      "tools/DecodeUtils.h",
2307*c8dee2aaSAndroid Build Coastguard Worker      "tools/EncodeUtils.cpp",
2308*c8dee2aaSAndroid Build Coastguard Worker      "tools/EncodeUtils.h",
2309*c8dee2aaSAndroid Build Coastguard Worker      "tools/GpuToolUtils.h",
2310*c8dee2aaSAndroid Build Coastguard Worker      "tools/LsanSuppressions.cpp",
2311*c8dee2aaSAndroid Build Coastguard Worker      "tools/MSKPPlayer.cpp",
2312*c8dee2aaSAndroid Build Coastguard Worker      "tools/MSKPPlayer.h",
2313*c8dee2aaSAndroid Build Coastguard Worker      "tools/ProcStats.cpp",
2314*c8dee2aaSAndroid Build Coastguard Worker      "tools/ProcStats.h",
2315*c8dee2aaSAndroid Build Coastguard Worker      "tools/Resources.cpp",
2316*c8dee2aaSAndroid Build Coastguard Worker      "tools/Resources.h",
2317*c8dee2aaSAndroid Build Coastguard Worker      "tools/RuntimeBlendUtils.cpp",
2318*c8dee2aaSAndroid Build Coastguard Worker      "tools/RuntimeBlendUtils.h",
2319*c8dee2aaSAndroid Build Coastguard Worker      "tools/SkMetaData.cpp",
2320*c8dee2aaSAndroid Build Coastguard Worker      "tools/SkMetaData.h",
2321*c8dee2aaSAndroid Build Coastguard Worker      "tools/SkSharingProc.cpp",
2322*c8dee2aaSAndroid Build Coastguard Worker      "tools/SkSharingProc.h",
2323*c8dee2aaSAndroid Build Coastguard Worker      "tools/Stats.h",
2324*c8dee2aaSAndroid Build Coastguard Worker      "tools/TestFontDataProvider.cpp",
2325*c8dee2aaSAndroid Build Coastguard Worker      "tools/TestFontDataProvider.h",
2326*c8dee2aaSAndroid Build Coastguard Worker      "tools/ToolUtils.cpp",
2327*c8dee2aaSAndroid Build Coastguard Worker      "tools/ToolUtils.h",
2328*c8dee2aaSAndroid Build Coastguard Worker      "tools/TsanSuppressions.cpp",
2329*c8dee2aaSAndroid Build Coastguard Worker      "tools/UrlDataManager.cpp",
2330*c8dee2aaSAndroid Build Coastguard Worker      "tools/UrlDataManager.h",
2331*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugCanvas.cpp",
2332*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugCanvas.h",
2333*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugLayerManager.cpp",
2334*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugLayerManager.h",
2335*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DrawCommand.cpp",
2336*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DrawCommand.h",
2337*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/JsonWriteBuffer.cpp",
2338*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/JsonWriteBuffer.h",
2339*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/FontToolUtils.cpp",
2340*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/FontToolUtils.h",
2341*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/RandomScalerContext.cpp",
2342*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/RandomScalerContext.h",
2343*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestEmptyTypeface.h",
2344*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestFontMgr.cpp",
2345*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestFontMgr.h",
2346*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestSVGTypeface.cpp",
2347*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestSVGTypeface.h",
2348*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestTypeface.cpp",
2349*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/TestTypeface.h",
2350*c8dee2aaSAndroid Build Coastguard Worker      "tools/text/SkTextBlobTrace.cpp",
2351*c8dee2aaSAndroid Build Coastguard Worker      "tools/text/SkTextBlobTrace.h",
2352*c8dee2aaSAndroid Build Coastguard Worker      "tools/timer/TimeUtils.h",
2353*c8dee2aaSAndroid Build Coastguard Worker      "tools/timer/Timer.cpp",
2354*c8dee2aaSAndroid Build Coastguard Worker      "tools/timer/Timer.h",
2355*c8dee2aaSAndroid Build Coastguard Worker    ]
2356*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_svg) {
2357*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2358*c8dee2aaSAndroid Build Coastguard Worker        "tools/SvgPathExtractor.cpp",
2359*c8dee2aaSAndroid Build Coastguard Worker        "tools/SvgPathExtractor.h",
2360*c8dee2aaSAndroid Build Coastguard Worker      ]
2361*c8dee2aaSAndroid Build Coastguard Worker    }
2362*c8dee2aaSAndroid Build Coastguard Worker    if (target_cpu != "wasm") {
2363*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/CrashHandler.cpp" ]
2364*c8dee2aaSAndroid Build Coastguard Worker    }
2365*c8dee2aaSAndroid Build Coastguard Worker    libs = []
2366*c8dee2aaSAndroid Build Coastguard Worker    frameworks = []
2367*c8dee2aaSAndroid Build Coastguard Worker    if (is_ios) {
2368*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/ios_utils.m" ]
2369*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/ios_utils.h" ]
2370*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/AutoreleasePool.mm" ]
2371*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "Foundation.framework" ]
2372*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac) {
2373*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/AutoreleasePool.mm" ]
2374*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "Foundation.framework" ]
2375*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win && !skia_enable_winuwp) {
2376*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "DbgHelp.lib" ]
2377*c8dee2aaSAndroid Build Coastguard Worker    }
2378*c8dee2aaSAndroid Build Coastguard Worker
2379*c8dee2aaSAndroid Build Coastguard Worker    defines = []
2380*c8dee2aaSAndroid Build Coastguard Worker    if (skia_tools_require_resources) {
2381*c8dee2aaSAndroid Build Coastguard Worker      defines += [ "SK_TOOLS_REQUIRE_RESOURCES" ]
2382*c8dee2aaSAndroid Build Coastguard Worker    }
2383*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":flags" ]
2384*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_svg) {
2385*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "modules/svg" ]
2386*c8dee2aaSAndroid Build Coastguard Worker    }
2387*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":gpu_tool_utils" ]
2388*c8dee2aaSAndroid Build Coastguard Worker  }
2389*c8dee2aaSAndroid Build Coastguard Worker
2390*c8dee2aaSAndroid Build Coastguard Worker  test_lib("etc1") {
2391*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "third_party/etc1/etc1.cpp" ]
2392*c8dee2aaSAndroid Build Coastguard Worker  }
2393*c8dee2aaSAndroid Build Coastguard Worker
2394*c8dee2aaSAndroid Build Coastguard Worker  import("gn/gm.gni")
2395*c8dee2aaSAndroid Build Coastguard Worker  test_lib("gm") {
2396*c8dee2aaSAndroid Build Coastguard Worker    sources = gm_sources
2397*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_gl) {
2398*c8dee2aaSAndroid Build Coastguard Worker      sources += gl_gm_sources
2399*c8dee2aaSAndroid Build Coastguard Worker    }
2400*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_ganesh) {
2401*c8dee2aaSAndroid Build Coastguard Worker      sources -= ganesh_gm_sources
2402*c8dee2aaSAndroid Build Coastguard Worker    }
2403*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_fontations) {
2404*c8dee2aaSAndroid Build Coastguard Worker      sources += fontations_gm_sources
2405*c8dee2aaSAndroid Build Coastguard Worker    }
2406*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2407*c8dee2aaSAndroid Build Coastguard Worker      ":etc1",
2408*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2409*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2410*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2411*c8dee2aaSAndroid Build Coastguard Worker      "modules/skottie",
2412*c8dee2aaSAndroid Build Coastguard Worker      "modules/skottie:gm",
2413*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph",
2414*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph:gm",
2415*c8dee2aaSAndroid Build Coastguard Worker      "modules/skresources",
2416*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper",
2417*c8dee2aaSAndroid Build Coastguard Worker    ]
2418*c8dee2aaSAndroid Build Coastguard Worker    if (is_skia_dev_build) {
2419*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "gm/fiddle.cpp" ]
2420*c8dee2aaSAndroid Build Coastguard Worker      deps += [ ":skia.h" ]
2421*c8dee2aaSAndroid Build Coastguard Worker    }
2422*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":gpu_tool_utils" ]
2423*c8dee2aaSAndroid Build Coastguard Worker
2424*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_ffmpeg) {
2425*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "experimental/ffmpeg:video_decoder" ]
2426*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "gm/video_decoder.cpp" ]
2427*c8dee2aaSAndroid Build Coastguard Worker    }
2428*c8dee2aaSAndroid Build Coastguard Worker  }
2429*c8dee2aaSAndroid Build Coastguard Worker
2430*c8dee2aaSAndroid Build Coastguard Worker  test_lib("test") {
2431*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2432*c8dee2aaSAndroid Build Coastguard Worker      "tests/CtsEnforcement.cpp",
2433*c8dee2aaSAndroid Build Coastguard Worker      "tests/Test.cpp",
2434*c8dee2aaSAndroid Build Coastguard Worker      "tests/Test.h",
2435*c8dee2aaSAndroid Build Coastguard Worker      "tests/TestHarness.cpp",
2436*c8dee2aaSAndroid Build Coastguard Worker      "tests/TestHarness.h",
2437*c8dee2aaSAndroid Build Coastguard Worker      "tests/TestUtils.cpp",
2438*c8dee2aaSAndroid Build Coastguard Worker      "tests/TestUtils.h",
2439*c8dee2aaSAndroid Build Coastguard Worker    ]
2440*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2441*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2442*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2443*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2444*c8dee2aaSAndroid Build Coastguard Worker    ]
2445*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [
2446*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",  # Test.h #includes headers from this target.
2447*c8dee2aaSAndroid Build Coastguard Worker    ]
2448*c8dee2aaSAndroid Build Coastguard Worker  }
2449*c8dee2aaSAndroid Build Coastguard Worker
2450*c8dee2aaSAndroid Build Coastguard Worker  import("gn/tests.gni")
2451*c8dee2aaSAndroid Build Coastguard Worker  test_lib("tests") {
2452*c8dee2aaSAndroid Build Coastguard Worker    sources = tests_sources + pathops_tests_sources
2453*c8dee2aaSAndroid Build Coastguard Worker    frameworks = []
2454*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_metal) {
2455*c8dee2aaSAndroid Build Coastguard Worker      sources += metal_tests_sources
2456*c8dee2aaSAndroid Build Coastguard Worker      cflags_objcc = [ "-fobjc-arc" ]
2457*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "MetalKit.framework" ]
2458*c8dee2aaSAndroid Build Coastguard Worker    }
2459*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_jpeg_gainmaps) {
2460*c8dee2aaSAndroid Build Coastguard Worker      sources += jpeg_gainmap_tests_sources
2461*c8dee2aaSAndroid Build Coastguard Worker    }
2462*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_gl) {
2463*c8dee2aaSAndroid Build Coastguard Worker      sources += gl_tests_sources
2464*c8dee2aaSAndroid Build Coastguard Worker    }
2465*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_vulkan) {
2466*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_gpu_vk_chromium_public
2467*c8dee2aaSAndroid Build Coastguard Worker      sources += skia_gpu_vk_chromium_private
2468*c8dee2aaSAndroid Build Coastguard Worker    }
2469*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite) {
2470*c8dee2aaSAndroid Build Coastguard Worker      sources += graphite_tests_sources
2471*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_dawn) {
2472*c8dee2aaSAndroid Build Coastguard Worker        sources += graphite_dawn_tests_sources
2473*c8dee2aaSAndroid Build Coastguard Worker      }
2474*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_metal) {
2475*c8dee2aaSAndroid Build Coastguard Worker        sources += graphite_metal_tests_sources
2476*c8dee2aaSAndroid Build Coastguard Worker      }
2477*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_vulkan) {
2478*c8dee2aaSAndroid Build Coastguard Worker        sources += graphite_vulkan_tests_sources
2479*c8dee2aaSAndroid Build Coastguard Worker      }
2480*c8dee2aaSAndroid Build Coastguard Worker    }
2481*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_ganesh) {
2482*c8dee2aaSAndroid Build Coastguard Worker      sources -= ganesh_tests_sources
2483*c8dee2aaSAndroid Build Coastguard Worker    }
2484*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_precompile) {
2485*c8dee2aaSAndroid Build Coastguard Worker      sources += precompile_tests_sources
2486*c8dee2aaSAndroid Build Coastguard Worker    }
2487*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2488*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2489*c8dee2aaSAndroid Build Coastguard Worker      ":fontmgr_android_tests",
2490*c8dee2aaSAndroid Build Coastguard Worker      ":fontmgr_fontconfig_tests",
2491*c8dee2aaSAndroid Build Coastguard Worker      ":fontmgr_mac_ct_tests",
2492*c8dee2aaSAndroid Build Coastguard Worker      ":fontscanner_tests",
2493*c8dee2aaSAndroid Build Coastguard Worker      ":rust_png_decode_tests",
2494*c8dee2aaSAndroid Build Coastguard Worker      ":rust_png_encode_tests",
2495*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2496*c8dee2aaSAndroid Build Coastguard Worker      ":test",
2497*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2498*c8dee2aaSAndroid Build Coastguard Worker      ":typeface_fontations_tests",
2499*c8dee2aaSAndroid Build Coastguard Worker      "modules/bentleyottmann:tests",
2500*c8dee2aaSAndroid Build Coastguard Worker      "modules/skottie:tests",
2501*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph:tests",
2502*c8dee2aaSAndroid Build Coastguard Worker      "modules/sksg:tests",
2503*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper",
2504*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper:tests",
2505*c8dee2aaSAndroid Build Coastguard Worker      "modules/skunicode:tests",
2506*c8dee2aaSAndroid Build Coastguard Worker      "modules/svg:tests",
2507*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/libpng",
2508*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/libwebp",
2509*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/zlib",
2510*c8dee2aaSAndroid Build Coastguard Worker    ]
2511*c8dee2aaSAndroid Build Coastguard Worker  }
2512*c8dee2aaSAndroid Build Coastguard Worker
2513*c8dee2aaSAndroid Build Coastguard Worker  import("gn/bench.gni")
2514*c8dee2aaSAndroid Build Coastguard Worker  test_lib("bench") {
2515*c8dee2aaSAndroid Build Coastguard Worker    sources = bench_sources
2516*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite) {
2517*c8dee2aaSAndroid Build Coastguard Worker      sources += graphite_bench_sources
2518*c8dee2aaSAndroid Build Coastguard Worker    }
2519*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_ganesh) {
2520*c8dee2aaSAndroid Build Coastguard Worker      sources -= ganesh_bench_sources
2521*c8dee2aaSAndroid Build Coastguard Worker    }
2522*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2523*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2524*c8dee2aaSAndroid Build Coastguard Worker      ":gm",
2525*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",
2526*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2527*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2528*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph:bench",
2529*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper",
2530*c8dee2aaSAndroid Build Coastguard Worker    ]
2531*c8dee2aaSAndroid Build Coastguard Worker  }
2532*c8dee2aaSAndroid Build Coastguard Worker
2533*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux || is_mac || skia_enable_optimize_size) {
2534*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_skottie) {
2535*c8dee2aaSAndroid Build Coastguard Worker      test_app("skottie_tool") {
2536*c8dee2aaSAndroid Build Coastguard Worker        deps = [ "modules/skottie:tool" ]
2537*c8dee2aaSAndroid Build Coastguard Worker      }
2538*c8dee2aaSAndroid Build Coastguard Worker      test_app("skottie_tool_cpu") {
2539*c8dee2aaSAndroid Build Coastguard Worker        deps = [ "modules/skottie:tool_cpu" ]
2540*c8dee2aaSAndroid Build Coastguard Worker      }
2541*c8dee2aaSAndroid Build Coastguard Worker      test_app("skottie_tool_gpu") {
2542*c8dee2aaSAndroid Build Coastguard Worker        deps = [ "modules/skottie:tool_gpu" ]
2543*c8dee2aaSAndroid Build Coastguard Worker      }
2544*c8dee2aaSAndroid Build Coastguard Worker      test_app("skottie_preshape_tool") {
2545*c8dee2aaSAndroid Build Coastguard Worker        deps = [ "modules/skottie:preshape_tool" ]
2546*c8dee2aaSAndroid Build Coastguard Worker      }
2547*c8dee2aaSAndroid Build Coastguard Worker    }
2548*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_svg && skia_use_expat && defined(is_skia_standalone)) {
2549*c8dee2aaSAndroid Build Coastguard Worker      test_app("svg_tool") {
2550*c8dee2aaSAndroid Build Coastguard Worker        deps = [ "modules/svg:tool" ]
2551*c8dee2aaSAndroid Build Coastguard Worker      }
2552*c8dee2aaSAndroid Build Coastguard Worker    }
2553*c8dee2aaSAndroid Build Coastguard Worker  }
2554*c8dee2aaSAndroid Build Coastguard Worker
2555*c8dee2aaSAndroid Build Coastguard Worker  test_lib("hash_and_encode") {
2556*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2557*c8dee2aaSAndroid Build Coastguard Worker      "tools/HashAndEncode.cpp",
2558*c8dee2aaSAndroid Build Coastguard Worker      "tools/HashAndEncode.h",
2559*c8dee2aaSAndroid Build Coastguard Worker    ]
2560*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2561*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2562*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2563*c8dee2aaSAndroid Build Coastguard Worker      "//third_party/libpng",
2564*c8dee2aaSAndroid Build Coastguard Worker    ]
2565*c8dee2aaSAndroid Build Coastguard Worker  }
2566*c8dee2aaSAndroid Build Coastguard Worker  if (target_cpu != "wasm") {
2567*c8dee2aaSAndroid Build Coastguard Worker    test_app("convert-to-nia") {
2568*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/convert-to-nia.cpp" ]
2569*c8dee2aaSAndroid Build Coastguard Worker      deps = [ ":skia" ]
2570*c8dee2aaSAndroid Build Coastguard Worker    }
2571*c8dee2aaSAndroid Build Coastguard Worker    test_app("imgcvt") {
2572*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/imgcvt.cpp" ]
2573*c8dee2aaSAndroid Build Coastguard Worker      configs = [ ":use_skia_vulkan_headers" ]
2574*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2575*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2576*c8dee2aaSAndroid Build Coastguard Worker        "modules/skcms",
2577*c8dee2aaSAndroid Build Coastguard Worker      ]
2578*c8dee2aaSAndroid Build Coastguard Worker    }
2579*c8dee2aaSAndroid Build Coastguard Worker    test_app("dm") {
2580*c8dee2aaSAndroid Build Coastguard Worker      sources = [
2581*c8dee2aaSAndroid Build Coastguard Worker        "dm/DM.cpp",
2582*c8dee2aaSAndroid Build Coastguard Worker        "dm/DMGpuTestProcs.cpp",
2583*c8dee2aaSAndroid Build Coastguard Worker        "dm/DMJsonWriter.cpp",
2584*c8dee2aaSAndroid Build Coastguard Worker        "dm/DMJsonWriter.h",
2585*c8dee2aaSAndroid Build Coastguard Worker        "dm/DMSrcSink.cpp",
2586*c8dee2aaSAndroid Build Coastguard Worker        "dm/DMSrcSink.h",
2587*c8dee2aaSAndroid Build Coastguard Worker      ]
2588*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2589*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_config",
2590*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_gpu",
2591*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_graphite",
2592*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_images",
2593*c8dee2aaSAndroid Build Coastguard Worker        ":compile_all_sksl_tests",
2594*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
2595*c8dee2aaSAndroid Build Coastguard Worker        ":gm",
2596*c8dee2aaSAndroid Build Coastguard Worker        ":gpu_tool_utils",
2597*c8dee2aaSAndroid Build Coastguard Worker        ":hash_and_encode",
2598*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2599*c8dee2aaSAndroid Build Coastguard Worker        ":tests",
2600*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2601*c8dee2aaSAndroid Build Coastguard Worker        ":trace",
2602*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
2603*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie:utils",
2604*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper",
2605*c8dee2aaSAndroid Build Coastguard Worker        "modules/skunicode",
2606*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
2607*c8dee2aaSAndroid Build Coastguard Worker      ]
2608*c8dee2aaSAndroid Build Coastguard Worker    }
2609*c8dee2aaSAndroid Build Coastguard Worker    test_app("filterfuzz") {
2610*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "experimental/filterfuzz/filterfuzz.cpp" ]
2611*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2612*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
2613*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2614*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2615*c8dee2aaSAndroid Build Coastguard Worker      ]
2616*c8dee2aaSAndroid Build Coastguard Worker    }
2617*c8dee2aaSAndroid Build Coastguard Worker
2618*c8dee2aaSAndroid Build Coastguard Worker    if (!skia_enable_optimize_size && !skia_use_fontations &&
2619*c8dee2aaSAndroid Build Coastguard Worker        !skia_enable_vello_shaders) {
2620*c8dee2aaSAndroid Build Coastguard Worker      # optional separate library to dlopen when running CanvasStateTests.
2621*c8dee2aaSAndroid Build Coastguard Worker      skia_shared_library("canvas_state_lib") {
2622*c8dee2aaSAndroid Build Coastguard Worker        sources = [
2623*c8dee2aaSAndroid Build Coastguard Worker          "tests/CanvasStateHelpers.cpp",
2624*c8dee2aaSAndroid Build Coastguard Worker          "tests/CanvasStateHelpers.h",
2625*c8dee2aaSAndroid Build Coastguard Worker        ]
2626*c8dee2aaSAndroid Build Coastguard Worker        deps = [ ":skia" ]
2627*c8dee2aaSAndroid Build Coastguard Worker      }
2628*c8dee2aaSAndroid Build Coastguard Worker    }
2629*c8dee2aaSAndroid Build Coastguard Worker  }
2630*c8dee2aaSAndroid Build Coastguard Worker
2631*c8dee2aaSAndroid Build Coastguard Worker  if (!is_win) {
2632*c8dee2aaSAndroid Build Coastguard Worker    test_app("blob_cache_sim") {
2633*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/blob_cache_sim.cpp" ]
2634*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2635*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2636*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2637*c8dee2aaSAndroid Build Coastguard Worker      ]
2638*c8dee2aaSAndroid Build Coastguard Worker    }
2639*c8dee2aaSAndroid Build Coastguard Worker  }
2640*c8dee2aaSAndroid Build Coastguard Worker
2641*c8dee2aaSAndroid Build Coastguard Worker  test_app("nanobench") {
2642*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2643*c8dee2aaSAndroid Build Coastguard Worker      "bench/nanobench.cpp",
2644*c8dee2aaSAndroid Build Coastguard Worker      "bench/nanobench.h",
2645*c8dee2aaSAndroid Build Coastguard Worker    ]
2646*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2647*c8dee2aaSAndroid Build Coastguard Worker      ":bench",
2648*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_config",
2649*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_gpu",
2650*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_graphite",
2651*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_images",
2652*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2653*c8dee2aaSAndroid Build Coastguard Worker      ":gm",
2654*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",
2655*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2656*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2657*c8dee2aaSAndroid Build Coastguard Worker      ":trace",
2658*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph",
2659*c8dee2aaSAndroid Build Coastguard Worker      "modules/skshaper",
2660*c8dee2aaSAndroid Build Coastguard Worker      "modules/skunicode",
2661*c8dee2aaSAndroid Build Coastguard Worker      "modules/svg",
2662*c8dee2aaSAndroid Build Coastguard Worker    ]
2663*c8dee2aaSAndroid Build Coastguard Worker  }
2664*c8dee2aaSAndroid Build Coastguard Worker
2665*c8dee2aaSAndroid Build Coastguard Worker  test_app("skpinfo") {
2666*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/skpinfo.cpp" ]
2667*c8dee2aaSAndroid Build Coastguard Worker    configs = [ ":use_skia_vulkan_headers" ]
2668*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2669*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2670*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2671*c8dee2aaSAndroid Build Coastguard Worker    ]
2672*c8dee2aaSAndroid Build Coastguard Worker  }
2673*c8dee2aaSAndroid Build Coastguard Worker
2674*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_ffmpeg) {
2675*c8dee2aaSAndroid Build Coastguard Worker    test_app("skottie2movie") {
2676*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/skottie2movie.cpp" ]
2677*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2678*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
2679*c8dee2aaSAndroid Build Coastguard Worker        ":gpu_tool_utils",
2680*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2681*c8dee2aaSAndroid Build Coastguard Worker        "experimental/ffmpeg:video_encoder",
2682*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
2683*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie:utils",
2684*c8dee2aaSAndroid Build Coastguard Worker      ]
2685*c8dee2aaSAndroid Build Coastguard Worker    }
2686*c8dee2aaSAndroid Build Coastguard Worker  }
2687*c8dee2aaSAndroid Build Coastguard Worker
2688*c8dee2aaSAndroid Build Coastguard Worker  test_app("skpbench") {
2689*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2690*c8dee2aaSAndroid Build Coastguard Worker      "bench/BigPath.cpp",
2691*c8dee2aaSAndroid Build Coastguard Worker      "tools/skpbench/skpbench.cpp",
2692*c8dee2aaSAndroid Build Coastguard Worker    ]
2693*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2694*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_config",
2695*c8dee2aaSAndroid Build Coastguard Worker      ":common_flags_gpu",
2696*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2697*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",
2698*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2699*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2700*c8dee2aaSAndroid Build Coastguard Worker    ]
2701*c8dee2aaSAndroid Build Coastguard Worker  }
2702*c8dee2aaSAndroid Build Coastguard Worker
2703*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux && skia_use_icu) {
2704*c8dee2aaSAndroid Build Coastguard Worker    test_app("sktexttopdf") {
2705*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/using_skia_and_harfbuzz.cpp" ]
2706*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2707*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2708*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper",
2709*c8dee2aaSAndroid Build Coastguard Worker      ]
2710*c8dee2aaSAndroid Build Coastguard Worker    }
2711*c8dee2aaSAndroid Build Coastguard Worker  }
2712*c8dee2aaSAndroid Build Coastguard Worker
2713*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux || is_mac) {
2714*c8dee2aaSAndroid Build Coastguard Worker    test_app("create_test_font") {
2715*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/fonts/create_test_font.cpp" ]
2716*c8dee2aaSAndroid Build Coastguard Worker      deps = [ ":skia" ]
2717*c8dee2aaSAndroid Build Coastguard Worker      assert_no_deps = [
2718*c8dee2aaSAndroid Build Coastguard Worker        # tool_utils requires the output of this app.
2719*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2720*c8dee2aaSAndroid Build Coastguard Worker      ]
2721*c8dee2aaSAndroid Build Coastguard Worker    }
2722*c8dee2aaSAndroid Build Coastguard Worker  }
2723*c8dee2aaSAndroid Build Coastguard Worker
2724*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_expat) {
2725*c8dee2aaSAndroid Build Coastguard Worker    test_app("create_test_font_color") {
2726*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/fonts/create_test_font_color.cpp" ]
2727*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2728*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
2729*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2730*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2731*c8dee2aaSAndroid Build Coastguard Worker        "//modules/svg",
2732*c8dee2aaSAndroid Build Coastguard Worker      ]
2733*c8dee2aaSAndroid Build Coastguard Worker    }
2734*c8dee2aaSAndroid Build Coastguard Worker  }
2735*c8dee2aaSAndroid Build Coastguard Worker
2736*c8dee2aaSAndroid Build Coastguard Worker  test_app("get_images_from_skps") {
2737*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/get_images_from_skps.cpp" ]
2738*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2739*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2740*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2741*c8dee2aaSAndroid Build Coastguard Worker    ]
2742*c8dee2aaSAndroid Build Coastguard Worker  }
2743*c8dee2aaSAndroid Build Coastguard Worker
2744*c8dee2aaSAndroid Build Coastguard Worker  if (!is_ios && target_cpu != "wasm" &&
2745*c8dee2aaSAndroid Build Coastguard Worker      !((is_win || is_mac) && target_cpu == "arm64")) {
2746*c8dee2aaSAndroid Build Coastguard Worker    test_app("skiaserve") {
2747*c8dee2aaSAndroid Build Coastguard Worker      sources = [
2748*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/Request.cpp",
2749*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/Response.cpp",
2750*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/skiaserve.cpp",
2751*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/BreakHandler.cpp",
2752*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
2753*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/CmdHandler.cpp",
2754*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
2755*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/DataHandler.cpp",
2756*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
2757*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
2758*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/ImgHandler.cpp",
2759*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/InfoHandler.cpp",
2760*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/OpBoundsHandler.cpp",
2761*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/OpsHandler.cpp",
2762*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/OverdrawHandler.cpp",
2763*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/PostHandler.cpp",
2764*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/QuitHandler.cpp",
2765*c8dee2aaSAndroid Build Coastguard Worker        "tools/skiaserve/urlhandlers/RootHandler.cpp",
2766*c8dee2aaSAndroid Build Coastguard Worker      ]
2767*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2768*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
2769*c8dee2aaSAndroid Build Coastguard Worker        ":gpu_tool_utils",
2770*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2771*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2772*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/libmicrohttpd",
2773*c8dee2aaSAndroid Build Coastguard Worker      ]
2774*c8dee2aaSAndroid Build Coastguard Worker    }
2775*c8dee2aaSAndroid Build Coastguard Worker  }
2776*c8dee2aaSAndroid Build Coastguard Worker
2777*c8dee2aaSAndroid Build Coastguard Worker  test_app("fuzz") {
2778*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2779*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/Fuzz.cpp",
2780*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/Fuzz.h",
2781*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzCanvas.cpp",
2782*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzCommon.cpp",
2783*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzCommon.h",
2784*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzCreateDDL.cpp",
2785*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzCubicRoots.cpp",
2786*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzDDLThreading.cpp",
2787*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzDrawFunctions.cpp",
2788*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzEncoders.cpp",
2789*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzGradients.cpp",
2790*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzMain.cpp",
2791*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzParsePath.cpp",
2792*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzPathMeasure.cpp",
2793*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzPathop.cpp",
2794*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzPolyUtils.cpp",
2795*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzQuadRoots.cpp",
2796*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzRegionOp.cpp",
2797*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzSkParagraph.cpp",
2798*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/FuzzTriangulation.cpp",
2799*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzAndroidCodec.cpp",
2800*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzAnimatedImage.cpp",
2801*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzCOLRv1.cpp",
2802*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzColorspace.cpp",
2803*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzImage.cpp",
2804*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp",
2805*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzIncrementalImage.cpp",
2806*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzJSON.cpp",
2807*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzParsePath.cpp",
2808*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzPathDeserialize.cpp",
2809*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzRegionDeserialize.cpp",
2810*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzRegionSetPath.cpp",
2811*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKP.cpp",
2812*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp",
2813*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKSL2Metal.cpp",
2814*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp",
2815*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp",
2816*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSKSL2WGSL.cpp",
2817*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSVG.cpp",
2818*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkDescriptorDeserialize.cpp",
2819*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkMeshSpecification.cpp",
2820*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkParagraph.cpp",
2821*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkRuntimeBlender.cpp",
2822*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkRuntimeColorFilter.cpp",
2823*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzSkRuntimeEffect.cpp",
2824*c8dee2aaSAndroid Build Coastguard Worker      "fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp",
2825*c8dee2aaSAndroid Build Coastguard Worker      "tools/UrlDataManager.cpp",
2826*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugCanvas.cpp",
2827*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DebugLayerManager.cpp",
2828*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/DrawCommand.cpp",
2829*c8dee2aaSAndroid Build Coastguard Worker      "tools/debugger/JsonWriteBuffer.cpp",
2830*c8dee2aaSAndroid Build Coastguard Worker      "tools/fonts/FontToolUtils.cpp",
2831*c8dee2aaSAndroid Build Coastguard Worker    ]
2832*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite && skia_enable_precompile) {
2833*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "fuzz/FuzzPrecompile.cpp" ]
2834*c8dee2aaSAndroid Build Coastguard Worker    }
2835*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2836*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2837*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",
2838*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2839*c8dee2aaSAndroid Build Coastguard Worker      "modules/skottie:fuzz",
2840*c8dee2aaSAndroid Build Coastguard Worker      "modules/skparagraph",
2841*c8dee2aaSAndroid Build Coastguard Worker      "modules/svg",
2842*c8dee2aaSAndroid Build Coastguard Worker    ]
2843*c8dee2aaSAndroid Build Coastguard Worker  }
2844*c8dee2aaSAndroid Build Coastguard Worker
2845*c8dee2aaSAndroid Build Coastguard Worker  test_app("dump_record") {
2846*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/dump_record.cpp" ]
2847*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2848*c8dee2aaSAndroid Build Coastguard Worker      ":flags",
2849*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2850*c8dee2aaSAndroid Build Coastguard Worker    ]
2851*c8dee2aaSAndroid Build Coastguard Worker  }
2852*c8dee2aaSAndroid Build Coastguard Worker
2853*c8dee2aaSAndroid Build Coastguard Worker  test_app("skdiff") {
2854*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2855*c8dee2aaSAndroid Build Coastguard Worker      "tools/skdiff/skdiff.cpp",
2856*c8dee2aaSAndroid Build Coastguard Worker      "tools/skdiff/skdiff_html.cpp",
2857*c8dee2aaSAndroid Build Coastguard Worker      "tools/skdiff/skdiff_main.cpp",
2858*c8dee2aaSAndroid Build Coastguard Worker      "tools/skdiff/skdiff_utils.cpp",
2859*c8dee2aaSAndroid Build Coastguard Worker    ]
2860*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":skia" ]
2861*c8dee2aaSAndroid Build Coastguard Worker  }
2862*c8dee2aaSAndroid Build Coastguard Worker
2863*c8dee2aaSAndroid Build Coastguard Worker  test_app("skp_parser") {
2864*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/skp_parser.cpp" ]
2865*c8dee2aaSAndroid Build Coastguard Worker    deps = [
2866*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2867*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
2868*c8dee2aaSAndroid Build Coastguard Worker    ]
2869*c8dee2aaSAndroid Build Coastguard Worker  }
2870*c8dee2aaSAndroid Build Coastguard Worker
2871*c8dee2aaSAndroid Build Coastguard Worker  if (!is_win) {
2872*c8dee2aaSAndroid Build Coastguard Worker    source_set("skqp_lib") {  # Not a skia_source_set
2873*c8dee2aaSAndroid Build Coastguard Worker      check_includes = false
2874*c8dee2aaSAndroid Build Coastguard Worker      testonly = true
2875*c8dee2aaSAndroid Build Coastguard Worker      public_configs = [ ":skia_private" ]
2876*c8dee2aaSAndroid Build Coastguard Worker      sources = [
2877*c8dee2aaSAndroid Build Coastguard Worker        "tools/skqp/src/skqp.cpp",
2878*c8dee2aaSAndroid Build Coastguard Worker        "tools/skqp/src/skqp.h",
2879*c8dee2aaSAndroid Build Coastguard Worker        "tools/skqp/src/skqp_GpuTestProcs.cpp",
2880*c8dee2aaSAndroid Build Coastguard Worker      ]
2881*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2882*c8dee2aaSAndroid Build Coastguard Worker        ":gm",
2883*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2884*c8dee2aaSAndroid Build Coastguard Worker        ":tests",
2885*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2886*c8dee2aaSAndroid Build Coastguard Worker      ]
2887*c8dee2aaSAndroid Build Coastguard Worker    }
2888*c8dee2aaSAndroid Build Coastguard Worker    test_app("skqp") {
2889*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/skqp/src/skqp_main.cpp" ]
2890*c8dee2aaSAndroid Build Coastguard Worker      include_dirs = [ "//" ]
2891*c8dee2aaSAndroid Build Coastguard Worker      lib_dirs = []
2892*c8dee2aaSAndroid Build Coastguard Worker      deps = [ ":skqp_lib" ]
2893*c8dee2aaSAndroid Build Coastguard Worker    }
2894*c8dee2aaSAndroid Build Coastguard Worker  }
2895*c8dee2aaSAndroid Build Coastguard Worker  if (is_fuchsia) {
2896*c8dee2aaSAndroid Build Coastguard Worker    # Build a package repository for skqp on Fuchsia.
2897*c8dee2aaSAndroid Build Coastguard Worker    group("skqp_repo") {
2898*c8dee2aaSAndroid Build Coastguard Worker      testonly = true
2899*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "//build/fuchsia/skqp:skqp_repo" ]
2900*c8dee2aaSAndroid Build Coastguard Worker    }
2901*c8dee2aaSAndroid Build Coastguard Worker  }
2902*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
2903*c8dee2aaSAndroid Build Coastguard Worker    shared_library("libskqp_jni") {  # Not a skia_shared_library
2904*c8dee2aaSAndroid Build Coastguard Worker      configs += [ ":skia_private" ]
2905*c8dee2aaSAndroid Build Coastguard Worker      testonly = true
2906*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "tools/skqp/src/jni_skqp.cpp" ]
2907*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2908*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2909*c8dee2aaSAndroid Build Coastguard Worker        ":skqp_lib",
2910*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
2911*c8dee2aaSAndroid Build Coastguard Worker      ]
2912*c8dee2aaSAndroid Build Coastguard Worker      libs = [ "android" ]
2913*c8dee2aaSAndroid Build Coastguard Worker    }
2914*c8dee2aaSAndroid Build Coastguard Worker  }
2915*c8dee2aaSAndroid Build Coastguard Worker  if (is_android && skia_use_gl) {
2916*c8dee2aaSAndroid Build Coastguard Worker    test_app("skottie_android") {
2917*c8dee2aaSAndroid Build Coastguard Worker      is_shared_library = true
2918*c8dee2aaSAndroid Build Coastguard Worker
2919*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp" ]
2920*c8dee2aaSAndroid Build Coastguard Worker      libs = []
2921*c8dee2aaSAndroid Build Coastguard Worker
2922*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2923*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2924*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
2925*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper",
2926*c8dee2aaSAndroid Build Coastguard Worker        "modules/skunicode",
2927*c8dee2aaSAndroid Build Coastguard Worker      ]
2928*c8dee2aaSAndroid Build Coastguard Worker    }
2929*c8dee2aaSAndroid Build Coastguard Worker
2930*c8dee2aaSAndroid Build Coastguard Worker    test_app("jetski") {
2931*c8dee2aaSAndroid Build Coastguard Worker      is_shared_library = true
2932*c8dee2aaSAndroid Build Coastguard Worker
2933*c8dee2aaSAndroid Build Coastguard Worker      sources = [
2934*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Canvas.cpp",
2935*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/ColorFilters.cpp",
2936*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Gradients.cpp",
2937*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Image.cpp",
2938*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/ImageFilter.cpp",
2939*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/JetSki.cpp",
2940*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Matrix.cpp",
2941*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Paint.cpp",
2942*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Path.cpp",
2943*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/PathBuilder.cpp",
2944*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/RuntimeShaderBuilder.cpp",
2945*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Shader.cpp",
2946*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/SkottieAnimation.cpp",
2947*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Surface.cpp",
2948*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Surface.h",
2949*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/SurfaceThread.cpp",
2950*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/SurfaceThread.h",
2951*c8dee2aaSAndroid Build Coastguard Worker        "modules/jetski/src/Utils.cpp",
2952*c8dee2aaSAndroid Build Coastguard Worker      ]
2953*c8dee2aaSAndroid Build Coastguard Worker      libs = [
2954*c8dee2aaSAndroid Build Coastguard Worker        "android",
2955*c8dee2aaSAndroid Build Coastguard Worker        "jnigraphics",
2956*c8dee2aaSAndroid Build Coastguard Worker      ]
2957*c8dee2aaSAndroid Build Coastguard Worker
2958*c8dee2aaSAndroid Build Coastguard Worker      deps = [
2959*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
2960*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie:skottie",
2961*c8dee2aaSAndroid Build Coastguard Worker        "tools/window:window",
2962*c8dee2aaSAndroid Build Coastguard Worker      ]
2963*c8dee2aaSAndroid Build Coastguard Worker    }
2964*c8dee2aaSAndroid Build Coastguard Worker  }
2965*c8dee2aaSAndroid Build Coastguard Worker
2966*c8dee2aaSAndroid Build Coastguard Worker  if (is_ios && skia_enable_skottie) {
2967*c8dee2aaSAndroid Build Coastguard Worker    group("skottie_ios") {
2968*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "tools/skottie_ios_app" ]
2969*c8dee2aaSAndroid Build Coastguard Worker    }
2970*c8dee2aaSAndroid Build Coastguard Worker  }
2971*c8dee2aaSAndroid Build Coastguard Worker
2972*c8dee2aaSAndroid Build Coastguard Worker  test_lib("sk_app") {
2973*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [
2974*c8dee2aaSAndroid Build Coastguard Worker      ":gpu_tool_utils",
2975*c8dee2aaSAndroid Build Coastguard Worker      ":skia",
2976*c8dee2aaSAndroid Build Coastguard Worker    ]
2977*c8dee2aaSAndroid Build Coastguard Worker    sources = [
2978*c8dee2aaSAndroid Build Coastguard Worker      "tools/sk_app/Application.h",
2979*c8dee2aaSAndroid Build Coastguard Worker      "tools/sk_app/CommandSet.cpp",
2980*c8dee2aaSAndroid Build Coastguard Worker      "tools/sk_app/CommandSet.h",
2981*c8dee2aaSAndroid Build Coastguard Worker      "tools/sk_app/Window.cpp",
2982*c8dee2aaSAndroid Build Coastguard Worker      "tools/sk_app/Window.h",
2983*c8dee2aaSAndroid Build Coastguard Worker    ]
2984*c8dee2aaSAndroid Build Coastguard Worker    libs = []
2985*c8dee2aaSAndroid Build Coastguard Worker    frameworks = []
2986*c8dee2aaSAndroid Build Coastguard Worker
2987*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
2988*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2989*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/android/Window_android.cpp",
2990*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/android/Window_android.h",
2991*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/android/main_android.cpp",
2992*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/android/surface_glue_android.cpp",
2993*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/android/surface_glue_android.h",
2994*c8dee2aaSAndroid Build Coastguard Worker      ]
2995*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "android" ]
2996*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux) {
2997*c8dee2aaSAndroid Build Coastguard Worker      sources += [
2998*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/unix/Window_unix.cpp",
2999*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/unix/Window_unix.h",
3000*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/unix/keysym2ucs.c",
3001*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/unix/keysym2ucs.h",
3002*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/unix/main_unix.cpp",
3003*c8dee2aaSAndroid Build Coastguard Worker      ]
3004*c8dee2aaSAndroid Build Coastguard Worker      libs += [
3005*c8dee2aaSAndroid Build Coastguard Worker        "GL",  # Used by raster window context, so cannot be behind skia_use_gl.
3006*c8dee2aaSAndroid Build Coastguard Worker        "X11",
3007*c8dee2aaSAndroid Build Coastguard Worker      ]
3008*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win) {
3009*c8dee2aaSAndroid Build Coastguard Worker      sources += [
3010*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/win/Window_win.cpp",
3011*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/win/Window_win.h",
3012*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/win/main_win.cpp",
3013*c8dee2aaSAndroid Build Coastguard Worker      ]
3014*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac) {
3015*c8dee2aaSAndroid Build Coastguard Worker      sources += [
3016*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/mac/Window_mac.h",
3017*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/mac/Window_mac.mm",
3018*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/mac/main_mac.mm",
3019*c8dee2aaSAndroid Build Coastguard Worker      ]
3020*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [
3021*c8dee2aaSAndroid Build Coastguard Worker        "QuartzCore.framework",
3022*c8dee2aaSAndroid Build Coastguard Worker        "Cocoa.framework",
3023*c8dee2aaSAndroid Build Coastguard Worker        "Foundation.framework",
3024*c8dee2aaSAndroid Build Coastguard Worker      ]
3025*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_ios) {
3026*c8dee2aaSAndroid Build Coastguard Worker      sources += [
3027*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/ios/Window_ios.h",
3028*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/ios/Window_ios.mm",
3029*c8dee2aaSAndroid Build Coastguard Worker        "tools/sk_app/ios/main_ios.mm",
3030*c8dee2aaSAndroid Build Coastguard Worker      ]
3031*c8dee2aaSAndroid Build Coastguard Worker      frameworks += [ "QuartzCore.framework" ]
3032*c8dee2aaSAndroid Build Coastguard Worker    }
3033*c8dee2aaSAndroid Build Coastguard Worker
3034*c8dee2aaSAndroid Build Coastguard Worker    deps = [
3035*c8dee2aaSAndroid Build Coastguard Worker      ":tool_utils",
3036*c8dee2aaSAndroid Build Coastguard Worker      "tools/window",
3037*c8dee2aaSAndroid Build Coastguard Worker    ]
3038*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
3039*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/native_app_glue" ]
3040*c8dee2aaSAndroid Build Coastguard Worker    }
3041*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_gl && skia_use_angle) {
3042*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/angle2" ]
3043*c8dee2aaSAndroid Build Coastguard Worker    }
3044*c8dee2aaSAndroid Build Coastguard Worker  }
3045*c8dee2aaSAndroid Build Coastguard Worker
3046*c8dee2aaSAndroid Build Coastguard Worker  if (!skia_use_vulkan && (is_mac || is_linux || is_win)) {
3047*c8dee2aaSAndroid Build Coastguard Worker    test_app("fiddle_examples") {
3048*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3049*c8dee2aaSAndroid Build Coastguard Worker        "tools/fiddle/all_examples.cpp",
3050*c8dee2aaSAndroid Build Coastguard Worker        "tools/fiddle/examples.cpp",
3051*c8dee2aaSAndroid Build Coastguard Worker        "tools/fiddle/examples.h",
3052*c8dee2aaSAndroid Build Coastguard Worker      ]
3053*c8dee2aaSAndroid Build Coastguard Worker      if (is_win) {
3054*c8dee2aaSAndroid Build Coastguard Worker        cflags = [
3055*c8dee2aaSAndroid Build Coastguard Worker          "/wd4756",  # Overflow in constant arithmetic
3056*c8dee2aaSAndroid Build Coastguard Worker          "/wd4305",  # truncation from 'double' to 'float'
3057*c8dee2aaSAndroid Build Coastguard Worker        ]
3058*c8dee2aaSAndroid Build Coastguard Worker      }
3059*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3060*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
3061*c8dee2aaSAndroid Build Coastguard Worker        ":skia.h",
3062*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
3063*c8dee2aaSAndroid Build Coastguard Worker        "modules/skparagraph",
3064*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper",
3065*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3066*c8dee2aaSAndroid Build Coastguard Worker      ]
3067*c8dee2aaSAndroid Build Coastguard Worker    }
3068*c8dee2aaSAndroid Build Coastguard Worker  }
3069*c8dee2aaSAndroid Build Coastguard Worker
3070*c8dee2aaSAndroid Build Coastguard Worker  # sk_app can work without GL but viewer always runs raster through a GL window context.
3071*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_gl) {
3072*c8dee2aaSAndroid Build Coastguard Worker    test_app("viewer") {
3073*c8dee2aaSAndroid Build Coastguard Worker      is_shared_library = is_android
3074*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3075*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/3DSlide.cpp",
3076*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AndroidShadowsSlide.cpp",
3077*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AnimBlurSlide.cpp",
3078*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AnimTimer.h",
3079*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AnimatedImageSlide.cpp",
3080*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AnimatedRectsSlide.cpp",
3081*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AnimatedTextSlide.cpp",
3082*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ArcSlide.cpp",
3083*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AtlasSlide.cpp",
3084*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/AudioSlide.cpp",
3085*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/BisectSlide.cpp",
3086*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/BisectSlide.h",
3087*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/CameraSlide.cpp",
3088*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ChartSlide.cpp",
3089*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ChineseFlingSlide.cpp",
3090*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ClickHandlerSlide.cpp",
3091*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ClickHandlerSlide.h",
3092*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ClipSlide.cpp",
3093*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ClockSlide.cpp",
3094*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/CowboySlide.cpp",
3095*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/DegenerateQuadsSlide.cpp",
3096*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/DegenerateTwoPtRadialsSlide.cpp",
3097*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/FatBitsSlide.cpp",
3098*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/FilterBoundsSlide.cpp",
3099*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/FitCubicToCircleSlide.cpp",
3100*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/FlutterAnimateSlide.cpp",
3101*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/GMSlide.cpp",
3102*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/GMSlide.h",
3103*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/GlyphTransformSlide.cpp",
3104*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/GradientsSlide.cpp",
3105*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/GraphitePrimitivesSlide.cpp",
3106*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ImGuiLayer.cpp",
3107*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ImGuiLayer.h",
3108*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ImageFilterDAGSlide.cpp",
3109*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ImageSlide.cpp",
3110*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ImageSlide.h",
3111*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/LayersSlide.cpp",
3112*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MSKPSlide.cpp",
3113*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MSKPSlide.h",
3114*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ManyRectsSlide.cpp",
3115*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MaterialShadowsSlide.cpp",
3116*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MegaStrokeSlide.cpp",
3117*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MeshGradientSlide.cpp",
3118*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MeshSlide.cpp",
3119*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MixerSlide.cpp",
3120*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/MotionMarkSlide.cpp",
3121*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PatchSlide.cpp",
3122*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathClipSlide.cpp",
3123*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathEffectsSlide.cpp",
3124*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathLerpSlide.cpp",
3125*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathOverstrokeSlide.cpp",
3126*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathSlide.cpp",
3127*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathTessellatorsSlide.cpp",
3128*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/PathTextSlide.cpp",
3129*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ProtectedSlide.cpp",
3130*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/QuadStrokerSlide.cpp",
3131*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/RectanizerSlide.cpp",
3132*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/RepeatTileSlide.cpp",
3133*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SBIXSlide.cpp",
3134*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SGSlide.cpp",
3135*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SKPSlide.cpp",
3136*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SKPSlide.h",
3137*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SVGFileSlide.cpp",
3138*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ShadowColorSlide.cpp",
3139*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ShadowReferenceSlide.cpp",
3140*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ShadowUtilsSlide.cpp",
3141*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ShipSlide.cpp",
3142*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SimpleStrokerSlide.cpp",
3143*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkSLDebuggerSlide.cpp",
3144*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkSLDebuggerSlide.h",
3145*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkSLSlide.cpp",
3146*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkSLSlide.h",
3147*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkottieSlide.cpp",
3148*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SkottieSlide.h",
3149*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/Slide.h",
3150*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SlideDir.cpp",
3151*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SlideDir.h",
3152*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SlidesSlide.cpp",
3153*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/StatsLayer.cpp",
3154*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/StatsLayer.h",
3155*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/StringArtSlide.cpp",
3156*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/StrokeVerbSlide.cpp",
3157*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SvgSlide.cpp",
3158*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/SvgSlide.h",
3159*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TextBoxSlide.cpp",
3160*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TextureUploadSlide.cpp",
3161*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/ThinAASlide.cpp",
3162*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TimingSlide.cpp",
3163*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TouchGesture.cpp",
3164*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TouchGesture.h",
3165*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/TypefaceSlide.cpp",
3166*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/VariableWidthStrokerSlide.cpp",
3167*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/Viewer.cpp",
3168*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/Viewer.h",
3169*c8dee2aaSAndroid Build Coastguard Worker        "tools/viewer/XferSlide.cpp",
3170*c8dee2aaSAndroid Build Coastguard Worker      ]
3171*c8dee2aaSAndroid Build Coastguard Worker      libs = []
3172*c8dee2aaSAndroid Build Coastguard Worker
3173*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3174*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_config",
3175*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_gpu",
3176*c8dee2aaSAndroid Build Coastguard Worker        ":common_flags_graphite",
3177*c8dee2aaSAndroid Build Coastguard Worker        ":flags",
3178*c8dee2aaSAndroid Build Coastguard Worker        ":gm",
3179*c8dee2aaSAndroid Build Coastguard Worker        ":gpu_tool_utils",
3180*c8dee2aaSAndroid Build Coastguard Worker        ":sk_app",
3181*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
3182*c8dee2aaSAndroid Build Coastguard Worker        ":tool_utils",
3183*c8dee2aaSAndroid Build Coastguard Worker        ":trace",
3184*c8dee2aaSAndroid Build Coastguard Worker        ":xml",
3185*c8dee2aaSAndroid Build Coastguard Worker        "modules/audioplayer",
3186*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie",
3187*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie:utils",
3188*c8dee2aaSAndroid Build Coastguard Worker        "modules/skparagraph:slides",
3189*c8dee2aaSAndroid Build Coastguard Worker        "modules/sksg:slides",
3190*c8dee2aaSAndroid Build Coastguard Worker        "modules/skshaper:skshaper",
3191*c8dee2aaSAndroid Build Coastguard Worker        "modules/skunicode",
3192*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3193*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/delaunator",
3194*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/imgui",
3195*c8dee2aaSAndroid Build Coastguard Worker      ]
3196*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_vulkan) {
3197*c8dee2aaSAndroid Build Coastguard Worker        deps += [
3198*c8dee2aaSAndroid Build Coastguard Worker          "//third_party/externals/spirv-tools:spvtools",
3199*c8dee2aaSAndroid Build Coastguard Worker
3200*c8dee2aaSAndroid Build Coastguard Worker          #spvtools depends on this but doesn't deps it in.
3201*c8dee2aaSAndroid Build Coastguard Worker          "//third_party/externals/spirv-tools:spvtools_val",
3202*c8dee2aaSAndroid Build Coastguard Worker        ]
3203*c8dee2aaSAndroid Build Coastguard Worker      }
3204*c8dee2aaSAndroid Build Coastguard Worker    }
3205*c8dee2aaSAndroid Build Coastguard Worker  }
3206*c8dee2aaSAndroid Build Coastguard Worker
3207*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vulkan) {
3208*c8dee2aaSAndroid Build Coastguard Worker    test_app("VulkanBasic") {
3209*c8dee2aaSAndroid Build Coastguard Worker      # Bots and even devs may not have Vulkan headers, so put
3210*c8dee2aaSAndroid Build Coastguard Worker      # include/third_party/vulkan on our path so they're always available.
3211*c8dee2aaSAndroid Build Coastguard Worker      all_dependent_configs = [
3212*c8dee2aaSAndroid Build Coastguard Worker        ":use_skia_vulkan_headers",
3213*c8dee2aaSAndroid Build Coastguard Worker        ":vulkan_memory_allocator",
3214*c8dee2aaSAndroid Build Coastguard Worker      ]
3215*c8dee2aaSAndroid Build Coastguard Worker
3216*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "example/VulkanBasic.cpp" ]
3217*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestMemoryAllocator.h" ]
3218*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestMemoryAllocator.cpp" ]
3219*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestUtils.h" ]
3220*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "tools/gpu/vk/VkTestUtils.cpp" ]
3221*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3222*c8dee2aaSAndroid Build Coastguard Worker        ":load_dynamic_library",
3223*c8dee2aaSAndroid Build Coastguard Worker        ":skia",
3224*c8dee2aaSAndroid Build Coastguard Worker      ]
3225*c8dee2aaSAndroid Build Coastguard Worker    }
3226*c8dee2aaSAndroid Build Coastguard Worker  }
3227*c8dee2aaSAndroid Build Coastguard Worker
3228*c8dee2aaSAndroid Build Coastguard Worker  if (is_ios && skia_use_metal && skia_enable_ganesh) {
3229*c8dee2aaSAndroid Build Coastguard Worker    group("minimal_ios_mtl_skia_app") {
3230*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "experimental/minimal_ios_mtl_skia_app" ]
3231*c8dee2aaSAndroid Build Coastguard Worker    }
3232*c8dee2aaSAndroid Build Coastguard Worker  }
3233*c8dee2aaSAndroid Build Coastguard Worker
3234*c8dee2aaSAndroid Build Coastguard Worker  if (is_linux || is_win || is_mac) {
3235*c8dee2aaSAndroid Build Coastguard Worker    test_app("editor") {
3236*c8dee2aaSAndroid Build Coastguard Worker      is_shared_library = is_android
3237*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "modules/skplaintexteditor:editor_app" ]
3238*c8dee2aaSAndroid Build Coastguard Worker    }
3239*c8dee2aaSAndroid Build Coastguard Worker  }
3240*c8dee2aaSAndroid Build Coastguard Worker
3241*c8dee2aaSAndroid Build Coastguard Worker  skia_executable("image_diff_metric") {
3242*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "tools/image_diff_metric.cpp" ]
3243*c8dee2aaSAndroid Build Coastguard Worker    deps = [ ":skia" ]
3244*c8dee2aaSAndroid Build Coastguard Worker  }
3245*c8dee2aaSAndroid Build Coastguard Worker
3246*c8dee2aaSAndroid Build Coastguard Worker  group("modules_testonly") {
3247*c8dee2aaSAndroid Build Coastguard Worker    testonly = true
3248*c8dee2aaSAndroid Build Coastguard Worker    deps = []
3249*c8dee2aaSAndroid Build Coastguard Worker    if (is_wasm) {
3250*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "modules/canvaskit:viewer_wasm" ]
3251*c8dee2aaSAndroid Build Coastguard Worker    }
3252*c8dee2aaSAndroid Build Coastguard Worker  }
3253*c8dee2aaSAndroid Build Coastguard Worker
3254*c8dee2aaSAndroid Build Coastguard Worker  if (skia_build_fuzzers) {
3255*c8dee2aaSAndroid Build Coastguard Worker    template("libfuzzer_app") {
3256*c8dee2aaSAndroid Build Coastguard Worker      skia_executable(target_name) {
3257*c8dee2aaSAndroid Build Coastguard Worker        output_dir = root_build_dir
3258*c8dee2aaSAndroid Build Coastguard Worker        check_includes = false
3259*c8dee2aaSAndroid Build Coastguard Worker        forward_variables_from(invoker, "*", [ "is_shared_library" ])
3260*c8dee2aaSAndroid Build Coastguard Worker        if (!defined(configs)) {
3261*c8dee2aaSAndroid Build Coastguard Worker          configs = []
3262*c8dee2aaSAndroid Build Coastguard Worker        }
3263*c8dee2aaSAndroid Build Coastguard Worker        configs += [ ":skia_private" ]
3264*c8dee2aaSAndroid Build Coastguard Worker        sources += [
3265*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/Fuzz.cpp",
3266*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/FuzzCommon.cpp",
3267*c8dee2aaSAndroid Build Coastguard Worker        ]
3268*c8dee2aaSAndroid Build Coastguard Worker        deps += [
3269*c8dee2aaSAndroid Build Coastguard Worker          ":flags",
3270*c8dee2aaSAndroid Build Coastguard Worker          ":gpu_tool_utils",
3271*c8dee2aaSAndroid Build Coastguard Worker          ":skia",
3272*c8dee2aaSAndroid Build Coastguard Worker          ":tool_utils",
3273*c8dee2aaSAndroid Build Coastguard Worker        ]
3274*c8dee2aaSAndroid Build Coastguard Worker        defines = [
3275*c8dee2aaSAndroid Build Coastguard Worker          "SK_BUILD_FOR_LIBFUZZER",
3276*c8dee2aaSAndroid Build Coastguard Worker          "SK_BUILD_FOR_FUZZER",
3277*c8dee2aaSAndroid Build Coastguard Worker        ]
3278*c8dee2aaSAndroid Build Coastguard Worker        if (skia_use_libfuzzer_defaults) {
3279*c8dee2aaSAndroid Build Coastguard Worker          cflags = [ "-fsanitize=fuzzer" ]
3280*c8dee2aaSAndroid Build Coastguard Worker          ldflags = [ "-fsanitize=fuzzer" ]
3281*c8dee2aaSAndroid Build Coastguard Worker        }
3282*c8dee2aaSAndroid Build Coastguard Worker        testonly = true
3283*c8dee2aaSAndroid Build Coastguard Worker      }
3284*c8dee2aaSAndroid Build Coastguard Worker    }
3285*c8dee2aaSAndroid Build Coastguard Worker
3286*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("region_deserialize") {
3287*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzRegionDeserialize.cpp" ]
3288*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3289*c8dee2aaSAndroid Build Coastguard Worker    }
3290*c8dee2aaSAndroid Build Coastguard Worker
3291*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("image_filter_deserialize") {
3292*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp" ]
3293*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "modules/svg" ]
3294*c8dee2aaSAndroid Build Coastguard Worker    }
3295*c8dee2aaSAndroid Build Coastguard Worker
3296*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("region_set_path") {
3297*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzRegionSetPath.cpp" ]
3298*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3299*c8dee2aaSAndroid Build Coastguard Worker    }
3300*c8dee2aaSAndroid Build Coastguard Worker
3301*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("textblob_deserialize") {
3302*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp" ]
3303*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "modules/svg" ]
3304*c8dee2aaSAndroid Build Coastguard Worker    }
3305*c8dee2aaSAndroid Build Coastguard Worker
3306*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("path_deserialize") {
3307*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzPathDeserialize.cpp" ]
3308*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3309*c8dee2aaSAndroid Build Coastguard Worker    }
3310*c8dee2aaSAndroid Build Coastguard Worker
3311*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("image_decode") {
3312*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzImage.cpp" ]
3313*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3314*c8dee2aaSAndroid Build Coastguard Worker    }
3315*c8dee2aaSAndroid Build Coastguard Worker
3316*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("animated_image_decode") {
3317*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzAnimatedImage.cpp" ]
3318*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3319*c8dee2aaSAndroid Build Coastguard Worker    }
3320*c8dee2aaSAndroid Build Coastguard Worker
3321*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_create_ddl") {
3322*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3323*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCreateDDL.cpp",
3324*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzAPICreateDDL.cpp",
3325*c8dee2aaSAndroid Build Coastguard Worker      ]
3326*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3327*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3328*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/libpng",
3329*c8dee2aaSAndroid Build Coastguard Worker      ]
3330*c8dee2aaSAndroid Build Coastguard Worker    }
3331*c8dee2aaSAndroid Build Coastguard Worker
3332*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_draw_functions") {
3333*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3334*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzDrawFunctions.cpp",
3335*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzDrawFunctions.cpp",
3336*c8dee2aaSAndroid Build Coastguard Worker      ]
3337*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3338*c8dee2aaSAndroid Build Coastguard Worker    }
3339*c8dee2aaSAndroid Build Coastguard Worker
3340*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_ddl_threading") {
3341*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3342*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzDDLThreading.cpp",
3343*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzDDLThreading.cpp",
3344*c8dee2aaSAndroid Build Coastguard Worker      ]
3345*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3346*c8dee2aaSAndroid Build Coastguard Worker    }
3347*c8dee2aaSAndroid Build Coastguard Worker
3348*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_gradients") {
3349*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3350*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzGradients.cpp",
3351*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzGradients.cpp",
3352*c8dee2aaSAndroid Build Coastguard Worker      ]
3353*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3354*c8dee2aaSAndroid Build Coastguard Worker    }
3355*c8dee2aaSAndroid Build Coastguard Worker
3356*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_image_filter") {
3357*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3358*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCanvas.cpp",
3359*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzAPIImageFilter.cpp",
3360*c8dee2aaSAndroid Build Coastguard Worker      ]
3361*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "//third_party/libpng" ]
3362*c8dee2aaSAndroid Build Coastguard Worker    }
3363*c8dee2aaSAndroid Build Coastguard Worker
3364*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_path_measure") {
3365*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3366*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzPathMeasure.cpp",
3367*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzPathMeasure.cpp",
3368*c8dee2aaSAndroid Build Coastguard Worker      ]
3369*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3370*c8dee2aaSAndroid Build Coastguard Worker    }
3371*c8dee2aaSAndroid Build Coastguard Worker
3372*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_pathop") {
3373*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3374*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzPathop.cpp",
3375*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzPathop.cpp",
3376*c8dee2aaSAndroid Build Coastguard Worker      ]
3377*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3378*c8dee2aaSAndroid Build Coastguard Worker    }
3379*c8dee2aaSAndroid Build Coastguard Worker
3380*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_triangulation") {
3381*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3382*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzTriangulation.cpp",
3383*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzTriangulation.cpp",
3384*c8dee2aaSAndroid Build Coastguard Worker      ]
3385*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3386*c8dee2aaSAndroid Build Coastguard Worker    }
3387*c8dee2aaSAndroid Build Coastguard Worker
3388*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_raster_n32_canvas") {
3389*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3390*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCanvas.cpp",
3391*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzRasterN32Canvas.cpp",
3392*c8dee2aaSAndroid Build Coastguard Worker      ]
3393*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3394*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3395*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/libpng",
3396*c8dee2aaSAndroid Build Coastguard Worker      ]
3397*c8dee2aaSAndroid Build Coastguard Worker    }
3398*c8dee2aaSAndroid Build Coastguard Worker
3399*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_regionop") {
3400*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3401*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzRegionOp.cpp",
3402*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzRegionOp.cpp",
3403*c8dee2aaSAndroid Build Coastguard Worker      ]
3404*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3405*c8dee2aaSAndroid Build Coastguard Worker    }
3406*c8dee2aaSAndroid Build Coastguard Worker
3407*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_ganesh) {
3408*c8dee2aaSAndroid Build Coastguard Worker      libfuzzer_app("api_mock_gpu_canvas") {
3409*c8dee2aaSAndroid Build Coastguard Worker        sources = [
3410*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/FuzzCanvas.cpp",
3411*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/oss_fuzz/FuzzMockGPUCanvas.cpp",
3412*c8dee2aaSAndroid Build Coastguard Worker        ]
3413*c8dee2aaSAndroid Build Coastguard Worker        deps = [
3414*c8dee2aaSAndroid Build Coastguard Worker          "modules/svg",
3415*c8dee2aaSAndroid Build Coastguard Worker          "//third_party/libpng",
3416*c8dee2aaSAndroid Build Coastguard Worker        ]
3417*c8dee2aaSAndroid Build Coastguard Worker      }
3418*c8dee2aaSAndroid Build Coastguard Worker    }
3419*c8dee2aaSAndroid Build Coastguard Worker
3420*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite && skia_enable_precompile) {
3421*c8dee2aaSAndroid Build Coastguard Worker      libfuzzer_app("api_precompile") {
3422*c8dee2aaSAndroid Build Coastguard Worker        sources = [
3423*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/FuzzPrecompile.cpp",
3424*c8dee2aaSAndroid Build Coastguard Worker          "fuzz/oss_fuzz/FuzzPrecompile.cpp",
3425*c8dee2aaSAndroid Build Coastguard Worker        ]
3426*c8dee2aaSAndroid Build Coastguard Worker        deps = []
3427*c8dee2aaSAndroid Build Coastguard Worker      }
3428*c8dee2aaSAndroid Build Coastguard Worker    }
3429*c8dee2aaSAndroid Build Coastguard Worker
3430*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_null_canvas") {
3431*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3432*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCanvas.cpp",
3433*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzNullCanvas.cpp",
3434*c8dee2aaSAndroid Build Coastguard Worker      ]
3435*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3436*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3437*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/libpng",
3438*c8dee2aaSAndroid Build Coastguard Worker      ]
3439*c8dee2aaSAndroid Build Coastguard Worker    }
3440*c8dee2aaSAndroid Build Coastguard Worker
3441*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_skparagraph") {
3442*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3443*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzSkParagraph.cpp",
3444*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzSkParagraph.cpp",
3445*c8dee2aaSAndroid Build Coastguard Worker      ]
3446*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "modules/skparagraph" ]
3447*c8dee2aaSAndroid Build Coastguard Worker    }
3448*c8dee2aaSAndroid Build Coastguard Worker
3449*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_svg_canvas") {
3450*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3451*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCanvas.cpp",
3452*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzAPISVGCanvas.cpp",
3453*c8dee2aaSAndroid Build Coastguard Worker      ]
3454*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3455*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3456*c8dee2aaSAndroid Build Coastguard Worker        "//third_party/libpng",
3457*c8dee2aaSAndroid Build Coastguard Worker      ]
3458*c8dee2aaSAndroid Build Coastguard Worker    }
3459*c8dee2aaSAndroid Build Coastguard Worker
3460*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("png_encoder") {
3461*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3462*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzEncoders.cpp",
3463*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzPNGEncoder.cpp",
3464*c8dee2aaSAndroid Build Coastguard Worker      ]
3465*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3466*c8dee2aaSAndroid Build Coastguard Worker    }
3467*c8dee2aaSAndroid Build Coastguard Worker
3468*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("jpeg_encoder") {
3469*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3470*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzEncoders.cpp",
3471*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzJPEGEncoder.cpp",
3472*c8dee2aaSAndroid Build Coastguard Worker      ]
3473*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3474*c8dee2aaSAndroid Build Coastguard Worker    }
3475*c8dee2aaSAndroid Build Coastguard Worker
3476*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("webp_encoder") {
3477*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3478*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzEncoders.cpp",
3479*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzWEBPEncoder.cpp",
3480*c8dee2aaSAndroid Build Coastguard Worker      ]
3481*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3482*c8dee2aaSAndroid Build Coastguard Worker    }
3483*c8dee2aaSAndroid Build Coastguard Worker
3484*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skottie_json") {
3485*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "modules/skottie/fuzz/FuzzSkottieJSON.cpp" ]
3486*c8dee2aaSAndroid Build Coastguard Worker      deps = [
3487*c8dee2aaSAndroid Build Coastguard Worker        "modules/skottie:skottie",
3488*c8dee2aaSAndroid Build Coastguard Worker        "modules/svg",
3489*c8dee2aaSAndroid Build Coastguard Worker      ]
3490*c8dee2aaSAndroid Build Coastguard Worker    }
3491*c8dee2aaSAndroid Build Coastguard Worker
3492*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skjson") {
3493*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzJSON.cpp" ]
3494*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3495*c8dee2aaSAndroid Build Coastguard Worker    }
3496*c8dee2aaSAndroid Build Coastguard Worker
3497*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("api_polyutils") {
3498*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3499*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzPolyUtils.cpp",
3500*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzPolyUtils.cpp",
3501*c8dee2aaSAndroid Build Coastguard Worker      ]
3502*c8dee2aaSAndroid Build Coastguard Worker      deps = [ ":skia" ]
3503*c8dee2aaSAndroid Build Coastguard Worker    }
3504*c8dee2aaSAndroid Build Coastguard Worker
3505*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("android_codec") {
3506*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzAndroidCodec.cpp" ]
3507*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3508*c8dee2aaSAndroid Build Coastguard Worker    }
3509*c8dee2aaSAndroid Build Coastguard Worker
3510*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("image_decode_incremental") {
3511*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzIncrementalImage.cpp" ]
3512*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3513*c8dee2aaSAndroid Build Coastguard Worker    }
3514*c8dee2aaSAndroid Build Coastguard Worker
3515*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("sksl2glsl") {
3516*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp" ]
3517*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3518*c8dee2aaSAndroid Build Coastguard Worker    }
3519*c8dee2aaSAndroid Build Coastguard Worker
3520*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("sksl2metal") {
3521*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKSL2Metal.cpp" ]
3522*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3523*c8dee2aaSAndroid Build Coastguard Worker    }
3524*c8dee2aaSAndroid Build Coastguard Worker
3525*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("sksl2pipeline") {
3526*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp" ]
3527*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3528*c8dee2aaSAndroid Build Coastguard Worker    }
3529*c8dee2aaSAndroid Build Coastguard Worker
3530*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("sksl2spirv") {
3531*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp" ]
3532*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3533*c8dee2aaSAndroid Build Coastguard Worker    }
3534*c8dee2aaSAndroid Build Coastguard Worker
3535*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("sksl2wgsl") {
3536*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKSL2WGSL.cpp" ]
3537*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3538*c8dee2aaSAndroid Build Coastguard Worker    }
3539*c8dee2aaSAndroid Build Coastguard Worker
3540*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skdescriptor_deserialize") {
3541*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSkDescriptorDeserialize.cpp" ]
3542*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3543*c8dee2aaSAndroid Build Coastguard Worker    }
3544*c8dee2aaSAndroid Build Coastguard Worker
3545*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("svg_dom") {
3546*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSVG.cpp" ]
3547*c8dee2aaSAndroid Build Coastguard Worker      deps = [ "modules/svg" ]
3548*c8dee2aaSAndroid Build Coastguard Worker    }
3549*c8dee2aaSAndroid Build Coastguard Worker
3550*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skruntimeblender") {
3551*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSkRuntimeBlender.cpp" ]
3552*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3553*c8dee2aaSAndroid Build Coastguard Worker    }
3554*c8dee2aaSAndroid Build Coastguard Worker
3555*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skruntimecolorfilter") {
3556*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSkRuntimeColorFilter.cpp" ]
3557*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3558*c8dee2aaSAndroid Build Coastguard Worker    }
3559*c8dee2aaSAndroid Build Coastguard Worker
3560*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skruntimeeffect") {
3561*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSkRuntimeEffect.cpp" ]
3562*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3563*c8dee2aaSAndroid Build Coastguard Worker    }
3564*c8dee2aaSAndroid Build Coastguard Worker
3565*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skmeshspecification") {
3566*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSkMeshSpecification.cpp" ]
3567*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3568*c8dee2aaSAndroid Build Coastguard Worker    }
3569*c8dee2aaSAndroid Build Coastguard Worker
3570*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skp") {
3571*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzSKP.cpp" ]
3572*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3573*c8dee2aaSAndroid Build Coastguard Worker    }
3574*c8dee2aaSAndroid Build Coastguard Worker
3575*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("colrv1") {
3576*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzCOLRv1.cpp" ]
3577*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3578*c8dee2aaSAndroid Build Coastguard Worker    }
3579*c8dee2aaSAndroid Build Coastguard Worker
3580*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("quad_roots") {
3581*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3582*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzQuadRoots.cpp",
3583*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzQuadRoots.cpp",
3584*c8dee2aaSAndroid Build Coastguard Worker      ]
3585*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3586*c8dee2aaSAndroid Build Coastguard Worker    }
3587*c8dee2aaSAndroid Build Coastguard Worker
3588*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("cubic_roots") {
3589*c8dee2aaSAndroid Build Coastguard Worker      sources = [
3590*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/FuzzCubicRoots.cpp",
3591*c8dee2aaSAndroid Build Coastguard Worker        "fuzz/oss_fuzz/FuzzCubicRoots.cpp",
3592*c8dee2aaSAndroid Build Coastguard Worker      ]
3593*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3594*c8dee2aaSAndroid Build Coastguard Worker    }
3595*c8dee2aaSAndroid Build Coastguard Worker
3596*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("skcolorspace") {
3597*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzColorspace.cpp" ]
3598*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3599*c8dee2aaSAndroid Build Coastguard Worker    }
3600*c8dee2aaSAndroid Build Coastguard Worker
3601*c8dee2aaSAndroid Build Coastguard Worker    libfuzzer_app("parse_path") {
3602*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "fuzz/oss_fuzz/FuzzParsePath.cpp" ]
3603*c8dee2aaSAndroid Build Coastguard Worker      deps = []
3604*c8dee2aaSAndroid Build Coastguard Worker    }
3605*c8dee2aaSAndroid Build Coastguard Worker  }
3606*c8dee2aaSAndroid Build Coastguard Worker}
3607*c8dee2aaSAndroid Build Coastguard Worker
3608*c8dee2aaSAndroid Build Coastguard Workerif (skia_build_rust_targets) {
3609*c8dee2aaSAndroid Build Coastguard Worker  action("rust_hello_world") {
3610*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
3611*c8dee2aaSAndroid Build Coastguard Worker    sources = [ "experimental/rust_cxx/hello-world.rs" ]
3612*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/rust_hello_world" ]
3613*c8dee2aaSAndroid Build Coastguard Worker    args = [
3614*c8dee2aaSAndroid Build Coastguard Worker      "//experimental/rust_cxx:rust_hello_world",
3615*c8dee2aaSAndroid Build Coastguard Worker      "../../bazel-bin/experimental/rust_cxx/rust_hello_world",
3616*c8dee2aaSAndroid Build Coastguard Worker    ]
3617*c8dee2aaSAndroid Build Coastguard Worker  }
3618*c8dee2aaSAndroid Build Coastguard Worker
3619*c8dee2aaSAndroid Build Coastguard Worker  action("cpp_with_rust") {
3620*c8dee2aaSAndroid Build Coastguard Worker    script = "gn/bazel_build.py"
3621*c8dee2aaSAndroid Build Coastguard Worker    sources = [
3622*c8dee2aaSAndroid Build Coastguard Worker      "experimental/rust_cxx/hype-bridge.rs",
3623*c8dee2aaSAndroid Build Coastguard Worker      "experimental/rust_cxx/main.cpp",
3624*c8dee2aaSAndroid Build Coastguard Worker    ]
3625*c8dee2aaSAndroid Build Coastguard Worker    outputs = [ "$root_out_dir/cpp_with_rust" ]
3626*c8dee2aaSAndroid Build Coastguard Worker    args = [
3627*c8dee2aaSAndroid Build Coastguard Worker      "//experimental/rust_cxx:cpp_with_rust",
3628*c8dee2aaSAndroid Build Coastguard Worker      "../../bazel-bin/experimental/rust_cxx/cpp_with_rust",
3629*c8dee2aaSAndroid Build Coastguard Worker    ]
3630*c8dee2aaSAndroid Build Coastguard Worker  }
3631*c8dee2aaSAndroid Build Coastguard Worker}
3632