BUILD.gn revision 2dd9693432b319c18a12c8a0deab5e1af5330e95
1c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Copyright 2016 Google Inc.
2c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein#
3c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Use of this source code is governed by a BSD-style license that can be
4c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# found in the LICENSE file.
5c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
68c24f4fae3389b9937eb73128e76226cffebdd72mikejurkaimport("gn/shared_sources.gni")
7b944728b93a1623d73be31413a6798e0b7dddc16brettw
83e8012e74f70bf49427a7422f9e5996c9882d4f3mtkleinif (!defined(is_skia_standalone)) {
93e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  is_skia_standalone = false
103e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein}
113e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein
12c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleindeclare_args() {
13d68f9b00389bf676b171f250e684486cb2fbd404mtklein  skia_use_angle = false
146321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
153cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
16cdedd0e061f3f50cd217638c28b27d798d930896mtklein  skia_use_freetype = is_android || is_fuchsia || is_linux
1769f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein  skia_use_gdi = false
18457b42a6398020c3791f62f8c8637653e0d39bccmtklein  skia_use_giflib = !is_fuchsia
196321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
206321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
21eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
22a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein  skia_use_mesa = false
23ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  skia_use_sfntly = !is_fuchsia && !is_win  # TODO: icu on Windows, re-enable this.
24f29180e65afdd3bd5ff3c1a2f8d456f9aea125edmtklein  skia_use_vulkan = is_android && defined(ndk_api) && ndk_api >= 24
256321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
261bd72ba2cb349788223e3e7304f25751c87f1f95mtklein
271bd72ba2cb349788223e3e7304f25751c87f1f95mtklein  skia_enable_android_framework_defines = false
2806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  skia_enable_gpu = true
293e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_tools = is_skia_standalone
303e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_vulkan_debug_layers = is_skia_standalone && is_debug
31789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  skia_vulkan_sdk = ""
32c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
33c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
34789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomonskia_use_vulkan = skia_use_vulkan || skia_vulkan_sdk != ""
35789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon
3638925aa37c17c0f54868852b8c3edf373400c742mtklein# Our tools require static linking (they use non-exported symbols).
3738925aa37c17c0f54868852b8c3edf373400c742mtkleinskia_enable_tools = skia_enable_tools && !is_component_build
3806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
39a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
40a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
411211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
4225c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
43fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
441211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
451211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
471211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
481211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
491211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
501211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/images",
511211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
521211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
5325c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
541211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
551211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
5625c81d4e651b43b8217c365c87d530036529a673mtklein  "include/xml",
571211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
581211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
59c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
60c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
611211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
62ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  defines = []
63ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  if (is_component_build) {
64ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein    defines += [ "SKIA_DLL" ]
65ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  }
66c4cbd74a38232a0e9f1cc1cc8fb826bb06c577a9Mike Klein  if (is_fuchsia || is_linux) {
675561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
685561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
69cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  if (skia_enable_android_framework_defines) {
70cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein    defines += skia_android_framework_defines
71cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  }
7206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (!skia_enable_gpu) {
7306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    defines += [ "SK_SUPPORT_GPU=0" ]
7406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
75c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
76c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
77c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
78c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
79c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
80c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
81c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
82c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
83c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
841211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
85c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/config",
86c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
87c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
8825c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
8925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/gpu",
91c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
92c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
93c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
94c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
95c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
97c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
98c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
999e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
100c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
1017a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
102c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
103c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx",
104c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
105150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
1066321381d18f9d478598c0996c1380633003961ddmtklein  defines = [ "SK_GAMMA_APPLY_TO_A8" ]
107b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  if (is_android) {
108b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    defines += [
109b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_EXPONENT=1.4",
110b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_CONTRAST=0.0",
111b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    ]
112b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  }
11388a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  if (is_official_build || is_android) {
11488a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    # TODO(bsalomon): it'd be nice to make Android normal.
11588a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    defines += [ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0" ]
11688a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  }
117789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  libs = []
118789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  lib_dirs = []
119789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  if (skia_use_vulkan) {
120789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    if (skia_vulkan_sdk != "") {
121487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      if (is_win) {
122487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        include_dirs += [ "$skia_vulkan_sdk/Include/" ]
123487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        lib_dirs += [ "$skia_vulkan_sdk/Bin" ]
124487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      } else {
125487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        include_dirs += [ "$skia_vulkan_sdk/x86_64/include/" ]
126487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        lib_dirs += [ "$skia_vulkan_sdk/x86_64/lib/" ]
127487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      }
128487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    }
129487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    if (is_win) {
130487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan-1.lib" ]
131487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    } else {
132487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan" ]
133789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    }
134789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  }
135c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
136c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
137c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
138c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
139c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
140c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
141c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
142c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
143c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
144c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
145c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
146c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
147c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
148c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1499b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1509b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1519b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1529b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1539b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1549b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1559b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1569b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1579b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1589b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1599b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1609b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1619b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1629b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1639b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1649b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1659b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1669b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
167a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
168a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
169422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
170c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1717d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
1727d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
173b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.none_sources
174b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
175b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
176b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1777d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
178b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
179b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.armv7_sources + skia_opts.neon_sources
1807d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
181b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
182b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
183b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
184b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
185b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.arm64_sources
186b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
187b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
188b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
189b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
190b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
191b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.crc32_sources
192b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
193b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
194b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1959b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
1969b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
197b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse2_sources
1983eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (!is_win) {
1993eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse2" ]
2003eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2019b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2024e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2039b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
2049b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
205b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
2063eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (!is_win) {
2073eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mssse3" ]
2083eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2099b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2104e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2119b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
2129b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
213b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
2143eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (!is_win) {
2153eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.1" ]
2163eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2179b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
218c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2199b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2209b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
221b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
2223eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (!is_win) {
2233eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.2" ]
2243eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2259b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2269b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2279b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2289b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
229b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
2303eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2313eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX" ]
2323eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2333eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mavx" ]
2343eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
235c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
236c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
23778d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Kleinopts("hsw") {
23878d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  enabled = is_x86
23978d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  sources = skia_opts.hsw_sources
2403eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2413eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX2" ]
2423eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2433eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [
2443eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mavx2",
2453eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi",
2463eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi2",
2473eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mf16c",
2483eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mfma",
2493eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    ]
2503eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
25178d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein}
25278d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein
253349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
254349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
255b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.mips_dsp_sources
256b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
257349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
258349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
259c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
260457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
261457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
262457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
263cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
264cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
265cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
266457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
267457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
268cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
269cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
270cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
271cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
272cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
273cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
274457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2759b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
276457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
277457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
278457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
279457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
280457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
281457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
282457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
283457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
2846ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
285457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
286cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
287457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
288cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
289cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
290cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
291cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
292457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
293eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
294eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
295457b42a6398020c3791f62f8c8637653e0d39bccmtklein
296a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
297a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
298a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
299a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
300a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
301a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
302a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
303a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
304a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
305a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
306a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
307a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
308a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
309a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
310d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
311d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
312d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
313d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
314d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "//third_party/freetype2",
315d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
316d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
317d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
318d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
319d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
320d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
321d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
3223cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
3233cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
3243cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3253cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
3263cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
3273cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
3283cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3293cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3301ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
3313cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
3323cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
3333cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
3343cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3353cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3363cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3373cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3383cc22180561ae17a64ff0e0f9ba173eac149009emtklein
339cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
340cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
341cdedd0e061f3f50cd217638c28b27d798d930896mtklein
342cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
343cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "//third_party/freetype2",
344cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
345cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
346cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
347cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
348cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
349cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
350cdedd0e061f3f50cd217638c28b27d798d930896mtklein
351457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("gif") {
352457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_giflib
353457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_GIF_LIBRARY" ]
354457b42a6398020c3791f62f8c8637653e0d39bccmtklein
355457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
356457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/giflib",
357457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
358457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
359457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkGifCodec.cpp",
360457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
361457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
362457b42a6398020c3791f62f8c8637653e0d39bccmtklein
36306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
36406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
365e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
366e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
36706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources = skia_gpu_sources + [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
36806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
36906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
37006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
37106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
37206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
37306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
37406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
375703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  libs = []
37606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
37706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
37806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
37906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
38006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
38106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
382703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  } else if (is_win) {
383703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    sources += [ "src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp" ]
384703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    libs += [ "OpenGL32.lib" ]
38506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
38606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
38706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
388e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
389e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
390e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
391e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
392e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
393e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
394e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
395e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
39606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
39706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
3986321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
3996321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
4006321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
4016321381d18f9d478598c0996c1380633003961ddmtklein
4026321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4036321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
4046321381d18f9d478598c0996c1380633003961ddmtklein  ]
4056321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4066321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
4076321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
4086321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
4096321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
4106321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
4116321381d18f9d478598c0996c1380633003961ddmtklein  ]
4126321381d18f9d478598c0996c1380633003961ddmtklein}
4136321381d18f9d478598c0996c1380633003961ddmtklein
4146321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
4156321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
4166321381d18f9d478598c0996c1380633003961ddmtklein
4176321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4186321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
4196321381d18f9d478598c0996c1380633003961ddmtklein  ]
420b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
421cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
4226321381d18f9d478598c0996c1380633003961ddmtklein
4236321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
4246321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
425cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
4266321381d18f9d478598c0996c1380633003961ddmtklein  }
4276321381d18f9d478598c0996c1380633003961ddmtklein}
4286321381d18f9d478598c0996c1380633003961ddmtklein
4296321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
4306321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
4316321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
4326321381d18f9d478598c0996c1380633003961ddmtklein
4336321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4346321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
4356321381d18f9d478598c0996c1380633003961ddmtklein  ]
4366321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4376321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
4386321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
4396321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
4406321381d18f9d478598c0996c1380633003961ddmtklein  ]
4416321381d18f9d478598c0996c1380633003961ddmtklein}
4426321381d18f9d478598c0996c1380633003961ddmtklein
4433cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
4443cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
4453cc22180561ae17a64ff0e0f9ba173eac149009emtklein
4463cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
4473cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
4483cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4493cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
4503cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
4513cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
4523cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4533cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
4543cc22180561ae17a64ff0e0f9ba173eac149009emtklein
455457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
456457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
457457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
458457b42a6398020c3791f62f8c8637653e0d39bccmtklein
459457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
460457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
461457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
462457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
463457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
464457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
465457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
466457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
467457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
468eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
4696321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
4706321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
4716321381d18f9d478598c0996c1380633003961ddmtklein
4726321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4736321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
4746321381d18f9d478598c0996c1380633003961ddmtklein  ]
4756321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4766321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
4776321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
4786321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
4796321381d18f9d478598c0996c1380633003961ddmtklein  ]
4806321381d18f9d478598c0996c1380633003961ddmtklein}
4816321381d18f9d478598c0996c1380633003961ddmtklein
482c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
483c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
484c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
485c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
486c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
487b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
488b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
4899b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
490b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
491349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
492a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
493d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
4943cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
495cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
496457b42a6398020c3791f62f8c8637653e0d39bccmtklein    ":gif",
49706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
49878d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    ":hsw",
4996321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
5009b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
5016321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
5026321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
5039b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
5049b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
5059b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
5069b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
5073cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
508eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
5096321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
510c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
511c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
512c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
513b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
514b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_effects_sources
515b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_sksl_sources
516b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
517c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
51825c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
51925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
52025c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
5211211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
5221211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
5231211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
5241211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
5251211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
5261211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
5271211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
5281211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
52925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
5301211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
5311211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
5321211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
533c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
534c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
5352b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
536c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
537c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
5381211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
539c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
540c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
541c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
542c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
54325c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
54425c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
545c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
546c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
547c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
548c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
549b944728b93a1623d73be31413a6798e0b7dddc16brettw
5507d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
5517d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
552c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
553c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
554ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein      "src/fonts/SkFontMgr_indirect.cpp",
555c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
556c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
557c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
558c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
559c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
560c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
561605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
562c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
563c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
564c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
56525c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
5664b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "src/xps/SkXPSDevice.cpp",
567c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
56869f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    if (skia_use_gdi) {
56969f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_gdi_factory.cpp" ]
57069f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      libs += [
57169f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Gdi32.lib",
57269f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Usp10.lib",
57369f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      ]
57469f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    } else {
57569f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_dw_factory.cpp" ]
57669f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    }
577b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
578b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
5794b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    libs += [
5804b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "FontSub.lib",
5814b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "Ole32.lib",
5824b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "OleAut32.lib",
5834b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "User32.lib",
5844b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    ]
585c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
586c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
587c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
588605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
589c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
59025c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
591c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
592c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
593c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
5947d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
5957d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
5967d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
5977d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
5987d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
59906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
6007d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
6017d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
6027d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
6037d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
6047d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
6057d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
6067d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
607c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
60809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
60909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
61009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
61109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
61209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
61306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
614c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
615c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
616c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
617c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
6187d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
619c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
620c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
621c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
622c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
62309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
62409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
62509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
62609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
627c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
6286fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
6296fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
63006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
6316fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
632c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
633c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
634ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
635ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
636ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
637ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
638ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
639ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
640ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
641ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
642ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
643ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
644ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
645ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
646ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
6471211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
6481211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
6491211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
650c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
651bc34404dc3feb4dac854aa43825646dd01139ccbBen Wagner  inputs = skia_h_headers
6521211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
6531211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
6541211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
6551211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
6561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
65706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
6581fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
6591fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
6601fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
6611fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    include_dirs = [ "$target_gen_dir" ]
6621fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
6631fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
6641fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
6651fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
66656d5669095feca663e9e05f4621146abeee626ecmtklein
6671fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
6681fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
6691fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
6701fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
6711fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6721fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
6731fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
6741fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
6751fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6761fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
677c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
67825c81d4e651b43b8217c365c87d530036529a673mtklein
679c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
680c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
681c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
682c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
683c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
684a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
685a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
686a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
687c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
688c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
689c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
690c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
691c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
692c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
693c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
694c095df55e86e7126b0582856720bb9177b553ff1mtklein
695c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
696c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
697c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
698c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
699c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
700c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
70125c81d4e651b43b8217c365c87d530036529a673mtklein  }
702c095df55e86e7126b0582856720bb9177b553ff1mtklein
703c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
70438925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
70538925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
70638925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
70738925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
708d68f9b00389bf676b171f250e684486cb2fbd404mtklein
709d68f9b00389bf676b171f250e684486cb2fbd404mtklein      deps = []
71038925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
71138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
71238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
71338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
71438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
715605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
71638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
71738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
71838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
71938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
72038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
72138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
72238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
72338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
72438925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
72538925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
72638925aa37c17c0f54868852b8c3edf373400c742mtklein
72738925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
72838925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
72938925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
73038925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
73138925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
73238925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
7334b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      } else if (is_win) {
7344b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        sources += [ "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp" ]
7354b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        libs += [
7364b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "Gdi32.lib",
7374b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "OpenGL32.lib",
7384b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        ]
73938925aa37c17c0f54868852b8c3edf373400c742mtklein      }
7406ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein
741d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_angle) {
742d68f9b00389bf676b171f250e684486cb2fbd404mtklein        public_defines += [ "SK_ANGLE" ]
743d68f9b00389bf676b171f250e684486cb2fbd404mtklein        deps += [ "//third_party/angle2" ]
744d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
74538925aa37c17c0f54868852b8c3edf373400c742mtklein      }
74638925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
74738925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
74838925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
74938925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
75038925aa37c17c0f54868852b8c3edf373400c742mtklein      }
751d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_vulkan) {
752d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
753d68f9b00389bf676b171f250e684486cb2fbd404mtklein      }
754a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
75525c81d4e651b43b8217c365c87d530036529a673mtklein  }
75625c81d4e651b43b8217c365c87d530036529a673mtklein
757c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
758c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
759c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
760c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
761046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
762046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
763046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
764046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
765046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
766c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
767c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
768c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
769c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
770046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
771c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
772c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
77325c81d4e651b43b8217c365c87d530036529a673mtklein  }
77425c81d4e651b43b8217c365c87d530036529a673mtklein
775c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
776c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
777c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
778c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
779c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
780c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
781c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
782c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
783c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
784b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
785c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
7860590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
787c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
788c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
789c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
790c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
791c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
792c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
793c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
794c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
795c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
796c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
797c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
799c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
800c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
801c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
802046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
803c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
804c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
805c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
806c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
807c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
808c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
809c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
81025c81d4e651b43b8217c365c87d530036529a673mtklein
811c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
812c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
813c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
814c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
815c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
816c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
817c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
818c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
819c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
820c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
821c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
822c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
823c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
824c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
825c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
826c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
82725c81d4e651b43b8217c365c87d530036529a673mtklein
828c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
829c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
830c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
831c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
832c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
833c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
834c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
835c095df55e86e7126b0582856720bb9177b553ff1mtklein
836c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
837c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
838a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
839a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
840a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
841a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
842a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
843a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
844a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
845a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
846c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
8476cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
848c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
849c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
850c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
851c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
852c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
853c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
854c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
855c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8562f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
857c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
858c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
859c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
860c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
861c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
862c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
863c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
864c095df55e86e7126b0582856720bb9177b553ff1mtklein
865c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
866c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
867c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
868c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
869c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
870c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
871c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
872c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
873c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
874c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
875c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
876c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
877c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
878c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
879c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8802b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
881c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
882c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
883c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
884c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
885c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
886c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
887c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
888c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
889c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
890c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
89128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
892c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
893c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
894c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
895c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
896c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
897c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
898c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
89928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
900c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
901c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
902c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
903c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
904c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
905c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
906c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
907a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
90816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("views") {
90916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "include/views" ]
91016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = [
91116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEvent.cpp",
91216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEventSink.cpp",
91316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkOSMenu.cpp",
91416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTagList.cpp",
91516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTouchGesture.cpp",
91616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkView.cpp",
91716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkViewPriv.cpp",
91816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
91916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    libs = []
92016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (!is_android) {
92116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/SkWindow.cpp" ]
92216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
92316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (is_android) {
92416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_linux) {
9252dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      public_include_dirs += [ "src/views/unix" ]
9262dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      sources += [
9272dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/SkOSWindow_Unix.cpp",
9282dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/keysym2ucs.c",
9292dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      ]
93016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_mac) {
93116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [
93216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkEventNotifier.mm",
93316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkNSView.mm",
93416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkOSWindow_Mac.mm",
93516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkTextFieldCell.m",
93616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
93716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      libs += [
93816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "QuartzCore.framework",
93916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Cocoa.framework",
94016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Foundation.framework",
94116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
94216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_win) {
94316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/win/SkOSWindow_win.cpp" ]
94416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
94516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
94616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
94716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  sample_sources = exec_script("gyp/find.py",
94816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               [
94916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                                 "*.c*",
95016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                                 rebase_path("samplecode"),
95116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               ],
95216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               "list lines",
95316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               [])
95416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
95516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("samples") {
95616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    include_dirs = [ "experimental" ]
95716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "samplecode" ]
95816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = sample_sources
95916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources -= [
96016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleAnimator.cpp"),  # relies on animator
96116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleApp.cpp"),  # part of SampleApp exe, not samples lib
96216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleClamp.cpp"),
96316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleDash.cpp"),
96416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleLua.cpp"),  # no Lua yet in GN
96516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SamplePathFill.cpp"),
96616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SamplePictFile.cpp"),  # relies on SK_SUPPORT_LEGACY_DRAWFILTER
96716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleSkLayer.cpp"),  # relies on SkMatrix44 which doesn't compile?
96816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleFontCache.cpp"),  # relies on pthread.h
96916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
97016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources += [
97116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp",
97216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3.cpp",
97316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3_A.cpp",
97416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3_D.cpp",
97516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
97616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    deps = [
97716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":experimental_svg_model",
97816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":gm",  # Why does SampleFilterQuality.cpp include gm.h ???
97916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":tool_utils",
98016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":views",
98116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":xml",
98216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
98316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
98416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
9852b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
9862b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
9872b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
9882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
9892b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
9902b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
9912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
9922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
993046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
994a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
9952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
9962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
9972b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
9982b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
9992f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
10002b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
10012b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
10022b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
10032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10042b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
10052b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10062b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
1007a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein  if (!is_debug) {  # I've benchmarked debug code once too many times...
1008a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    executable("monobench") {
1009a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      sources = [
1010a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        "tools/monobench.cpp",
1011a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1012a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      deps = [
1013a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":bench",
1014a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":skia",
1015a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1016a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      testonly = true
1017a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    }
10182b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10192b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
10202b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
10212b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
10222b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
10232b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10242b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
10252b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
1026046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
10276519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
10282b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
10292b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
10302b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
10312b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
10322b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
10332b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
10342b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10352b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
10362b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
103719a9720978700a24efed8dda7e0935ea2b7338c4halcanary
103838925aa37c17c0f54868852b8c3edf373400c742mtklein  if (skia_enable_gpu) {
103938925aa37c17c0f54868852b8c3edf373400c742mtklein    executable("skpbench") {
104038925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
104138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/skpbench/skpbench.cpp",
104238925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
104338925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
104438925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
104538925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
104638925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
104738925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
104838925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
104938925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
105038925aa37c17c0f54868852b8c3edf373400c742mtklein    }
10514b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
10524b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
10534b167fc8503d8b4887346c5054fc2cc93428846dMike Klein  # We can't yet build ICU on Windows.
1054768bdfca71391016c92239831d66427d0f3b151dMike Klein  if (!is_win) {
10553eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
10566f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
10576f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
10586f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
10596f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
10606f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
10616f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
10626f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
10636f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
10646f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
10656f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
106619a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
10673eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
10683eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
10693eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
10703eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
10713eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
10723eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
10733eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
10743eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
10753eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
10763eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
1077046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
1078046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
1079046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
1080046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
1081046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1082046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
1083046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
1084046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
1085046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
1086046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1087046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
1088046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
1089ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein
1090ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  executable("skiaserve") {
1091ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    sources = [
1092ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Request.cpp",
1093ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Response.cpp",
1094ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/skiaserve.cpp",
1095ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp",
1096ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchesHandler.cpp",
1097ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BreakHandler.cpp",
1098ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
1099ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/CmdHandler.cpp",
1100ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
1101ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DataHandler.cpp",
1102ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
1103ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
1104ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ImgHandler.cpp",
1105ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/InfoHandler.cpp",
1106c03e1c55a79f00d02ab528945425ff50cb700402Ben Wagner      "tools/skiaserve/urlhandlers/OverdrawHandler.cpp",
1107ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/PostHandler.cpp",
1108ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/QuitHandler.cpp",
1109ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/RootHandler.cpp",
1110ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
1111ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    deps = [
1112ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":flags",
1113ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":gpu_tool_utils",
1114ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":skia",
1115ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":tool_utils",
1116ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/jsoncpp",
1117ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libmicrohttpd",
1118ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libpng",
1119ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
1120ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    testonly = true
1121ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  }
112214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick
112314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  executable("fuzz") {
112414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    sources = [
112514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FilterFuzz.cpp",
112614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzGradients.cpp",
112714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzParsePath.cpp",
112814f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzPathop.cpp",
112914f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzScaleToSides.cpp",
113014f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/fuzz.cpp",
113114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
113214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    deps = [
113314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":flags",
113414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":skia",
113514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
113614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    testonly = true
113714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  }
11383831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein
11393831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  executable("dump_record") {
11403831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    sources = [
11413831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/DumpRecord.cpp",
11423831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/dump_record.cpp",
11433831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
11443831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    deps = [
11453831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":flags",
11463831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":skia",
11473831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
11483831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    testonly = true
11493831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  }
1150fe9172705791848ebfe5b5630973b7e67305f64cbungeman
1151fe9172705791848ebfe5b5630973b7e67305f64cbungeman  executable("skdiff") {
1152fe9172705791848ebfe5b5630973b7e67305f64cbungeman    sources = [
1153fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff.cpp",
1154fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_html.cpp",
1155fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_main.cpp",
1156fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_utils.cpp",
1157fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1158fe9172705791848ebfe5b5630973b7e67305f64cbungeman    deps = [
1159fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":skia",
1160fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":tool_utils",
1161fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1162fe9172705791848ebfe5b5630973b7e67305f64cbungeman    testonly = true
1163fe9172705791848ebfe5b5630973b7e67305f64cbungeman  }
1164a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary
1165a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  executable("skp_parser") {
1166a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    sources = [
1167a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "tools/skp_parser.cpp",
1168a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1169a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    deps = [
1170a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":skia",
1171a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":tool_utils",
1172a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "//third_party/jsoncpp",
1173a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1174a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    testonly = true
1175a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  }
117616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
11772dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman  if (is_linux || is_win) {
117816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    executable("viewer") {
117916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources = [
118016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/GMSlide.cpp",
118116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/ImageSlide.cpp",
118216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SKPSlide.cpp",
118316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SampleSlide.cpp",
118416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/Viewer.cpp",
118516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/CommandSet.cpp",
118616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/GLWindowContext.cpp",
118716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/Window.cpp",
118816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/WindowContext.cpp",
118916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
11902dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      libs = []
119116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
11922dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      if (is_linux) {
11932dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        sources += [
11942dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/GLWindowContext_unix.cpp",
11952dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/RasterWindowContext_unix.cpp",
11962dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/Window_unix.cpp",
11972dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/main_unix.cpp",
11982dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        ]
11992dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      } else if (is_win) {
120016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [
120116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/GLWindowContext_win.cpp",
120216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/RasterWindowContext_win.cpp",
120316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/Window_win.cpp",
120416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/main_win.cpp",
120516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ]
120616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
120716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
120816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      if (skia_use_vulkan) {
120916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [ "tools/viewer/sk_app/VulkanWindowContext.cpp" ]
12102dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        if (is_linux) {
12112dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          sources += [ "tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp" ]
12122dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          libs += [ "X11-xcb" ]
12132dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        } else if (is_win) {
121416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          sources += [ "tools/viewer/sk_app/win/VulkanWindowContext_win.cpp" ]
121516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        }
121616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
121716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
121816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      include_dirs = []
121916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      deps = [
122016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":flags",
122116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gm",
122216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gpu_tool_utils",
122316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":samples",
122416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":skia",
122516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":tool_utils",
122616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":views",
122716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "//third_party/jsoncpp",
122816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
122916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      testonly = true
123016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
123116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
123225c81d4e651b43b8217c365c87d530036529a673mtklein}
1233