BUILD.gn revision 605d95289379a07aad50b38ca6badbee45813d56
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() {
136321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
143cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
15cdedd0e061f3f50cd217638c28b27d798d930896mtklein  skia_use_freetype = is_android || is_fuchsia || is_linux
16457b42a6398020c3791f62f8c8637653e0d39bccmtklein  skia_use_giflib = !is_fuchsia
176321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
186321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
19eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
20a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein  skia_use_mesa = false
216321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_sfntly = !is_fuchsia
22f29180e65afdd3bd5ff3c1a2f8d456f9aea125edmtklein  skia_use_vulkan = is_android && defined(ndk_api) && ndk_api >= 24
236321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
241bd72ba2cb349788223e3e7304f25751c87f1f95mtklein
251bd72ba2cb349788223e3e7304f25751c87f1f95mtklein  skia_enable_android_framework_defines = false
2606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  skia_enable_gpu = true
273e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_tools = is_skia_standalone
283e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_vulkan_debug_layers = is_skia_standalone && is_debug
29c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
30c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
3138925aa37c17c0f54868852b8c3edf373400c742mtklein# Our tools require static linking (they use non-exported symbols).
3238925aa37c17c0f54868852b8c3edf373400c742mtkleinskia_enable_tools = skia_enable_tools && !is_component_build
3306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
34a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
35a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
361211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
3725c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
38fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
391211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
401211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
411211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
421211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
431211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
441211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
451211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/images",
461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
471211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
4825c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
491211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
501211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
5125c81d4e651b43b8217c365c87d530036529a673mtklein  "include/xml",
521211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
531211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
54c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
55c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
57c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_DLL" ]
585561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  if (is_linux) {
595561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
605561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
61cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  if (skia_enable_android_framework_defines) {
62cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein    defines += skia_android_framework_defines
63cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  }
6406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (!skia_enable_gpu) {
6506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    defines += [ "SK_SUPPORT_GPU=0" ]
6606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
67c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
68c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
69c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
70c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
71c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
72c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
73c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
74c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
75c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
761211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
77c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/config",
78c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
79c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
8025c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
8125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
82c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/gpu",
83c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
84c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
85c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
86c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
87c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
89c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
919e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
92c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
937a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
94c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
95c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx",
96c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
97150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
986321381d18f9d478598c0996c1380633003961ddmtklein  defines = [ "SK_GAMMA_APPLY_TO_A8" ]
99b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  if (is_android) {
100b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    defines += [
101b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_EXPONENT=1.4",
102b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_CONTRAST=0.0",
103b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    ]
104b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  }
10588a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  if (is_official_build || is_android) {
10688a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    # TODO(bsalomon): it'd be nice to make Android normal.
10788a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    defines += [ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0" ]
10888a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  }
109c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
110c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
111c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
112c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
113c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
114c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
115c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
116c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
117c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
118c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
119c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
120c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
121c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
122c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1239b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1249b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1259b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1269b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1279b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1289b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1299b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1309b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1319b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1329b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1339b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1349b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1359b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1369b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1379b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1389b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1399b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1409b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
141a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
142a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
143422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
144c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1457d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
1467d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
147b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.none_sources
148b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
149b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
150b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1517d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
152b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
153b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.armv7_sources + skia_opts.neon_sources
1547d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
155b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
156b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
157b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
158b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
159b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.arm64_sources
160b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
161b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
162b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
163b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
164b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
165b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.crc32_sources
166b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
167b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
168b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1699b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
1709b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
171b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse2_sources
1729b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse2" ]
1739b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
1744e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
1759b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
1769b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
177b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
1789b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mssse3" ]
1799b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
1804e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
1819b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
1829b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
183b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
1849b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.1" ]
1859b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
186c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1879b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
1889b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
189b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
1909b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.2" ]
1919b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
1929b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
1939b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
1949b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
195b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
1969b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mavx" ]
197c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
198c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
199349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
200349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
201b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.mips_dsp_sources
202b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
203349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
204349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
205c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
206457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
207457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
208457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
209cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
210cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
211cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
212457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
213457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
214cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
215cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
216cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
217cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
218cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
219cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
220457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2219b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
222457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
223457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
224457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
225457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
226457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
227457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
228457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
229457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
2306ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
231457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
232cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
233457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
234cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
235cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
236cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
237cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
238457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
239eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
240eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
241457b42a6398020c3791f62f8c8637653e0d39bccmtklein
242a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
243a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
244a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
245a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
246a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
247a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
248a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
249a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
250a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
251a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
252a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
253a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
254a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
255a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
256d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
257d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
258d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
259d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
260d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "//third_party/freetype2",
261d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
262d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
263d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
264d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
265d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
266d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
267d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
2683cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
2693cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
2703cc22180561ae17a64ff0e0f9ba173eac149009emtklein
2713cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
2723cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
2733cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
2743cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
2753cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
2761ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
2773cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
2783cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
2793cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
2803cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
2813cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
2823cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
2833cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
2843cc22180561ae17a64ff0e0f9ba173eac149009emtklein
285cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
286cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
287cdedd0e061f3f50cd217638c28b27d798d930896mtklein
288cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
289cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "//third_party/freetype2",
290cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
291cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
292cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
293cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
294cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
295cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
296cdedd0e061f3f50cd217638c28b27d798d930896mtklein
297457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("gif") {
298457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_giflib
299457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_GIF_LIBRARY" ]
300457b42a6398020c3791f62f8c8637653e0d39bccmtklein
301457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
302457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/giflib",
303457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
304457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
305457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkGifCodec.cpp",
306457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
307457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
308457b42a6398020c3791f62f8c8637653e0d39bccmtklein
30906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
31006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
311e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
312e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
31306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources = skia_gpu_sources + [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
31406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
31506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
31606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
31706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
31806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
31906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
32006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
32106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
32206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
32306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
32406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
32506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
32606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
32706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
32806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
32906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
330e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  libs = []
331e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
332e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
333e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
334e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
335e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    libs += [ "vulkan" ]
336e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
337e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
338e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
339e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
34006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
34106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
3426321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
3436321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
3446321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
3456321381d18f9d478598c0996c1380633003961ddmtklein
3466321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3476321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
3486321381d18f9d478598c0996c1380633003961ddmtklein  ]
3496321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3506321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
3516321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
3526321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
3536321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
3546321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
3556321381d18f9d478598c0996c1380633003961ddmtklein  ]
3566321381d18f9d478598c0996c1380633003961ddmtklein}
3576321381d18f9d478598c0996c1380633003961ddmtklein
3586321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
3596321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
3606321381d18f9d478598c0996c1380633003961ddmtklein
3616321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3626321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
3636321381d18f9d478598c0996c1380633003961ddmtklein  ]
364b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
365cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
3666321381d18f9d478598c0996c1380633003961ddmtklein
3676321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
3686321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
369cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
3706321381d18f9d478598c0996c1380633003961ddmtklein  }
3716321381d18f9d478598c0996c1380633003961ddmtklein}
3726321381d18f9d478598c0996c1380633003961ddmtklein
3736321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
3746321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
3756321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
3766321381d18f9d478598c0996c1380633003961ddmtklein
3776321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3786321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
3796321381d18f9d478598c0996c1380633003961ddmtklein  ]
3806321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3816321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
3826321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
3836321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
3846321381d18f9d478598c0996c1380633003961ddmtklein  ]
3856321381d18f9d478598c0996c1380633003961ddmtklein}
3866321381d18f9d478598c0996c1380633003961ddmtklein
3873cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
3883cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
3893cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3903cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
3913cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
3923cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3933cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3943cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
3953cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
3963cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3973cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3983cc22180561ae17a64ff0e0f9ba173eac149009emtklein
399457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
400457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
401457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
402457b42a6398020c3791f62f8c8637653e0d39bccmtklein
403457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
404457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
405457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
406457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
407457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
408457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
409457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
410457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
411457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
412eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
4136321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
4146321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
4156321381d18f9d478598c0996c1380633003961ddmtklein
4166321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4176321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
4186321381d18f9d478598c0996c1380633003961ddmtklein  ]
4196321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4206321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
4216321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
4226321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
4236321381d18f9d478598c0996c1380633003961ddmtklein  ]
4246321381d18f9d478598c0996c1380633003961ddmtklein}
4256321381d18f9d478598c0996c1380633003961ddmtklein
426c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
427c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
428c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
429c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
430c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
431b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
432b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
4339b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
434b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
435349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
436a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
437d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
4383cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
439cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
440457b42a6398020c3791f62f8c8637653e0d39bccmtklein    ":gif",
44106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
4426321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
4439b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
4446321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
4456321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
4469b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
4479b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
4489b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
4499b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
4503cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
451eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
4526321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
453c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
454c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
455c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
456b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
457b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_effects_sources
458b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_sksl_sources
459b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
460c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
46125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
46225c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
46325c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
4641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
4651211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
4661211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
4671211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
4681211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
4691211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
4701211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
4711211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
47225c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
4731211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
4741211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
4751211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
476c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
477c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
4782b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
479c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
480c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
4811211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
482c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
483c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
484c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
485c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
48625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
48725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
488c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
489c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
490c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
491c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
492b944728b93a1623d73be31413a6798e0b7dddc16brettw
4937d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
4947d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
495c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
496c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
497c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
498c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
499c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
500c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw_factory.cpp",
501c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
502c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
503c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
504605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
505c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
506c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
507c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
50825c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
509c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
510b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
511b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
512c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
513c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
514c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
515605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
516c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
51725c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
518c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
519c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
520c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
5217d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
5227d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
5237d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
5247d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
5257d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
52606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
5277d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
5287d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
5297d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
5307d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
5317d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5327d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
5337d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
534c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
53509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
53609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
53709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
53809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
53909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
54006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
541c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
542c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
543c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
544c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
5457d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
546c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
547c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
548c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
549c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
55009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
55109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
55209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
55309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
554c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
5556fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
5566fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
55706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
5586fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
559c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
560c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
561ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
562ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
563ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
564ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
565ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
566ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
567ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
568ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
569ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
570ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
571ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
572ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
573ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
5741211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
5751211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
5761211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
577c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
5781211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
5791211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
5801211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
5811211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
5821211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
58306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
5841fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
5851fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
5861fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
5871fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    include_dirs = [ "$target_gen_dir" ]
5881fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
5891fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
5901fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
5911fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
59256d5669095feca663e9e05f4621146abeee626ecmtklein
5931fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
5941fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
5951fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
5961fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
5971fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
5981fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
5991fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
6001fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
6011fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6021fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
603c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
60425c81d4e651b43b8217c365c87d530036529a673mtklein
605c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
606c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
607c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
608c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
609c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
610a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
611a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
612a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
613c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
614c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
615c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
616c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
617c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
618c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
619c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
620c095df55e86e7126b0582856720bb9177b553ff1mtklein
621c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
622c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
623c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
624c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
625c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
626c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
62725c81d4e651b43b8217c365c87d530036529a673mtklein  }
628c095df55e86e7126b0582856720bb9177b553ff1mtklein
629c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
63038925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
63138925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
63238925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
63338925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
63438925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
63538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
63638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
63738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
63838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
639605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
64038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
64138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
64238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
64338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
64438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
64538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
64638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
64738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
64838925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
64938925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
65038925aa37c17c0f54868852b8c3edf373400c742mtklein
65138925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
65238925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
65338925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
65438925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
65538925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
65638925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
65738925aa37c17c0f54868852b8c3edf373400c742mtklein      }
6586ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein
65938925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_vulkan) {
66038925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
66138925aa37c17c0f54868852b8c3edf373400c742mtklein      }
66238925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
66338925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
66438925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
66538925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
66638925aa37c17c0f54868852b8c3edf373400c742mtklein      }
667a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
66825c81d4e651b43b8217c365c87d530036529a673mtklein  }
66925c81d4e651b43b8217c365c87d530036529a673mtklein
670c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
671c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
672c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
673c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
674046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
675046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
676046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
677046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
678046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
679c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
680c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
681c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
682c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
683046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
684c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
685c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
68625c81d4e651b43b8217c365c87d530036529a673mtklein  }
68725c81d4e651b43b8217c365c87d530036529a673mtklein
688c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
689c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
690c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
691c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
692c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
693c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
694c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
695c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
696c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
697b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
698c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
6990590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
700c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
701c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
702c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
703c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
704c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
705c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
706c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
707c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
708c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkOverdrawMode.cpp",
709c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
710c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
711c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
712c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
713c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
714c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
715c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
716046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
717c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
718c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
719c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
720c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
721c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
722c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
723c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
72425c81d4e651b43b8217c365c87d530036529a673mtklein
725c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
726c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
727c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
728c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
729c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
730c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
731c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
732c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
733c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
734c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
735c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
736c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
737c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
738c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
739c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
740c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
74125c81d4e651b43b8217c365c87d530036529a673mtklein
742c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
743c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
744c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
745c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
746c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
747c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
748c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
749c095df55e86e7126b0582856720bb9177b553ff1mtklein
750c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
751c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
752a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
753a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
754a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
755a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
756a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
757a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
758a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
759a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
760c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
7616cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
762c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
763c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
764c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
765c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
766c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
767c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
768c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
769c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7702f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
771c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
772c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
773c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
774c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
775c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
776c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
777c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
778c095df55e86e7126b0582856720bb9177b553ff1mtklein
779c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
780c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
781c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
782c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
783c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
784c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
785c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
786c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
787c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
788c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
789c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
790c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
791c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
792c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
793c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
795c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
796c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
797c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
799c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
800c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
801c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
802c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
803c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
804c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
80528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
806c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
807c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
808c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
809c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
810c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
811c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
812c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
81328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
814c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
815c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
816c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
817c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
818c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
819c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
820c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
821a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
8222b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
8232b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8242b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
8252b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
8262b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
8272b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8282b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
8292b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
830046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
831a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
8322b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8332b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8342b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8352b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8362f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
8372b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8382b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8392b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
8402b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8412b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8422b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8432b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8442b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("monobench") {
8452b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8462b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "tools/monobench.cpp",
8472b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8482b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8492b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
8502b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8512b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8522b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8532b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8542b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8552b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
8562b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8572b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
8582b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8592b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8602b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
861046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
8626519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
8632b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8642b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8652b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8662b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8672b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8682b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8692b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8702b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8712b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
87219a9720978700a24efed8dda7e0935ea2b7338c4halcanary
87338925aa37c17c0f54868852b8c3edf373400c742mtklein  if (skia_enable_gpu) {
87438925aa37c17c0f54868852b8c3edf373400c742mtklein    executable("skpbench") {
87538925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
87638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/skpbench/skpbench.cpp",
87738925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
87838925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
87938925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
88038925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
88138925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
88238925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
88338925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
88438925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
88538925aa37c17c0f54868852b8c3edf373400c742mtklein    }
8864b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
8874b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
8886f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein  if (current_cpu != "mipsel") {  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
8893eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
8906f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
8916f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
8926f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
8936f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8946f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
8956f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
8966f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
8976f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8986f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
8996f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
90019a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
9013eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
9023eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
9033eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
9043eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
9053eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9063eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
9073eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
9083eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9093eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
9103eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
911046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
912046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
913046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
914046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
915046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
916046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
917046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
918046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
919046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
920046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
921046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
922046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
92325c81d4e651b43b8217c365c87d530036529a673mtklein}
924