BUILD.gn revision 0590fa549d09bd1b6f26c0d5e470f35efe430d65
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
6c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleindeclare_args() {
7c095df55e86e7126b0582856720bb9177b553ff1mtklein  skia_enable_tools = !is_fuchsia && !is_component_build
8c095df55e86e7126b0582856720bb9177b553ff1mtklein
96321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
103cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
113cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_freetype = is_android || is_linux
12457b42a6398020c3791f62f8c8637653e0d39bccmtklein  skia_use_giflib = !is_fuchsia
136321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
146321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
15eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
166321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_sfntly = !is_fuchsia
176321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
18c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
19c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
20a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
21a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
221211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
2325c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
24fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
251211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
261211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
271211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
281211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
291211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
301211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
311211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/images",
321211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
331211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
3425c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
351211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
361211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
3725c81d4e651b43b8217c365c87d530036529a673mtklein  "include/xml",
381211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
391211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
40c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
41c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
421211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
43c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_DLL" ]
445561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  if (is_linux) {
455561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
465561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
47c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
48c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
49c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
50c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
51c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
52c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
53c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
54c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
55c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
57c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/config",
58c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
59c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
6025c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
6125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
62c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/gpu",
63c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
64c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
65c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
66c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
67c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
682b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
69c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
70c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
719e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
72c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
737a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
74c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
75c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx",
76c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
77150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
786321381d18f9d478598c0996c1380633003961ddmtklein  defines = [ "SK_GAMMA_APPLY_TO_A8" ]
79c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
80c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
81c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
82c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
83c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
84c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
85c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
86c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
87c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
88c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
89c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
91c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
92c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
937fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleincore_gypi = exec_script("gn/gypi_to_gn.py",
94c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        [
95c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          rebase_path("gyp/core.gypi"),
96c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          "--replace=<(skia_include_path)=include",
97c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          "--replace=<(skia_src_path)=src",
98c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        ],
99c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        "scope",
100c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        [ "gyp/core.gypi" ])
101c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1027fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleineffects_gypi = exec_script("gn/gypi_to_gn.py",
103c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           [
104c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                             rebase_path("gyp/effects.gypi"),
105c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                             "--replace=<(skia_include_path)=include",
106c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                             "--replace=<(skia_src_path)=src",
107c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           ],
108c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           "scope",
109c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           [ "gyp/effects.gypi" ])
110c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1117fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleingpu_gypi = exec_script("gn/gypi_to_gn.py",
112c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       [
113c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         rebase_path("gyp/gpu.gypi"),
114c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         "--replace=<(skia_include_path)=include",
115c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         "--replace=<(skia_src_path)=src",
116c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       ],
117c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       "scope",
118c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       [ "gyp/gpu.gypi" ])
119c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1207fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleinopts_gypi = exec_script("gn/gypi_to_gn.py",
121c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        [
122c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          rebase_path("gyp/opts.gypi"),
123c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          "--replace=<(skia_include_path)=include",
124c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                          "--replace=<(skia_src_path)=src",
125c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        ],
126c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        "scope",
127c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                        [ "gyp/opts.gypi" ])
128c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1297fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleinpdf_gypi = exec_script("gn/gypi_to_gn.py",
130c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       [
131c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         rebase_path("gyp/pdf.gypi"),
132c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         "--replace=<(skia_include_path)=include",
133c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         "--replace=<(skia_src_path)=src",
134c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       ],
135c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       "scope",
136c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                       [ "gyp/pdf.gypi" ])
137c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1389e0d9ddc0ef39e239670b22e5439993c45f4ae42mtkleinsksl_gypi = exec_script("gn/gypi_to_gn.py",
1399e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                        [
1409e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                          rebase_path("gyp/sksl.gypi"),
1419e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                          "--replace=<(skia_include_path)=include",
1429e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                          "--replace=<(skia_src_path)=src",
1439e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                        ],
1449e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                        "scope",
1459e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein                        [ "gyp/sksl.gypi" ])
1469e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein
1477fbfbbe8f435fde7233c78f4f2dd1efb4fdd324cmtkleinutils_gypi = exec_script("gn/gypi_to_gn.py",
148c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         [
149c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           rebase_path("gyp/utils.gypi"),
150c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           "--replace=<(skia_include_path)=include",
151c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                           "--replace=<(skia_src_path)=src",
152c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         ],
153c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         "scope",
154c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein                         [ "gyp/utils.gypi" ])
155c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1569b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1579b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1589b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1599b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1609b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1619b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1629b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1639b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1649b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1659b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1669b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1679b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1689b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1699b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1709b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1719b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1729b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1739b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
174a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
175a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
176422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
177c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1787d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
1797d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
1807d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  sources = opts_gypi.none_sources
181b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
182b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
183b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1847d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
185b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
1867d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  sources = opts_gypi.armv7_sources + opts_gypi.neon_sources
1877d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
188b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
189b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
190b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
191b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
192b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  sources = opts_gypi.arm64_sources
193b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
194b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
195b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
196b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
197b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
198b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  sources = opts_gypi.crc32_sources
199b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
200b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
201b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
2029b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
2039b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
2049b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  sources = opts_gypi.sse2_sources
2059b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse2" ]
2069b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2074e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2089b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
2099b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
2109b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  sources = opts_gypi.ssse3_sources
2119b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mssse3" ]
2129b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2134e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2149b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
2159b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
2169b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  sources = opts_gypi.sse41_sources
2179b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.1" ]
2189b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
219c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2209b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2219b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
2229b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  sources = opts_gypi.sse42_sources
2239b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-msse4.2" ]
2249b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2259b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2269b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2279b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
2289b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  sources = opts_gypi.avx_sources
2299b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  cflags = [ "-mavx" ]
230c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
231c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
232349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
233349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
234349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  sources = opts_gypi.mips_dsp_sources
235b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
236349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
237349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
238c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
239457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
240457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
241457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
242cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
243cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
244cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
245457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
246457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
247cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
248cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
249cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
250cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
251cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
252cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
253457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2549b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
255457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
256457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
257457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
258457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
259457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
260457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
261457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
262457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
263457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
264cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
265457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
266cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
267cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
268cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
269cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
270457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
271eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
272eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
273457b42a6398020c3791f62f8c8637653e0d39bccmtklein
274a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
275a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
276a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
277a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
278a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
279a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
280a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
281a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
282a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
283a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
284a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
285a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
286a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
287a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
2883cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
2893cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
2903cc22180561ae17a64ff0e0f9ba173eac149009emtklein
2913cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
2923cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
2933cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
2943cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
2953cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
2963cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
2973cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
2983cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
2993cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3003cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3013cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3023cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3033cc22180561ae17a64ff0e0f9ba173eac149009emtklein
304457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("gif") {
305457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_giflib
306457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_GIF_LIBRARY" ]
307457b42a6398020c3791f62f8c8637653e0d39bccmtklein
308457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
309457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/giflib",
310457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
311457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
312457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkGifCodec.cpp",
313457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
314457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
315457b42a6398020c3791f62f8c8637653e0d39bccmtklein
3166321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
3176321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
3186321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
3196321381d18f9d478598c0996c1380633003961ddmtklein
3206321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3216321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
3226321381d18f9d478598c0996c1380633003961ddmtklein  ]
3236321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3246321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
3256321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
3266321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
3276321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
3286321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
3296321381d18f9d478598c0996c1380633003961ddmtklein  ]
3306321381d18f9d478598c0996c1380633003961ddmtklein}
3316321381d18f9d478598c0996c1380633003961ddmtklein
3326321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
3336321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
3346321381d18f9d478598c0996c1380633003961ddmtklein
3356321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3366321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
3376321381d18f9d478598c0996c1380633003961ddmtklein  ]
3386321381d18f9d478598c0996c1380633003961ddmtklein  sources = pdf_gypi.sources
339cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
3406321381d18f9d478598c0996c1380633003961ddmtklein
3416321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
3426321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
343cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
3446321381d18f9d478598c0996c1380633003961ddmtklein  }
3456321381d18f9d478598c0996c1380633003961ddmtklein}
3466321381d18f9d478598c0996c1380633003961ddmtklein
3476321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
3486321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
3496321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
3506321381d18f9d478598c0996c1380633003961ddmtklein
3516321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3526321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
3536321381d18f9d478598c0996c1380633003961ddmtklein  ]
3546321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3556321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
3566321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
3576321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
3586321381d18f9d478598c0996c1380633003961ddmtklein  ]
3596321381d18f9d478598c0996c1380633003961ddmtklein}
3606321381d18f9d478598c0996c1380633003961ddmtklein
3613cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
3623cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
3633cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3643cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
3653cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
3663cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3673cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3683cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
3693cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
3703cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3713cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3723cc22180561ae17a64ff0e0f9ba173eac149009emtklein
373457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
374457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
375457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
376457b42a6398020c3791f62f8c8637653e0d39bccmtklein
377457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
378457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
379457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
380457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
381457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
382457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
383457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
384457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
385457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
386eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
3876321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
3886321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
3896321381d18f9d478598c0996c1380633003961ddmtklein
3906321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
3916321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
3926321381d18f9d478598c0996c1380633003961ddmtklein  ]
3936321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
3946321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
3956321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
3966321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
3976321381d18f9d478598c0996c1380633003961ddmtklein  ]
3986321381d18f9d478598c0996c1380633003961ddmtklein}
3996321381d18f9d478598c0996c1380633003961ddmtklein
400c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
401c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
402c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
403c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
404c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
405b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
406b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
4079b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
408b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
409349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
410a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
4113cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
412457b42a6398020c3791f62f8c8637653e0d39bccmtklein    ":gif",
4136321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
4149b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
4156321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
4166321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
4179b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
4189b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
4199b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
4209b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
4213cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
422eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
4236321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
424c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
425c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
426c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
427c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += core_gypi.sources
428c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += effects_gypi.sources
429c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += gpu_gypi.skgpu_sources
4309e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein  sources += sksl_gypi.sources
431c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += utils_gypi.sources
432c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
43325c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
43425c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
43525c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
4361211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
4371211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
4381211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
4391211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
4401211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
4411211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
4421211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
4431211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
44425c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
4451211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
4461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
4471211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
44809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    "src/gpu/gl/GrGLDefaultInterface_native.cpp",
449c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
450c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
4512b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
452c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
453c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
4541211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
455c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
456c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
457c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
458c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
45925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
46025c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
461c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
462c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
463c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
464c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
46509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein  sources -= [
46609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
46709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    "src/gpu/gl/GrGLDefaultInterface_none.cpp",
46809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein  ]
469c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
4707d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
4717d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
472c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
473c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
474c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
475c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
476c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
477c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw_factory.cpp",
478c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
479c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
480c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
481c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
482c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
483c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
48425c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
485c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
4867a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    sources -= [ "src/utils/SkThreadUtils_pthread.cpp" ]
487c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
488c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
489c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
490c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
49125c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
492c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
493c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
494c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
4957d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
4967d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
4977d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
4987d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
4997d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5007d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    sources += [
5017d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp",
5027d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_android.cpp",
5037d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5047d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
5057d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
5067d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
5077d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
5087d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
5097d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
5107d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
511c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
51209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
51309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
51409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
51509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
51609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
517c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
51809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp",
5197d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
520c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
521c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
522c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
523c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
524c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
52509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp",
5267d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
527c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
528c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
529c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
530c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
53109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
53209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
53309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
53409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
535c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
5366fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
5376fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
5382ff47c2390814df165234ab16b83dbacf97f1c0fmtklein    sources += [
5392ff47c2390814df165234ab16b83dbacf97f1c0fmtklein      "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
5407d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
5412ff47c2390814df165234ab16b83dbacf97f1c0fmtklein      "src/ports/SkFontMgr_empty_factory.cpp",
5422ff47c2390814df165234ab16b83dbacf97f1c0fmtklein    ]
5436fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
544c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
545c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
546ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
547ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
548ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
549ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
550ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
551ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
552ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
553ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
554ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
555ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
556ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
557ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
558ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
5591211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
5601211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
5611211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
562c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
5631211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
5641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
5651211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
5661211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
5671211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
5681211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinexecutable("fiddle") {
5691211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = [ "$target_gen_dir" ]
5707d10b9f6e61ce8cb5387291580c1c0645f72b167mtklein  libs = []
5717d10b9f6e61ce8cb5387291580c1c0645f72b167mtklein  if (is_linux) {
5727d10b9f6e61ce8cb5387291580c1c0645f72b167mtklein    libs += [ "OSMesa" ]
5737d10b9f6e61ce8cb5387291580c1c0645f72b167mtklein  }
5741211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
575c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = [
576c095df55e86e7126b0582856720bb9177b553ff1mtklein    "src/images/SkForceLinking.cpp",
5771211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "tools/fiddle/draw.cpp",
5781211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "tools/fiddle/fiddle_main.cpp",
579c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
580c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
581c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ":skia",
5821211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    ":skia.h",
583c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
584c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
58525c81d4e651b43b8217c365c87d530036529a673mtklein
586c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
587c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
588c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
589c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
590c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
591c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
592c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
593c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
594c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
595c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
596c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
597c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
598c095df55e86e7126b0582856720bb9177b553ff1mtklein
599c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
600c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
601c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
602c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
603c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
604c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
60525c81d4e651b43b8217c365c87d530036529a673mtklein  }
606c095df55e86e7126b0582856720bb9177b553ff1mtklein
607c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
608c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/gpu" ]
609c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
610c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/GrContextFactory.cpp",
611c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/GrTest.cpp",
612c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/TestContext.cpp",
613c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/GLTestContext.cpp",
614c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/DebugGLTestContext.cpp",
615c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrBufferObj.cpp",
616c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
617c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrProgramObj.cpp",
618c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrShaderObj.cpp",
619c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrTextureObj.cpp",
620c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
621c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/gpu/gl/null/NullGLTestContext.cpp",
62225c81d4e651b43b8217c365c87d530036529a673mtklein    ]
623c095df55e86e7126b0582856720bb9177b553ff1mtklein    libs = []
62425c81d4e651b43b8217c365c87d530036529a673mtklein
6257d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    if (is_android) {
6267d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
6277d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    } else if (is_linux) {
628c095df55e86e7126b0582856720bb9177b553ff1mtklein      sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
629c095df55e86e7126b0582856720bb9177b553ff1mtklein    } else if (is_mac) {
630c095df55e86e7126b0582856720bb9177b553ff1mtklein      sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
63125c81d4e651b43b8217c365c87d530036529a673mtklein    }
63225c81d4e651b43b8217c365c87d530036529a673mtklein  }
63325c81d4e651b43b8217c365c87d530036529a673mtklein
634c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
635c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
636c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
637c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
638c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
639c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
640c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
641c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
642c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
643c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
64425c81d4e651b43b8217c365c87d530036529a673mtklein  }
64525c81d4e651b43b8217c365c87d530036529a673mtklein
646c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
647c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
648c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
649c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
650c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
651c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
652c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
653c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
654c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
655c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
6560590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
657c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
658c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
659c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
660c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
661c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
662c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
663c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
664c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
665c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkOverdrawMode.cpp",
666c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
667c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
668c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
669c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
670c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
671c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
672c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
673c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
674c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
675c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
676c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
677c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
678c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
679c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
68025c81d4e651b43b8217c365c87d530036529a673mtklein
681c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
682c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
683c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
684c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
685c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
686c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
687c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
688c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
689c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
690c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
691c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
692c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
693c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
694c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
695c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
696c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
69725c81d4e651b43b8217c365c87d530036529a673mtklein
698c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
699c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
700c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
701c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
702c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
703c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
704c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
705c095df55e86e7126b0582856720bb9177b553ff1mtklein
706c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
707c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
708a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
709a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
710a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
711a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
712a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
713a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
714a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
715a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
716c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
7176cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
718c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
719c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
720c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
721c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
722c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
723c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
724c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
725c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7262f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
727c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
728c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
729c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
730c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
731c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
732c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
733c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
734c095df55e86e7126b0582856720bb9177b553ff1mtklein
735c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
736c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
737c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
738c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
739c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
740c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
741c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
742c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
743c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
744c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
745c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
746c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
747c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
748c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
749c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
7502b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
751c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
752c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
753c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
754c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
755c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
756c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
757c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
758c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
759c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
760c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
761c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
762c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
763c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
764c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
765c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
766c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
767c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
768c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
769c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
770c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
771c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
772c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
773c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
774c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
775a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
7762b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
7772b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
7782b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
7792b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
7802b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
7812b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
7822b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
7832b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
784a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
7852b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
7862b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
7872b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
7882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
7892f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
7902b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
7912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
7922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
7932b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
7942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
7952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
7962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
7972b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("monobench") {
7982b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
7992b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "tools/monobench.cpp",
8002b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8012b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8022b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
8032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8042b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8052b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8062b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
8072b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
8082b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
8092b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
8102b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
8112b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8122b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
8132b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
8142b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
8152b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
8162b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
8172b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
8182b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
8192b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
8202b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
8212b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
8222b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
82319a9720978700a24efed8dda7e0935ea2b7338c4halcanary
8246f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein  if (current_cpu != "mipsel") {  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
8256f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    executable("sktexttopdf") {
8266f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
8276f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
8286f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
8296f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8306f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
8316f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
8326f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
8336f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
8346f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
8356f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
83619a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
83725c81d4e651b43b8217c365c87d530036529a673mtklein}
838