BUILD.gn revision d8765e3455ff3f99cc733f01f8d10d4b0939bbd5
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
198d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
199d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE2" ]
200d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2013eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse2" ]
2023eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2039b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2044e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2059b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
2069b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
207b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
208d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
209d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSSE3" ]
210d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2113eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mssse3" ]
2123eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2139b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2144e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2159b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
2169b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
217b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
218d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
219d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE41" ]
220d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2213eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.1" ]
2223eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2239b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
224c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2259b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2269b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
227b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
228d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
229d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE42" ]
230d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2313eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.2" ]
2323eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2339b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2349b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2359b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2369b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
237b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
2383eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2393eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX" ]
2403eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2413eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mavx" ]
2423eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
243c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
244c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
24578d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Kleinopts("hsw") {
24678d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  enabled = is_x86
24778d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  sources = skia_opts.hsw_sources
2483eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2493eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX2" ]
2503eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2513eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [
2523eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mavx2",
2533eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi",
2543eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi2",
2553eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mf16c",
2563eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mfma",
2573eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    ]
2583eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
25978d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein}
26078d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein
261349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
262349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
263b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.mips_dsp_sources
264b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
265349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
266349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
267c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
268457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
269457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
270457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
271cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
272cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
273cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
274457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
275457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
276cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
277cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
278cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
279cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
280cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
281cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
282457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2839b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
284457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
285457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
286457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
287457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
288457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
289457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
290457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
291457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
2926ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
293457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
294cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
295457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
296cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
297cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
298cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
299cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
300457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
301eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
302eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
303457b42a6398020c3791f62f8c8637653e0d39bccmtklein
304a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
305a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
306a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
307a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
308a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
309a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
310a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
311a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
312a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
313a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
314a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
315a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
316a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
317a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
318d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
319d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
320d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
321d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
322d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "//third_party/freetype2",
323d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
324d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
325d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
326d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
327d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
328d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
329d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
3303cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
3313cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
3323cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3333cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
3343cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
3353cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
3363cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3373cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3381ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
3393cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
3403cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
3413cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
3423cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3433cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3443cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3453cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3463cc22180561ae17a64ff0e0f9ba173eac149009emtklein
347cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
348cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
349cdedd0e061f3f50cd217638c28b27d798d930896mtklein
350cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
351cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "//third_party/freetype2",
352cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
353cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
354cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
355cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
356cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
357cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
358cdedd0e061f3f50cd217638c28b27d798d930896mtklein
359457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("gif") {
360457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_giflib
361457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_GIF_LIBRARY" ]
362457b42a6398020c3791f62f8c8637653e0d39bccmtklein
363457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
364457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/giflib",
365457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
366457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
367457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkGifCodec.cpp",
368457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
369457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
370457b42a6398020c3791f62f8c8637653e0d39bccmtklein
37106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
37206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
373e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
374e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
37506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources = skia_gpu_sources + [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
37606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
37706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
37806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
37906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
38006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
38106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
38206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
383703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  libs = []
38406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
38506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
38606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
38706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
38806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
38906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
390703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  } else if (is_win) {
391703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    sources += [ "src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp" ]
392703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    libs += [ "OpenGL32.lib" ]
39306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
39406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
39506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
396e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
397e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
398e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
399e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
400e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
401e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
402e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
403e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
40406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
40506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
4066321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
4076321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
4086321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
4096321381d18f9d478598c0996c1380633003961ddmtklein
4106321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4116321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
4126321381d18f9d478598c0996c1380633003961ddmtklein  ]
4136321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4146321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
4156321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
4166321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
4176321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
4186321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
4196321381d18f9d478598c0996c1380633003961ddmtklein  ]
4206321381d18f9d478598c0996c1380633003961ddmtklein}
4216321381d18f9d478598c0996c1380633003961ddmtklein
4226321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
4236321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
4246321381d18f9d478598c0996c1380633003961ddmtklein
4256321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4266321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
4276321381d18f9d478598c0996c1380633003961ddmtklein  ]
428b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
429cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
4306321381d18f9d478598c0996c1380633003961ddmtklein
4316321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
4326321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
433cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
4346321381d18f9d478598c0996c1380633003961ddmtklein  }
4356321381d18f9d478598c0996c1380633003961ddmtklein}
4366321381d18f9d478598c0996c1380633003961ddmtklein
4376321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
4386321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
4396321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
4406321381d18f9d478598c0996c1380633003961ddmtklein
4416321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4426321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
4436321381d18f9d478598c0996c1380633003961ddmtklein  ]
4446321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4456321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
4466321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
4476321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
4486321381d18f9d478598c0996c1380633003961ddmtklein  ]
4496321381d18f9d478598c0996c1380633003961ddmtklein}
4506321381d18f9d478598c0996c1380633003961ddmtklein
4513cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
4523cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
4533cc22180561ae17a64ff0e0f9ba173eac149009emtklein
4543cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
4553cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
4563cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4573cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
4583cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
4593cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
4603cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4613cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
4623cc22180561ae17a64ff0e0f9ba173eac149009emtklein
463457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
464457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
465457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
466457b42a6398020c3791f62f8c8637653e0d39bccmtklein
467457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
468457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
469457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
470457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
471457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
472457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
473457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
474457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
475457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
476eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
4776321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
4786321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
4796321381d18f9d478598c0996c1380633003961ddmtklein
4806321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4816321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
4826321381d18f9d478598c0996c1380633003961ddmtklein  ]
4836321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4846321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
4856321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
4866321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
4876321381d18f9d478598c0996c1380633003961ddmtklein  ]
4886321381d18f9d478598c0996c1380633003961ddmtklein}
4896321381d18f9d478598c0996c1380633003961ddmtklein
490c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
491c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
492c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
493c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
494c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
495b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
496b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
4979b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
498b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
499349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
500a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
501d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
5023cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
503cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
504457b42a6398020c3791f62f8c8637653e0d39bccmtklein    ":gif",
50506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
50678d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    ":hsw",
5076321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
5089b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
5096321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
5106321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
5119b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
5129b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
5139b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
5149b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
5153cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
516eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
5176321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
518c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
519c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
520c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
521b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
522b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_effects_sources
523b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_sksl_sources
524b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
525c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
52625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
52725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
52825c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
5291211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
5301211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
5311211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
5321211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
5331211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
5341211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
5351211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
5361211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
53725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
5381211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
5391211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
5401211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
541c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
542c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
5432b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
544c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
545c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
5461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
547c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
548c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
549c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
550c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
55125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
55225c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
553c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
554c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
555c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
556c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
557b944728b93a1623d73be31413a6798e0b7dddc16brettw
5587d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
5597d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
560c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
561c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
562ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein      "src/fonts/SkFontMgr_indirect.cpp",
563c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
564c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
565c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
566c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
567c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
568c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
569605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
570c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
571c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
572c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
57325c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
5744b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "src/xps/SkXPSDevice.cpp",
575c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
57669f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    if (skia_use_gdi) {
57769f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_gdi_factory.cpp" ]
57869f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      libs += [
57969f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Gdi32.lib",
58069f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Usp10.lib",
58169f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      ]
58269f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    } else {
58369f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_dw_factory.cpp" ]
58469f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    }
585b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
586b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
5874b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    libs += [
5884b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "FontSub.lib",
5894b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "Ole32.lib",
5904b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "OleAut32.lib",
5914b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "User32.lib",
5924b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    ]
593c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
594c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
595c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
596605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
597c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
59825c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
599c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
600c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
601c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
6027d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
6037d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
6047d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
6057d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
6067d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
60706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
6087d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
6097d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
6107d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
6117d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
6127d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
6137d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
6147d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
615c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
61609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
61709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
61809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
61909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
62009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
62106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
622c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
623c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
624c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
625c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
6267d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
627c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
628c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
629c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
630c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
63109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
63209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
63309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
63409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
635c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
6366fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
6376fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
63806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
6396fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
640c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
641c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
642ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtkleinskia_h_headers = exec_script("gyp/find.py",
643ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             [ "*.h" ] + rebase_path(skia_public_includes),
644ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             "list lines",
645ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                             []) -
646ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 [
647ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/gl/GrGLConfig_chrome.h"),
648ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkBackendContext.h"),
649ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkDefines.h"),
650ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkInterface.h"),
651ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/gpu/vk/GrVkTypes.h"),
652ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                   rebase_path("include/ports/SkFontMgr_fontconfig.h"),
653ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein                 ]
654ada5a44f3bdac10a8a0c53b34f5add7aea9fdbb0mtklein
6551211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
6561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  script = "gn/echo_headers.py"
6571211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  args = [ rebase_path("$target_gen_dir/skia.h", root_build_dir) ] +
658c095df55e86e7126b0582856720bb9177b553ff1mtklein         rebase_path(skia_h_headers, target_gen_dir)
659bc34404dc3feb4dac854aa43825646dd01139ccbBen Wagner  inputs = skia_h_headers
6601211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
6611211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "$target_gen_dir/skia.h",
6621211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
6631211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
6641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
66506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
6661fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
6671fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
6681fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
6691fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    include_dirs = [ "$target_gen_dir" ]
6701fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
6711fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
6721fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
6731fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
67456d5669095feca663e9e05f4621146abeee626ecmtklein
6751fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
6761fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
6771fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
6781fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
6791fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6801fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
6811fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
6821fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
6831fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
6841fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
685c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
68625c81d4e651b43b8217c365c87d530036529a673mtklein
687c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
688c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
689c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
690c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
691c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
692a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
693a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
694a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
695c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
696c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
697c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
698c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
699c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
700c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
701c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
702c095df55e86e7126b0582856720bb9177b553ff1mtklein
703c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
704c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
705c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
706c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
707c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
708c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
70925c81d4e651b43b8217c365c87d530036529a673mtklein  }
710c095df55e86e7126b0582856720bb9177b553ff1mtklein
711c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
71238925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
71338925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
71438925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
71538925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
716d68f9b00389bf676b171f250e684486cb2fbd404mtklein
717d68f9b00389bf676b171f250e684486cb2fbd404mtklein      deps = []
71838925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
71938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
72038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
72138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
72238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
723605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
72438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
72538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
72638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
72738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
72838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
72938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
73038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
73138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
73238925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
73338925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
73438925aa37c17c0f54868852b8c3edf373400c742mtklein
73538925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
73638925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
73738925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
73838925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
73938925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
74038925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
7414b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      } else if (is_win) {
7424b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        sources += [ "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp" ]
7434b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        libs += [
7444b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "Gdi32.lib",
7454b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "OpenGL32.lib",
7464b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        ]
74738925aa37c17c0f54868852b8c3edf373400c742mtklein      }
7486ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein
749d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_angle) {
750d68f9b00389bf676b171f250e684486cb2fbd404mtklein        public_defines += [ "SK_ANGLE" ]
751d68f9b00389bf676b171f250e684486cb2fbd404mtklein        deps += [ "//third_party/angle2" ]
752d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
75338925aa37c17c0f54868852b8c3edf373400c742mtklein      }
75438925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
75538925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
75638925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
75738925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
75838925aa37c17c0f54868852b8c3edf373400c742mtklein      }
759d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_vulkan) {
760d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
761d68f9b00389bf676b171f250e684486cb2fbd404mtklein      }
762a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
76325c81d4e651b43b8217c365c87d530036529a673mtklein  }
76425c81d4e651b43b8217c365c87d530036529a673mtklein
765c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
766c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
767c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
768c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
769046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
770046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
771046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
772046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
773046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
774c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
775c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
776c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
777c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
778046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
779c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
780c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
78125c81d4e651b43b8217c365c87d530036529a673mtklein  }
78225c81d4e651b43b8217c365c87d530036529a673mtklein
783c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
784c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
785c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
786c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
787c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
788c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
789c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
790c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
791c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
792b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
793c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
7940590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
795c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
796c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
797c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
799c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
800c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
801c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
802c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
803c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
804c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
805c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
806c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
807c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
808c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
809c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
810046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
811c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
812c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
813c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
814c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
815c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
816c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
817c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
81825c81d4e651b43b8217c365c87d530036529a673mtklein
819c095df55e86e7126b0582856720bb9177b553ff1mtklein  gm_sources = exec_script("gyp/find.py",
820c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [
821c095df55e86e7126b0582856720bb9177b553ff1mtklein                             "*.c*",
822c095df55e86e7126b0582856720bb9177b553ff1mtklein                             rebase_path("gm"),
823c095df55e86e7126b0582856720bb9177b553ff1mtklein                           ],
824c095df55e86e7126b0582856720bb9177b553ff1mtklein                           "list lines",
825c095df55e86e7126b0582856720bb9177b553ff1mtklein                           [])
826c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
827c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
828c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
829c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
830c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
831c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
832c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
833c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
834c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
83525c81d4e651b43b8217c365c87d530036529a673mtklein
836c095df55e86e7126b0582856720bb9177b553ff1mtklein  tests_sources = exec_script("gyp/find.py",
837c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
838c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
839c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("tests"),
840c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
841c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
842c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
843c095df55e86e7126b0582856720bb9177b553ff1mtklein
844c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
845c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
846a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    sources = tests_sources - [
847a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/PathOpsSkpClipTest.cpp"),  # alternate main
848a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/SkpSkGrTest.cpp"),  # doesn't compile
849a45be61d6beeb923d1b3352776042d58d7b7280dmtklein                rebase_path("tests/skia_test.cpp"),  # alternate main
850a45be61d6beeb923d1b3352776042d58d7b7280dmtklein              ]
851a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
852a45be61d6beeb923d1b3352776042d58d7b7280dmtklein      sources -= [ rebase_path("tests/FontMgrAndroidParserTest.cpp") ]
853a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
854c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
8556cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
856c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
857c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
858c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
859c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
860c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
861c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
862c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
863c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8642f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
865c095df55e86e7126b0582856720bb9177b553ff1mtklein  bench_sources = exec_script("gyp/find.py",
866c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [
867c095df55e86e7126b0582856720bb9177b553ff1mtklein                                "*.c*",
868c095df55e86e7126b0582856720bb9177b553ff1mtklein                                rebase_path("bench"),
869c095df55e86e7126b0582856720bb9177b553ff1mtklein                              ],
870c095df55e86e7126b0582856720bb9177b553ff1mtklein                              "list lines",
871c095df55e86e7126b0582856720bb9177b553ff1mtklein                              [])
872c095df55e86e7126b0582856720bb9177b553ff1mtklein
873c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
874c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
875c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
876c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources -= [
877c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobench.cpp"),
878c095df55e86e7126b0582856720bb9177b553ff1mtklein      rebase_path("bench/nanobenchAndroid.cpp"),
879c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
880c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
881c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
882c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
883c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
884c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
885c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
886c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
887c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
8882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
889c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
890c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
891c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
892c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
893c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
894c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
895c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
896c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
897c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
898c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
89928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
900c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
901c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
902c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
903c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
904c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
905c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
906c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
90728d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
908c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
909c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
910c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
911c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
912c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
913c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
914c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
915a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
91616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("views") {
91716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "include/views" ]
91816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = [
91916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEvent.cpp",
92016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEventSink.cpp",
92116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkOSMenu.cpp",
92216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTagList.cpp",
92316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTouchGesture.cpp",
92416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkView.cpp",
92516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkViewPriv.cpp",
92616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
92716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    libs = []
92816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (!is_android) {
92916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/SkWindow.cpp" ]
93016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
93116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (is_android) {
93216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_linux) {
9332dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      public_include_dirs += [ "src/views/unix" ]
9342dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      sources += [
9352dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/SkOSWindow_Unix.cpp",
9362dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/keysym2ucs.c",
9372dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      ]
93816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_mac) {
93916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [
94016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkEventNotifier.mm",
94116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkNSView.mm",
94216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkOSWindow_Mac.mm",
94316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkTextFieldCell.m",
94416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
94516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      libs += [
94616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "QuartzCore.framework",
94716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Cocoa.framework",
94816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Foundation.framework",
94916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
95016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_win) {
95116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/win/SkOSWindow_win.cpp" ]
95216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
95316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
95416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
95516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  sample_sources = exec_script("gyp/find.py",
95616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               [
95716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                                 "*.c*",
95816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                                 rebase_path("samplecode"),
95916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               ],
96016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               "list lines",
96116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman                               [])
96216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
96316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("samples") {
96416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    include_dirs = [ "experimental" ]
96516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "samplecode" ]
96616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = sample_sources
96716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources -= [
96816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleAnimator.cpp"),  # relies on animator
96916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleApp.cpp"),  # part of SampleApp exe, not samples lib
97016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleClamp.cpp"),
97116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleDash.cpp"),
97216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleLua.cpp"),  # no Lua yet in GN
97316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SamplePathFill.cpp"),
97416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SamplePictFile.cpp"),  # relies on SK_SUPPORT_LEGACY_DRAWFILTER
97516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleSkLayer.cpp"),  # relies on SkMatrix44 which doesn't compile?
97616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      rebase_path("samplecode/SampleFontCache.cpp"),  # relies on pthread.h
97716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
97816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources += [
97916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp",
98016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3.cpp",
98116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3_A.cpp",
98216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "experimental/SkSetPoly3To3_D.cpp",
98316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
98416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    deps = [
98516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":experimental_svg_model",
98616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":gm",  # Why does SampleFilterQuality.cpp include gm.h ???
98716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":tool_utils",
98816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":views",
98916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":xml",
99016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
99116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
99216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
9932b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
9942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
9952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
9962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
9972b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
9982b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
9992b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
10002b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
1001046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
1002a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
10032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
10042b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
10052b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
10062b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
10072f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
10082b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
10092b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
10102b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
10112b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10122b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
10132b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10142b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
1015a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein  if (!is_debug) {  # I've benchmarked debug code once too many times...
1016a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    executable("monobench") {
1017a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      sources = [
1018a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        "tools/monobench.cpp",
1019a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1020a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      deps = [
1021a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":bench",
1022a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":skia",
1023a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1024a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      testonly = true
1025a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    }
10262b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10272b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
10282b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
10292b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
10302b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
10312b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10322b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
10332b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
1034046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
10356519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
10362b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
10372b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
10382b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
10392b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
10402b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
10412b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
10422b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10432b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
10442b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
104519a9720978700a24efed8dda7e0935ea2b7338c4halcanary
104638925aa37c17c0f54868852b8c3edf373400c742mtklein  if (skia_enable_gpu) {
104738925aa37c17c0f54868852b8c3edf373400c742mtklein    executable("skpbench") {
104838925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
104938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/skpbench/skpbench.cpp",
105038925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
105138925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
105238925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
105338925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
105438925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
105538925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
105638925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
105738925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
105838925aa37c17c0f54868852b8c3edf373400c742mtklein    }
10594b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
10604b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
10614b167fc8503d8b4887346c5054fc2cc93428846dMike Klein  # We can't yet build ICU on Windows.
1062768bdfca71391016c92239831d66427d0f3b151dMike Klein  if (!is_win) {
10633eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
10646f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
10656f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
10666f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
10676f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
10686f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
10696f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
10706f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
10716f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
10726f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
10736f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
107419a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
10753eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
10763eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
10773eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
10783eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
10793eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
10803eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
10813eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
10823eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
10833eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
10843eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
1085046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
1086046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
1087046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
1088046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
1089046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1090046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
1091046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
1092046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
1093046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
1094046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1095046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
1096046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
1097ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein
1098ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  executable("skiaserve") {
1099ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    sources = [
1100ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Request.cpp",
1101ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/Response.cpp",
1102ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/skiaserve.cpp",
1103ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp",
1104ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BatchesHandler.cpp",
1105ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/BreakHandler.cpp",
1106ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
1107ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/CmdHandler.cpp",
1108ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
1109ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DataHandler.cpp",
1110ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
1111ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
1112ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/ImgHandler.cpp",
1113ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/InfoHandler.cpp",
1114c03e1c55a79f00d02ab528945425ff50cb700402Ben Wagner      "tools/skiaserve/urlhandlers/OverdrawHandler.cpp",
1115ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/PostHandler.cpp",
1116ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/QuitHandler.cpp",
1117ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "tools/skiaserve/urlhandlers/RootHandler.cpp",
1118ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
1119ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    deps = [
1120ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":flags",
1121ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":gpu_tool_utils",
1122ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":skia",
1123ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      ":tool_utils",
1124ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/jsoncpp",
1125ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libmicrohttpd",
1126ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein      "//third_party/libpng",
1127ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    ]
1128ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein    testonly = true
1129ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  }
113014f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick
113114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  executable("fuzz") {
113214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    sources = [
113314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FilterFuzz.cpp",
113414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzGradients.cpp",
113514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzParsePath.cpp",
113614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzPathop.cpp",
113714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzScaleToSides.cpp",
113814f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/fuzz.cpp",
113914f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
114014f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    deps = [
114114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":flags",
114214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":skia",
114314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
114414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    testonly = true
114514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  }
11463831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein
11473831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  executable("dump_record") {
11483831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    sources = [
11493831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/DumpRecord.cpp",
11503831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/dump_record.cpp",
11513831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
11523831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    deps = [
11533831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":flags",
11543831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":skia",
11553831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
11563831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    testonly = true
11573831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  }
1158fe9172705791848ebfe5b5630973b7e67305f64cbungeman
1159fe9172705791848ebfe5b5630973b7e67305f64cbungeman  executable("skdiff") {
1160fe9172705791848ebfe5b5630973b7e67305f64cbungeman    sources = [
1161fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff.cpp",
1162fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_html.cpp",
1163fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_main.cpp",
1164fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_utils.cpp",
1165fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1166fe9172705791848ebfe5b5630973b7e67305f64cbungeman    deps = [
1167fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":skia",
1168fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":tool_utils",
1169fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1170fe9172705791848ebfe5b5630973b7e67305f64cbungeman    testonly = true
1171fe9172705791848ebfe5b5630973b7e67305f64cbungeman  }
1172a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary
1173a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  executable("skp_parser") {
1174a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    sources = [
1175a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "tools/skp_parser.cpp",
1176a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1177a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    deps = [
1178a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":skia",
1179a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":tool_utils",
1180a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "//third_party/jsoncpp",
1181a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1182a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    testonly = true
1183a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  }
118416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
118513b4bc1a429a7250cc4303963ccd62b382245686Brian Osman  if (skia_enable_gpu && (is_linux || is_win)) {
118616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    executable("viewer") {
118716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources = [
118816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/GMSlide.cpp",
118916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/ImageSlide.cpp",
119016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SKPSlide.cpp",
119116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SampleSlide.cpp",
119216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/Viewer.cpp",
119316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/CommandSet.cpp",
119416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/GLWindowContext.cpp",
119516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/Window.cpp",
119616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/WindowContext.cpp",
119716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
11982dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      libs = []
119916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
12002dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      if (is_linux) {
12012dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        sources += [
12022dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/GLWindowContext_unix.cpp",
12032dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/RasterWindowContext_unix.cpp",
12042dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/Window_unix.cpp",
12052dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/main_unix.cpp",
12062dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        ]
12072dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      } else if (is_win) {
120816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [
120916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/GLWindowContext_win.cpp",
121016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/RasterWindowContext_win.cpp",
121116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/Window_win.cpp",
121216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/main_win.cpp",
121316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ]
121416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
121516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
121616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      if (skia_use_vulkan) {
121716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [ "tools/viewer/sk_app/VulkanWindowContext.cpp" ]
12182dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        if (is_linux) {
12192dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          sources += [ "tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp" ]
12202dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          libs += [ "X11-xcb" ]
12212dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        } else if (is_win) {
122216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          sources += [ "tools/viewer/sk_app/win/VulkanWindowContext_win.cpp" ]
122316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        }
122416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
122516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
122616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      include_dirs = []
122716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      deps = [
122816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":flags",
122916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gm",
123016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gpu_tool_utils",
123116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":samples",
123216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":skia",
123316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":tool_utils",
123416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":views",
123516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "//third_party/jsoncpp",
123616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
123716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      testonly = true
123816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
123916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
124025c81d4e651b43b8217c365c87d530036529a673mtklein}
1241