BUILD.gn revision 38925aa37c17c0f54868852b8c3edf373400c742
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",
504c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
505c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
506c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
50725c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
508c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
509b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
510b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
511c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
512c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
513c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
514c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
51525c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
516c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
517c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
518c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
5197d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
5207d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
5217d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
5227d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
5237d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
52406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
5257d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
5267d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
5277d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
5287d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
5297d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5307d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
5317d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
532c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
53309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
53409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
53509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
53609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
53709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
53806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
539c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
540c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
541c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
542c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
5437d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
544c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
545c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
546c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
547c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
54809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
54909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
55009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
55109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
552c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
5536fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
5546fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
55506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
5566fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
557c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
558c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
559ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
560ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
561ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
562ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
563ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
564ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
565ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
566ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
567ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
568ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
569ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
570ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
571ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
5721211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
5731211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
5741211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
575c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
5761211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
5771211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
5781211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
5791211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
5801211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
58106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
5821fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
5831fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
5841fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
5851fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    include_dirs = [ "$target_gen_dir" ]
5861fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
5871fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
5881fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
5891fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
59056d5669095feca663e9e05f4621146abeee626ecmtklein
5911fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
5921fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
5931fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
5941fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
5951fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
5961fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
5971fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
5981fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
5991fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6001fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
601c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
60225c81d4e651b43b8217c365c87d530036529a673mtklein
603c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
604c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
605c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
606c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
607c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
608a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
609a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
610a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
611c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
612c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
613c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
614c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
615c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
616c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
617c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
618c095df55e86e7126b0582856720bb9177b553ff1mtklein
619c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
620c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
621c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
622c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
623c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
624c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
62525c81d4e651b43b8217c365c87d530036529a673mtklein  }
626c095df55e86e7126b0582856720bb9177b553ff1mtklein
627c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
62838925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
62938925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
63038925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
63138925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
63238925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
63338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
63438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
63538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
63638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
63738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
63838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
63938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
64038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
64138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
64238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
64338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
64438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
64538925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
64638925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
64738925aa37c17c0f54868852b8c3edf373400c742mtklein
64838925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
64938925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
65038925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
65138925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
65238925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
65338925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
65438925aa37c17c0f54868852b8c3edf373400c742mtklein      }
6556ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein
65638925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_vulkan) {
65738925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
65838925aa37c17c0f54868852b8c3edf373400c742mtklein      }
65938925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
66038925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
66138925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
66238925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
66338925aa37c17c0f54868852b8c3edf373400c742mtklein      }
664a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
66525c81d4e651b43b8217c365c87d530036529a673mtklein  }
66625c81d4e651b43b8217c365c87d530036529a673mtklein
667c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
668c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
669c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
670c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
671046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
672046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
673046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
674046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
675046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
676c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
677c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
678c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
679c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
680046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
681c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
682c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
68325c81d4e651b43b8217c365c87d530036529a673mtklein  }
68425c81d4e651b43b8217c365c87d530036529a673mtklein
685c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
686c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
687c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
688c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
689c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
690c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
691c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
692c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
693c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
694b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
695c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
6960590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
697c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
698c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
699c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
700c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
701c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
702c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
703c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
704c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
705c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkOverdrawMode.cpp",
706c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
707c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
708c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
709c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
710c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
711c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
712c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
713046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
714c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
715c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
716c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
717c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
718c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
719c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
720c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
72125c81d4e651b43b8217c365c87d530036529a673mtklein
722c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
723c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
724c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
725c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
726c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
727c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
728c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
729c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
730c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
731c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
732c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
733c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
734c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
735c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
736c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
737c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
73825c81d4e651b43b8217c365c87d530036529a673mtklein
739c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
740c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
741c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
742c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
743c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
744c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
745c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
746c095df55e86e7126b0582856720bb9177b553ff1mtklein
747c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
748c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
749a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
750a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
751a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
752a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
753a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
754a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
755a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
756a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
757c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
7586cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
759c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
760c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
761c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
762c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
763c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
764c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
765c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
766c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7672f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
768c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
769c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
770c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
771c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
772c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
773c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
774c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
775c095df55e86e7126b0582856720bb9177b553ff1mtklein
776c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
777c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
778c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
779c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
780c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
781c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
782c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
783c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
784c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
785c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
786c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
787c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
788c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
789c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
790c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
792c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
793c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
794c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
795c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
796c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
797c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
799c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
800c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
801c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
80228d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
803c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
804c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
805c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
806c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
807c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
808c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
809c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
81028d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
811c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
812c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
813c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
814c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
815c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
816c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
817c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
818a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
8192b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
8202b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8212b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
8222b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
8232b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
8242b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8252b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
8262b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
827046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
828a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
8292b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8302b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8312b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8322b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8332f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
8342b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8352b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8362b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
8372b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8382b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8392b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8402b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8412b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("monobench") {
8422b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8432b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "tools/monobench.cpp",
8442b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8452b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8462b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
8472b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8482b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8492b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8502b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8512b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8522b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
8532b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8542b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
8552b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8562b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8572b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
858046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
8596519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
8602b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8612b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8622b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8632b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8642b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8652b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8662b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8672b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8682b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
86919a9720978700a24efed8dda7e0935ea2b7338c4halcanary
87038925aa37c17c0f54868852b8c3edf373400c742mtklein  if (skia_enable_gpu) {
87138925aa37c17c0f54868852b8c3edf373400c742mtklein    executable("skpbench") {
87238925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
87338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/skpbench/skpbench.cpp",
87438925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
87538925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
87638925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
87738925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
87838925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
87938925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
88038925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
88138925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
88238925aa37c17c0f54868852b8c3edf373400c742mtklein    }
8834b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
8844b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
8856f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein  if (current_cpu != "mipsel") {  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
8863eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
8876f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
8886f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
8896f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
8906f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8916f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
8926f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
8936f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
8946f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8956f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
8966f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
89719a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
8983eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
8993eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
9003eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
9013eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
9023eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9033eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
9043eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
9053eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
9063eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
9073eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
908046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
909046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
910046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
911046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
912046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
913046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
914046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
915046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
916046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
917046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
918046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
919046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
92025c81d4e651b43b8217c365c87d530036529a673mtklein}
921