BUILD.gn revision 789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2
1c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Copyright 2016 Google Inc.
2c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein#
3c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Use of this source code is governed by a BSD-style license that can be
4c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# found in the LICENSE file.
5c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
68c24f4fae3389b9937eb73128e76226cffebdd72mikejurkaimport("gn/shared_sources.gni")
7b944728b93a1623d73be31413a6798e0b7dddc16brettw
83e8012e74f70bf49427a7422f9e5996c9882d4f3mtkleinif (!defined(is_skia_standalone)) {
93e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  is_skia_standalone = false
103e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein}
113e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein
12c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleindeclare_args() {
13d68f9b00389bf676b171f250e684486cb2fbd404mtklein  skia_use_angle = false
146321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
153cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
16cdedd0e061f3f50cd217638c28b27d798d930896mtklein  skia_use_freetype = is_android || is_fuchsia || is_linux
17457b42a6398020c3791f62f8c8637653e0d39bccmtklein  skia_use_giflib = !is_fuchsia
186321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
196321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
20eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
21a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein  skia_use_mesa = false
226321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_sfntly = !is_fuchsia
23f29180e65afdd3bd5ff3c1a2f8d456f9aea125edmtklein  skia_use_vulkan = is_android && defined(ndk_api) && ndk_api >= 24
246321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
251bd72ba2cb349788223e3e7304f25751c87f1f95mtklein
261bd72ba2cb349788223e3e7304f25751c87f1f95mtklein  skia_enable_android_framework_defines = false
2706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  skia_enable_gpu = true
283e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_tools = is_skia_standalone
293e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_vulkan_debug_layers = is_skia_standalone && is_debug
30789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  skia_vulkan_sdk = ""
31c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
32c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
33789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomonskia_use_vulkan = skia_use_vulkan || skia_vulkan_sdk != ""
34789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon
3538925aa37c17c0f54868852b8c3edf373400c742mtklein# Our tools require static linking (they use non-exported symbols).
3638925aa37c17c0f54868852b8c3edf373400c742mtkleinskia_enable_tools = skia_enable_tools && !is_component_build
3706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
38a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
39a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
401211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
4125c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
42fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
431211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
441211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
451211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
471211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
481211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
491211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/images",
501211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
511211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
5225c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
531211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
541211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
5525c81d4e651b43b8217c365c87d530036529a673mtklein  "include/xml",
561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
571211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
58c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
59c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
601211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
61c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_DLL" ]
62c4cbd74a38232a0e9f1cc1cc8fb826bb06c577a9Mike Klein  if (is_fuchsia || is_linux) {
635561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
645561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
65cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  if (skia_enable_android_framework_defines) {
66cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein    defines += skia_android_framework_defines
67cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  }
6806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (!skia_enable_gpu) {
6906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    defines += [ "SK_SUPPORT_GPU=0" ]
7006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
71c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
72c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
73c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
74c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
75c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
76c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
77c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
78c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
79c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
801211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
81c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/config",
82c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
83c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
8425c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
8525c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
86c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/gpu",
87c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
88c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
89c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
91c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
93c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
94c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
959e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
96c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
977a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
98c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
99c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx",
100c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
101150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
1026321381d18f9d478598c0996c1380633003961ddmtklein  defines = [ "SK_GAMMA_APPLY_TO_A8" ]
103b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  if (is_android) {
104b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    defines += [
105b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_EXPONENT=1.4",
106b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_CONTRAST=0.0",
107b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    ]
108b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  }
10988a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  if (is_official_build || is_android) {
11088a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    # TODO(bsalomon): it'd be nice to make Android normal.
11188a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    defines += [ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0" ]
11288a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  }
113789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  libs = []
114789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  lib_dirs = []
115789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  if (skia_use_vulkan) {
116789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    if (skia_vulkan_sdk != "") {
117789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon      include_dirs += [ "$skia_vulkan_sdk/x86_64/include/" ]
118789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon      lib_dirs += [ "$skia_vulkan_sdk/x86_64/lib/" ]
119789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    }
120789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    libs += [ "vulkan" ]
121789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  }
122c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
123c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
124c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
125c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
126c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
127c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
128c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
129c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
130c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
131c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
132c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
133c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
134c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
135c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1369b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1379b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1389b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1399b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1409b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1419b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1429b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1439b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1449b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1459b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1469b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1479b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1489b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1499b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1509b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1519b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1529b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1539b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
154a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
155a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
156422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
157c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1587d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
1597d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
160b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.none_sources
161b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
162b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
163b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1647d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
165b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
166b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.armv7_sources + skia_opts.neon_sources
1677d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
168b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
169b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
170b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
171b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
172b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.arm64_sources
173b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
174b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
175b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
176b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
177b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
178b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.crc32_sources
179b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
180b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
181b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1829b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
1839b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
184b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse2_sources
1859b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse2" ]
1869b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
1874e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
1889b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
1899b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
190b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
1919b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mssse3" ]
1929b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
1934e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
1949b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
1959b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
196b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
1979b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.1" ]
1989b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
199c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2009b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2019b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
202b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
2039b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.2" ]
2049b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2059b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2069b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2079b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
208b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
2099b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mavx" ]
210c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
211c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
21278d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Kleinopts("hsw") {
21378d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  enabled = is_x86
21478d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  sources = skia_opts.hsw_sources
21578d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  cflags = [
21678d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    "-mavx2",
21778d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    "-mbmi",
21878d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    "-mbmi2",
21978d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    "-mf16c",
22078d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    "-mfma",
22178d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  ]
22278d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein}
22378d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein
224349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
225349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
226b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.mips_dsp_sources
227b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
228349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
229349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
230c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
231457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
232457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
233457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
234cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
235cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
236cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
237457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
238457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
239cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
240cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
241cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
242cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
243cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
244cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
245457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2469b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
247457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
248457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
249457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
250457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
251457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
252457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
253457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
254457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
2556ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
256457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
257cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
258457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
259cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
260cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
261cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
262cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
263457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
264eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
265eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
266457b42a6398020c3791f62f8c8637653e0d39bccmtklein
267a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
268a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
269a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
270a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
271a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
272a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
273a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
274a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
275a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
276a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
277a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
278a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
279a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
280a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
281d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
282d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
283d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
284d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
285d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "//third_party/freetype2",
286d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
287d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
288d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
289d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
290d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
291d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
292d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
2933cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
2943cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
2953cc22180561ae17a64ff0e0f9ba173eac149009emtklein
2963cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
2973cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
2983cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
2993cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3003cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3011ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
3023cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
3033cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
3043cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
3053cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3063cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3073cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3083cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3093cc22180561ae17a64ff0e0f9ba173eac149009emtklein
310cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
311cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
312cdedd0e061f3f50cd217638c28b27d798d930896mtklein
313cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
314cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "//third_party/freetype2",
315cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
316cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
317cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
318cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
319cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
320cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
321cdedd0e061f3f50cd217638c28b27d798d930896mtklein
322457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("gif") {
323457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_giflib
324457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_GIF_LIBRARY" ]
325457b42a6398020c3791f62f8c8637653e0d39bccmtklein
326457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
327457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/giflib",
328457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
329457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
330457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkGifCodec.cpp",
331457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
332457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
333457b42a6398020c3791f62f8c8637653e0d39bccmtklein
33406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
33506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
336e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
337e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
33806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources = skia_gpu_sources + [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
33906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
34006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
34106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
34206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
34306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
34406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
34506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
34606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
34706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
34806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
34906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
35006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
35106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
35206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
35306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
35406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
355e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  libs = []
356e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
357e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
358e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
359e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
360e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
361e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
362e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
363e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
36406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
36506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
3666321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
3676321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
3686321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
3696321381d18f9d478598c0996c1380633003961ddmtklein
3706321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3716321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
3726321381d18f9d478598c0996c1380633003961ddmtklein  ]
3736321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3746321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
3756321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
3766321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
3776321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
3786321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
3796321381d18f9d478598c0996c1380633003961ddmtklein  ]
3806321381d18f9d478598c0996c1380633003961ddmtklein}
3816321381d18f9d478598c0996c1380633003961ddmtklein
3826321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
3836321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
3846321381d18f9d478598c0996c1380633003961ddmtklein
3856321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3866321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
3876321381d18f9d478598c0996c1380633003961ddmtklein  ]
388b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
389cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
3906321381d18f9d478598c0996c1380633003961ddmtklein
3916321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
3926321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
393cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
3946321381d18f9d478598c0996c1380633003961ddmtklein  }
3956321381d18f9d478598c0996c1380633003961ddmtklein}
3966321381d18f9d478598c0996c1380633003961ddmtklein
3976321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
3986321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
3996321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
4006321381d18f9d478598c0996c1380633003961ddmtklein
4016321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4026321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
4036321381d18f9d478598c0996c1380633003961ddmtklein  ]
4046321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4056321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
4066321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
4076321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
4086321381d18f9d478598c0996c1380633003961ddmtklein  ]
4096321381d18f9d478598c0996c1380633003961ddmtklein}
4106321381d18f9d478598c0996c1380633003961ddmtklein
4113cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
4123cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
4133cc22180561ae17a64ff0e0f9ba173eac149009emtklein
4143cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
4153cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
4163cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4173cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
4183cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
4193cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
4203cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4213cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
4223cc22180561ae17a64ff0e0f9ba173eac149009emtklein
423457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
424457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
425457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
426457b42a6398020c3791f62f8c8637653e0d39bccmtklein
427457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
428457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
429457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
430457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
431457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
432457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
433457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
434457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
435457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
436eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
4376321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
4386321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
4396321381d18f9d478598c0996c1380633003961ddmtklein
4406321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4416321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
4426321381d18f9d478598c0996c1380633003961ddmtklein  ]
4436321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4446321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
4456321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
4466321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
4476321381d18f9d478598c0996c1380633003961ddmtklein  ]
4486321381d18f9d478598c0996c1380633003961ddmtklein}
4496321381d18f9d478598c0996c1380633003961ddmtklein
450c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
451c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
452c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
453c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
454c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
455b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
456b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
4579b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
458b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
459349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
460a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
461d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
4623cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
463cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
464457b42a6398020c3791f62f8c8637653e0d39bccmtklein    ":gif",
46506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
46678d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    ":hsw",
4676321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
4689b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
4696321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
4706321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
4719b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
4729b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
4739b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
4749b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
4753cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
476eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
4776321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
478c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
479c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
480c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
481b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
482b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_effects_sources
483b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_sksl_sources
484b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
485c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
48625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
48725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
48825c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
4891211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
4901211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
4911211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
4921211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
4931211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
4941211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
4951211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
4961211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
49725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
4981211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
4991211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
5001211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
501c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
502c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
5032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
504c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
505c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
5061211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
507c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
508c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
509c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
510c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
51125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
51225c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
513c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
514c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
515c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
516c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
517b944728b93a1623d73be31413a6798e0b7dddc16brettw
5187d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
5197d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
520c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
521c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
522c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
523c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
524c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
525c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw_factory.cpp",
526c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
527c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
528c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
529605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
530c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
531c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
532c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
53325c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
534c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
535b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
536b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
537c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
538c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
539c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
540605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
541c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
54225c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
543c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
544c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
545c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
5467d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
5477d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
5487d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
5497d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
5507d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
55106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
5527d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
5537d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
5547d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
5557d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
5567d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5577d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
5587d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
559c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
56009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
56109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
56209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
56309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
56409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
56506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
566c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
567c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
568c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
569c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
5707d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
571c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
572c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
573c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
574c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
57509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
57609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
57709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
57809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
579c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
5806fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
5816fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
58206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
5836fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
584c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
585c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
586ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
587ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
588ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
589ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
590ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
591ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
592ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
593ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
594ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
595ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
596ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
597ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
598ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
5991211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
6001211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
6011211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
602c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
603bc34404dc3feb4dac854aa43825646dd01139ccbBen Wagner  inputs = skia_h_headers
6041211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
6051211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
6061211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
6071211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
6081211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
60906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
6101fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
6111fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
6121fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
6131fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    include_dirs = [ "$target_gen_dir" ]
6141fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
6151fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
6161fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
6171fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
61856d5669095feca663e9e05f4621146abeee626ecmtklein
6191fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
6201fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
6211fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
6221fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
6231fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6241fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
6251fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
6261fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
6271fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6281fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
629c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
63025c81d4e651b43b8217c365c87d530036529a673mtklein
631c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
632c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
633c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
634c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
635c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
636a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
637a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
638a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
639c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
640c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
641c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
642c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
643c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
644c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
645c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
646c095df55e86e7126b0582856720bb9177b553ff1mtklein
647c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
648c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
649c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
650c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
651c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
652c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
65325c81d4e651b43b8217c365c87d530036529a673mtklein  }
654c095df55e86e7126b0582856720bb9177b553ff1mtklein
655c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
65638925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
65738925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
65838925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
65938925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
660d68f9b00389bf676b171f250e684486cb2fbd404mtklein
661d68f9b00389bf676b171f250e684486cb2fbd404mtklein      deps = []
66238925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
66338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
66438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
66538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
66638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
667605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
66838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
66938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
67038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
67138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
67238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
67338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
67438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
67538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
67638925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
67738925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
67838925aa37c17c0f54868852b8c3edf373400c742mtklein
67938925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
68038925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
68138925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
68238925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
68338925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
68438925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
68538925aa37c17c0f54868852b8c3edf373400c742mtklein      }
6866ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein
687d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_angle) {
688d68f9b00389bf676b171f250e684486cb2fbd404mtklein        public_defines += [ "SK_ANGLE" ]
689d68f9b00389bf676b171f250e684486cb2fbd404mtklein        deps += [ "//third_party/angle2" ]
690d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
69138925aa37c17c0f54868852b8c3edf373400c742mtklein      }
69238925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
69338925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
69438925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
69538925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
69638925aa37c17c0f54868852b8c3edf373400c742mtklein      }
697d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_vulkan) {
698d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
699d68f9b00389bf676b171f250e684486cb2fbd404mtklein      }
700a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
70125c81d4e651b43b8217c365c87d530036529a673mtklein  }
70225c81d4e651b43b8217c365c87d530036529a673mtklein
703c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
704c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
705c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
706c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
707046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
708046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
709046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
710046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
711046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
712c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
713c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
714c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
715c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
716046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
717c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
718c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
71925c81d4e651b43b8217c365c87d530036529a673mtklein  }
72025c81d4e651b43b8217c365c87d530036529a673mtklein
721c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
722c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
723c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
724c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
725c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
726c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
727c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
728c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
729c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
730b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
731c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
7320590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
733c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
734c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
735c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
736c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
737c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
738c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
739c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
740c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
741c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkOverdrawMode.cpp",
742c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
743c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
744c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
745c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
746c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
747c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
748c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
749046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
750c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
751c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
752c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
753c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
754c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
755c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
756c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
75725c81d4e651b43b8217c365c87d530036529a673mtklein
758c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
759c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
760c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
761c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
762c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
763c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
764c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
765c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
766c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
767c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
768c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
769c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
770c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
771c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
772c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
773c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
77425c81d4e651b43b8217c365c87d530036529a673mtklein
775c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
776c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
777c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
778c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
779c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
780c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
781c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
782c095df55e86e7126b0582856720bb9177b553ff1mtklein
783c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
784c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
785a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
786a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
787a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
788a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
789a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
790a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
791a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
792a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
793c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
7946cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
795c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
796c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
797c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
799c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
800c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
801c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
802c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8032f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
804c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
805c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
806c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
807c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
808c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
809c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
810c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
811c095df55e86e7126b0582856720bb9177b553ff1mtklein
812c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
813c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
814c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
815c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
816c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
817c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
818c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
819c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
820c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
821c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
822c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
823c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
824c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
825c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
826c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8272b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
828c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
829c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
830c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
831c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
832c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
833c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
834c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
835c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
836c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
837c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
83828d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
839c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
840c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
841c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
842c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
843c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
844c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
845c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
84628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
847c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
848c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
849c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
850c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
851c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
852c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
853c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
854a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
8552b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
8562b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8572b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
8582b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
8592b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
8602b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8612b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
8622b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
863046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
864a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
8652b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8662b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8672b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8682b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8692f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
8702b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8712b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8722b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
8732b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8742b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8752b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8762b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
877a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein  if (!is_debug) {  # I've benchmarked debug code once too many times...
878a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    executable("monobench") {
879a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      sources = [
880a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        "tools/monobench.cpp",
881a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
882a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      deps = [
883a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":bench",
884a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":skia",
885a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
886a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      testonly = true
887a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    }
8882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8892b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8902b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
8912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
8932b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
896046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
8976519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
8982b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8992b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
9002b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
9012b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
9022b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
9032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
9042b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
9052b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
9062b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
90719a9720978700a24efed8dda7e0935ea2b7338c4halcanary
90838925aa37c17c0f54868852b8c3edf373400c742mtklein  if (skia_enable_gpu) {
90938925aa37c17c0f54868852b8c3edf373400c742mtklein    executable("skpbench") {
91038925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
91138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/skpbench/skpbench.cpp",
91238925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
91338925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
91438925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
91538925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
91638925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
91738925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
91838925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
91938925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
92038925aa37c17c0f54868852b8c3edf373400c742mtklein    }
9214b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
9224b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
9236f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein  if (current_cpu != "mipsel") {  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
9243eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
9256f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
9266f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
9276f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
9286f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
9296f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
9306f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
9316f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
9326f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
9336f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
9346f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
93519a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
9363eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
9373eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
9383eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
9393eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
9403eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9413eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
9423eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
9433eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9443eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
9453eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
946046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
947046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
948046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
949046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
950046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
951046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
952046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
953046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
954046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
955046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
956046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
957046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
958ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein
959ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  executable("skiaserve") {
960ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    sources = [
961ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Request.cpp",
962ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Response.cpp",
963ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/skiaserve.cpp",
964ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp",
965ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchesHandler.cpp",
966ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BreakHandler.cpp",
967ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
968ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/CmdHandler.cpp",
969ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
970ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DataHandler.cpp",
971ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
972ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
973ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ImgHandler.cpp",
974ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/InfoHandler.cpp",
975ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/PostHandler.cpp",
976ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/QuitHandler.cpp",
977ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/RootHandler.cpp",
978ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
979ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    deps = [
980ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":flags",
981ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":gpu_tool_utils",
982ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":skia",
983ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":tool_utils",
984ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/jsoncpp",
985ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libmicrohttpd",
986ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libpng",
987ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
988ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    testonly = true
989ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  }
99025c81d4e651b43b8217c365c87d530036529a673mtklein}
991