BUILD.gn revision 43f115cef45f4471ad4db30503b96530c7ad44a9
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
6cfc4f44aebdd560c600991ad900a4f07c3958c8fMike Kleinimport("gn/android_framework_defines.gni")
78c24f4fae3389b9937eb73128e76226cffebdd72mikejurkaimport("gn/shared_sources.gni")
8b944728b93a1623d73be31413a6798e0b7dddc16brettw
93e8012e74f70bf49427a7422f9e5996c9882d4f3mtkleinif (!defined(is_skia_standalone)) {
103e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  is_skia_standalone = false
113e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein}
123e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein
13c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleindeclare_args() {
14c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein  skia_use_angle = false
156321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
163cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
17cdedd0e061f3f50cd217638c28b27d798d930896mtklein  skia_use_freetype = is_android || is_fuchsia || is_linux
1869f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein  skia_use_gdi = false
197d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  skia_use_icu = !is_fuchsia && !is_ios && !is_win  # TODO: Windows
206321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
216321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
22eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
2338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  skia_use_lua = false
24a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein  skia_use_mesa = false
2510d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  skia_use_piex = !is_win
266321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
271bd72ba2cb349788223e3e7304f25751c87f1f95mtklein
281bd72ba2cb349788223e3e7304f25751c87f1f95mtklein  skia_enable_android_framework_defines = false
2906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  skia_enable_gpu = true
303e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_tools = is_skia_standalone
313e8012e74f70bf49427a7422f9e5996c9882d4f3mtklein  skia_enable_vulkan_debug_layers = is_skia_standalone && is_debug
32686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel  skia_vulkan_sdk = getenv("VULKAN_SDK")
33c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
3423d73ea5b45cef6cf66ebe912725c4dd947c4767Brian Salomondeclare_args() {
3514b748ddd2a8f0eba9a1b3061980d1174dfc279dJames Robinson  skia_use_dng_sdk =
3614b748ddd2a8f0eba9a1b3061980d1174dfc279dJames Robinson      !is_fuchsia && !is_win && skia_use_libjpeg_turbo && skia_use_zlib
3710d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  skia_use_sfntly = skia_use_icu
3810d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein
394d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  if (is_android) {
404d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein    skia_use_vulkan = defined(ndk_api) && ndk_api >= 24
414d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  } else {
424d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein    skia_use_vulkan = skia_vulkan_sdk != ""
434d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  }
4423d73ea5b45cef6cf66ebe912725c4dd947c4767Brian Salomon}
45789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon
4638925aa37c17c0f54868852b8c3edf373400c742mtklein# Our tools require static linking (they use non-exported symbols).
4738925aa37c17c0f54868852b8c3edf373400c742mtkleinskia_enable_tools = skia_enable_tools && !is_component_build
4806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
49a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
50a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
511211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
5225c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
53fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
541211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
551211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
561211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
571211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
581211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
591211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
601211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/images",
611211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
621211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
6325c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
651211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
6625c81d4e651b43b8217c365c87d530036529a673mtklein  "include/xml",
671211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
681211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
69c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
70c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
711211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
72ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  defines = []
73ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  if (is_component_build) {
74ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein    defines += [ "SKIA_DLL" ]
75ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  }
76c4cbd74a38232a0e9f1cc1cc8fb826bb06c577a9Mike Klein  if (is_fuchsia || is_linux) {
775561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
785561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
79cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  if (skia_enable_android_framework_defines) {
80cfc4f44aebdd560c600991ad900a4f07c3958c8fMike Klein    defines += android_framework_defines
81cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  }
8206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (!skia_enable_gpu) {
8306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    defines += [ "SK_SUPPORT_GPU=0" ]
8406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
85c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
86c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
87c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
88c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
89c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
91c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
92c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
93c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
941211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
95c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/config",
96c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
97c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
9825c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
9925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
100c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/gpu",
101c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
102c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
103c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
104c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
105c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
1062b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
107c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
108c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
1099e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
110c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
1117a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
112c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
11319b91531e912283d237435d94516575b28713cbascroggo    "third_party/gif",
114c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx",
115c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
116150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
117b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth  defines = [
118b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    "SK_GAMMA_APPLY_TO_A8",
119b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    "SK_INTERNAL",
120b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth  ]
121b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  if (is_android) {
122b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    defines += [
123b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_EXPONENT=1.4",
124b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_CONTRAST=0.0",
125b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    ]
126b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  }
12788a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  if (is_official_build || is_android) {
12888a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    # TODO(bsalomon): it'd be nice to make Android normal.
12988a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    defines += [ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0" ]
13088a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  }
131789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  libs = []
132789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  lib_dirs = []
133789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  if (skia_use_vulkan) {
134ab563d471960b0bd5d3ed22dd604bc92521ffe01Greg Daniel    if (skia_vulkan_sdk != "" && !is_android) {
135487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      if (is_win) {
136487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        include_dirs += [ "$skia_vulkan_sdk/Include/" ]
137487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        lib_dirs += [ "$skia_vulkan_sdk/Bin" ]
138487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      } else {
139686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel        include_dirs += [ "$skia_vulkan_sdk/include/" ]
140686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel        lib_dirs += [ "$skia_vulkan_sdk/lib/" ]
141487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      }
142487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    }
143487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    if (is_win) {
144487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan-1.lib" ]
145487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    } else {
146487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan" ]
147789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    }
148789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  }
149c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
150c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
151c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
152c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
153c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
154c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
155c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
156c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
157c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
158c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
159c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
160c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
161c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
162c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1639b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1649b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1659b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1669b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1679b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1689b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1699b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1709b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1719b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1729b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1739b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1749b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1759b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1769b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1779b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1789b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1799b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1809b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
181a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
182a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
183422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
184c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1857d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
1867d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
187b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.none_sources
188b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
189b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
190b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
1917d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
192b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
193b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.armv7_sources + skia_opts.neon_sources
1947d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
195b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
196b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
197b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
198b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
199b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.arm64_sources
200b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
201b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
202b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
203b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
204b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
205b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.crc32_sources
206b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
207b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
208b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
2099b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
2109b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
211b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse2_sources
212d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
213d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE2" ]
214d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2153eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse2" ]
2163eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2179b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2184e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2199b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
2209b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
221b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
222d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
223d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSSE3" ]
224d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2253eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mssse3" ]
2263eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2279b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2284e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2299b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
2309b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
231b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
232d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
233d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE41" ]
234d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2353eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.1" ]
2363eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2379b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
238c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2399b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2409b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
241b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
242d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
243d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE42" ]
244d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2453eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.2" ]
2463eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2479b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2489b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2499b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2509b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
251b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
2523eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2533eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX" ]
2543eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2553eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mavx" ]
2563eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
257c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
258c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
25978d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Kleinopts("hsw") {
26078d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  enabled = is_x86
26178d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  sources = skia_opts.hsw_sources
2623eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
2633eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "/arch:AVX2" ]
2643eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2653eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [
2663eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mavx2",
2673eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi",
2683eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi2",
2693eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mf16c",
2703eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mfma",
2713eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    ]
2723eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
27378d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein}
27478d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein
275349cecefe21e2b45acc201290cc4e4fa93b4ad76mtkleinopts("dsp") {
276349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein  enabled = current_cpu == "mipsel"
277b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.mips_dsp_sources
278b6064ef5b822ebc14d62170bd4ffa2f7c9bfbe4dmtklein  cflags = []
279349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein}
280349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein
281c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
282457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
283457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
284457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
285cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
286cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
287cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
288457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
289457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
290cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
291cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
292cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
293cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
294cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
295f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo                               "configs_to_remove",
296cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
297457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
2989b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
299f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo      if (defined(invoker.configs_to_remove)) {
300f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo        configs -= invoker.configs_to_remove
301f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo      }
302457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
303457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
304457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
305457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
306457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
307457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
308457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
309457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
3106ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
311457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
312cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
313f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo                               "configs_to_remove",
314457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
315cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
316cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
317cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
318cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
319457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
320eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
321eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
322457b42a6398020c3791f62f8c8637653e0d39bccmtklein
323a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
324a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
325a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
326a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
327a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
328a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/freetype2",
329a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
330a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
331a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
332a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
333a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
334a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
335a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
336a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
337d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
338d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
339d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
340d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
341d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "//third_party/freetype2",
342d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
343d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
344d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
345d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
346d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
347d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
348d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
3493cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
3503cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
3513cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3523cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
3533cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
3543cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
3553cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3563cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3571ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
3583cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
3593cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
3603cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
3613cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3623cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3633cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3643cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3653cc22180561ae17a64ff0e0f9ba173eac149009emtklein
366cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
367cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
368cdedd0e061f3f50cd217638c28b27d798d930896mtklein
369cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
370cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "//third_party/freetype2",
371cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
372cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
373cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
374cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
375cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
376cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
377cdedd0e061f3f50cd217638c28b27d798d930896mtklein
37806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
37906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
380e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
381e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
38206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources = skia_gpu_sources + [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
38306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
38406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
38506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
38606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
38706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
38806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
38906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
390703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  libs = []
39106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
39206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
39306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
39406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
39506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
39606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
397703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  } else if (is_win) {
398703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    sources += [ "src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp" ]
399703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    libs += [ "OpenGL32.lib" ]
40006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
40106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
40206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
403e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
404e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
405e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
406e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
407e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
408e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
409e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
410e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
41106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
41206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
4136321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
4146321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
4156321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
4166321381d18f9d478598c0996c1380633003961ddmtklein
4176321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4186321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
4196321381d18f9d478598c0996c1380633003961ddmtklein  ]
4206321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4216321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
4226321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
4236321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
4246321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
4256321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
4266321381d18f9d478598c0996c1380633003961ddmtklein  ]
4276321381d18f9d478598c0996c1380633003961ddmtklein}
4286321381d18f9d478598c0996c1380633003961ddmtklein
4296321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
4306321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_zlib
4316321381d18f9d478598c0996c1380633003961ddmtklein
4326321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4336321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
4346321381d18f9d478598c0996c1380633003961ddmtklein  ]
435b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
436cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
4376321381d18f9d478598c0996c1380633003961ddmtklein
4386321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
4396321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
440cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein    public_defines = [ "SK_PDF_USE_SFNTLY" ]
4416321381d18f9d478598c0996c1380633003961ddmtklein  }
4426321381d18f9d478598c0996c1380633003961ddmtklein}
4436321381d18f9d478598c0996c1380633003961ddmtklein
4446321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
4456321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
4466321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
4476321381d18f9d478598c0996c1380633003961ddmtklein
4486321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4496321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
4506321381d18f9d478598c0996c1380633003961ddmtklein  ]
4516321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4526321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
4536321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
4546321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
4556321381d18f9d478598c0996c1380633003961ddmtklein  ]
4566321381d18f9d478598c0996c1380633003961ddmtklein}
4576321381d18f9d478598c0996c1380633003961ddmtklein
458f84ad646f94ee959eb17d05f072935edd1ad14fdscroggooptional("raw") {
45910d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  enabled = skia_use_dng_sdk && skia_use_libjpeg_turbo && skia_use_piex
460f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  public_defines = [ "SK_CODEC_DECODES_RAW" ]
461f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
462f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  deps = [
463f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/dng_sdk",
464f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/libjpeg-turbo:libjpeg",
465f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/piex",
466f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  ]
467f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
468f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  # SkRawCodec catches any exceptions thrown by dng_sdk, insulating the rest of
469f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  # Skia.
470f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  configs_to_remove = [ "//gn:no_exceptions" ]
471f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
472f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  sources = [
473f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "src/codec/SkRawAdapterCodec.cpp",
474f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "src/codec/SkRawCodec.cpp",
475f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  ]
476f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo}
477f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
4783cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
4793cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
4803cc22180561ae17a64ff0e0f9ba173eac149009emtklein
4813cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
4823cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
4833cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4843cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
4853cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
4863cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
4873cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
4883cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
4893cc22180561ae17a64ff0e0f9ba173eac149009emtklein
490457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
491457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
492457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
493457b42a6398020c3791f62f8c8637653e0d39bccmtklein
494457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
495457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
496457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
497457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
498457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
499457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
500457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
501457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
502457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
503eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
5046321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
5056321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
506442fff958c911bbc354a56003e3a8d75805c45f6Florin Malita  public_defines = [ "SK_XML" ]
5076321381d18f9d478598c0996c1380633003961ddmtklein
5086321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
5096321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
5106321381d18f9d478598c0996c1380633003961ddmtklein  ]
5116321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
5126321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
5136321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
5146321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
5156321381d18f9d478598c0996c1380633003961ddmtklein  ]
5166321381d18f9d478598c0996c1380633003961ddmtklein}
5176321381d18f9d478598c0996c1380633003961ddmtklein
518c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
519c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
520c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
521c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
522c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
523b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
524b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
5259b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
526b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
527349cecefe21e2b45acc201290cc4e4fa93b4ad76mtklein    ":dsp",
528a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
529d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
5303cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
531cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
53206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
53378d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    ":hsw",
5346321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
5359b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
5366321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
5376321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
538f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    ":raw",
5399b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
5409b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
5419b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
5429b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
5433cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":typeface_freetype",
544eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
5456321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
546c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
547c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
54843f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # This file (and all GN files in Skia) are designed to work with an
54943f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # empty sources assignment filter; we handle all that explicitly.
55043f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # We clear the filter here for clients who may have set up a global filter.
55143f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  set_sources_assignment_filter([])
55243f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde
553c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
554b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
555b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_effects_sources
556b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_sksl_sources
557b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
558c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
55925c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
56025c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
56125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
5621211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
5631211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
5641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
5651211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
5661211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
5671211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
56819b91531e912283d237435d94516575b28713cbascroggo    "src/codec/SkGifCodec.cpp",
5691211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
5701211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
57125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
5721211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
57319b91531e912283d237435d94516575b28713cbascroggo    "src/codec/SkStreamBuffer.cpp",
5741211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
5751211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
576c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
577c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder_Factory.cpp",
5782b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/images/SkKTXImageEncoder.cpp",
579c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
580c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkGlobalInitialization_default.cpp",
5811211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
582c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
583c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
584c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
585c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
58625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGCanvas.cpp",
58725c81d4e651b43b8217c365c87d530036529a673mtklein    "src/svg/SkSVGDevice.cpp",
588c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
589c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
5903d3a65c488162ef1db0b35adf3235d012b04c88dscroggo    "third_party/gif/SkGifImageReader.cpp",
591c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/ktx/ktx.cpp",
592c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
593b944728b93a1623d73be31413a6798e0b7dddc16brettw
5947d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
5957d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
596c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
597c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
598ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein      "src/fonts/SkFontMgr_indirect.cpp",
599c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
600c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
601c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
602c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
603c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
604c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
605605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
606c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
607c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
608c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
60925c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS.cpp",
6104b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "src/xps/SkXPSDevice.cpp",
611c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
61269f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    if (skia_use_gdi) {
61369f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_gdi_factory.cpp" ]
61469f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      libs += [
61569f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Gdi32.lib",
61669f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Usp10.lib",
61769f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      ]
61869f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    } else {
61969f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_dw_factory.cpp" ]
62069f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    }
621b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
622b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
6234b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    libs += [
6244b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "FontSub.lib",
6254b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "Ole32.lib",
6264b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "OleAut32.lib",
6274b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "User32.lib",
6284b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    ]
629c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
630c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
631c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
632605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
633c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
63425c81d4e651b43b8217c365c87d530036529a673mtklein      "src/xps/SkDocument_XPS_None.cpp",
635c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
636c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
637c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
6387d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
6397d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    deps += [
6407d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/cpu-features",
6417d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "//third_party/expat",
6427d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
64306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
6447d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
6457d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
6467d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
6477d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
6487d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
6497d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
6507d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
651c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
65209e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
65309e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GL",
65409e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "GLU",
65509e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "X11",
65609e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
65706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
658c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
659c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
660c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
661c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
6627d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
663c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
664c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
665c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
666c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
66709e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
66809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
66909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
67009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
671c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
6726fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
6737d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (is_ios) {
6747d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    sources += [
6757d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkDebug_stdio.cpp",
6767d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkFontHost_mac.cpp",
6777d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkImageEncoder_CG.cpp",
6787d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkImageGeneratorCG.cpp",
6797d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    ]
6807d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    libs += [
6817d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreFoundation.framework",
6827d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreGraphics.framework",
6837d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreText.framework",
6847d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "ImageIO.framework",
6857d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "MobileCoreServices.framework",
6867d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    ]
6877d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  }
6887d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein
6896fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
69006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
6916fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
692c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
693c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
69450500ad470af3d82c68144fec7e55c9cdffb5d98Mike Kleinconfig("skia.h_config") {
69550500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein  include_dirs = [ "$target_gen_dir" ]
69650500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein}
6971211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinaction("skia.h") {
69850500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein  public_configs = [ ":skia.h_config" ]
69989eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein  skia_h = "$target_gen_dir/skia.h"
70089eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein  script = "gn/find_headers.py"
70189eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein  args = [ rebase_path(skia_h, root_build_dir) ] +
70289eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein         rebase_path(skia_public_includes)
70389eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein  depfile = "$skia_h.deps"
7041211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  outputs = [
70589eda8a5e3f9023a4ee4648627101d7b4e60b4c8Mike Klein    skia_h,
7061211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  ]
7071211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein}
7081211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
70906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinif (skia_enable_gpu && target_cpu == "x64") {
7101fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # Our bots only have 64-bit libOSMesa installed.
7111fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  # TODO: worth fixing?
7121fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  executable("fiddle") {
7131fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    libs = []
7141fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    if (is_linux) {
7151fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      libs += [ "OSMesa" ]
7161fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    }
71756d5669095feca663e9e05f4621146abeee626ecmtklein
7181fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    sources = [
7191fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "src/images/SkForceLinking.cpp",
7201fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/draw.cpp",
7211fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      "tools/fiddle/fiddle_main.cpp",
7221fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
7231fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    deps = [
7241fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia",
7251fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein      ":skia.h",
7261fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein    ]
7271fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
728c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
72925c81d4e651b43b8217c365c87d530036529a673mtklein
730109ddc386b4da2d8c3fe8050e0a8da864c345148Mike Kleinif (is_skia_standalone && skia_enable_gpu) {
73150500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein  source_set("public_headers_warnings_check") {
73250500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein    sources = [
73350500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein      "tools/public_headers_warnings_check.cpp",
73450500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein    ]
73550500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein    configs -= [ "//gn:warnings_except_public_headers" ]
73650500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein    deps = [
73750500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein      ":skia",
73850500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein      ":skia.h",
73950500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein    ]
74050500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein  }
74150500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein}
74250500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein
743c095df55e86e7126b0582856720bb9177b553ff1mtklein# Targets guarded by skia_enable_tools may use //third_party freely.
744c095df55e86e7126b0582856720bb9177b553ff1mtkleinif (skia_enable_tools) {
745c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
746c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
747c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
748a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
749a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
750a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
751c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
752c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
753c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
754c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
755c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
756c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
757c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
758c095df55e86e7126b0582856720bb9177b553ff1mtklein
759c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
760c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
761c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
762c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
763c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
764c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
76525c81d4e651b43b8217c365c87d530036529a673mtklein  }
766c095df55e86e7126b0582856720bb9177b553ff1mtklein
767c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
76838925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
76938925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
77038925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
77138925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
772d68f9b00389bf676b171f250e684486cb2fbd404mtklein
773d68f9b00389bf676b171f250e684486cb2fbd404mtklein      deps = []
77438925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
77538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
77638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
77738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
77838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
779605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
78038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
78138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
78238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
78338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
78438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
78538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
78638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
78738925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
78838925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
78938925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
79038925aa37c17c0f54868852b8c3edf373400c742mtklein
79138925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
79238925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
7937d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      } else if (is_ios) {
7947d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        sources += [ "tools/gpu/gl/iOS/CreatePlatformGLTestContext_iOS.mm" ]
7957d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        libs += [ "OpenGLES.framework" ]
79638925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
79738925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
79838925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
79938925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
8004b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      } else if (is_win) {
8014b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        sources += [ "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp" ]
8024b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        libs += [
8034b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "Gdi32.lib",
8044b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "OpenGL32.lib",
8054b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        ]
80638925aa37c17c0f54868852b8c3edf373400c742mtklein      }
807238b820369c4b556c2e7c8277855e6950de3d9ebBrian Salomon
808c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      if (skia_use_angle) {
809c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        public_defines += [ "SK_ANGLE" ]
810c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        deps += [ "//third_party/angle2" ]
811c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
812c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      }
81338925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
81438925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
81538925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
81638925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
81738925aa37c17c0f54868852b8c3edf373400c742mtklein      }
818d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_vulkan) {
819d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
820d68f9b00389bf676b171f250e684486cb2fbd404mtklein      }
821a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
82225c81d4e651b43b8217c365c87d530036529a673mtklein  }
82325c81d4e651b43b8217c365c87d530036529a673mtklein
824c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
825c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
826c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
827c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
828046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
829046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
830046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
831046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
832046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
833c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
834c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
835c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
836c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
837046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
838c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
839c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
84025c81d4e651b43b8217c365c87d530036529a673mtklein  }
84125c81d4e651b43b8217c365c87d530036529a673mtklein
842c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
843c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
844c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
845c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
846c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
847c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
848c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
849c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/images/SkForceLinking.cpp",
850c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
851b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
852c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
8530590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
854c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
855c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
856c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
857c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
858c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
859c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
860c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
861c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
862c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
863c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
864c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
865c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
866c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
867c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
868c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
869046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
870c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
871c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
872c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
873c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
874c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
875c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
876c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
87725c81d4e651b43b8217c365c87d530036529a673mtklein
8786e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/gm.gni")
879c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
880c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
881c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
882c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
88319b91531e912283d237435d94516575b28713cbascroggo      ":flags",
884c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
885c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
886c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
887c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
888c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
88925c81d4e651b43b8217c365c87d530036529a673mtklein
8906e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/tests.gni")
891c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
892c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
8936e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = tests_sources + pathops_tests_sources
894a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
8956e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein      sources -= [ "//tests/FontMgrAndroidParserTest.cpp" ]
896a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
897c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
8986cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
899c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
900c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
901c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
902c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
903c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
904c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
905c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
906c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
9072f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
9086e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/bench.gni")
909c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
910c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
911c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
912c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
913c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
914c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
915c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
916c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
917c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
918c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
919c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
9202b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
921c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
922c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
923c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
924c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
925c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
926c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
927c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
928c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
929c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
930c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
93128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
932c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
933c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
934c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
935c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
936c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
937c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
938c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
93928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
940c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
941c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
942c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
943c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
944c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
945c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
946c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
947a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
94816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("views") {
94916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "include/views" ]
95016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = [
95116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEvent.cpp",
95216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEventSink.cpp",
95316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkOSMenu.cpp",
95416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTagList.cpp",
95516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTouchGesture.cpp",
95616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkView.cpp",
95716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkViewPriv.cpp",
95816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
95916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    libs = []
96016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (!is_android) {
96116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/SkWindow.cpp" ]
96216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
9634e56a91393733359ba19967a78df26184e53854eJim Van Verth    if (is_linux) {
9642dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      public_include_dirs += [ "src/views/unix" ]
9652dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      sources += [
9662dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/SkOSWindow_Unix.cpp",
9672dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/keysym2ucs.c",
9682dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      ]
96916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_mac) {
97016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [
97116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkEventNotifier.mm",
97216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkNSView.mm",
97316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkOSWindow_Mac.mm",
97416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkTextFieldCell.m",
97516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
97616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      libs += [
97716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "QuartzCore.framework",
97816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Cocoa.framework",
97916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Foundation.framework",
98016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
98116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_win) {
98216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/win/SkOSWindow_win.cpp" ]
98316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
98416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
98516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
98638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  if (skia_use_lua) {
98738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    test_lib("lua") {
98838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      public_include_dirs = []
98938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
99038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "src/utils/SkLua.cpp",
99138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "src/utils/SkLuaCanvas.cpp",
99238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
99338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
99438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
99538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
99638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
99738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
99838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    executable("lua_app") {
99938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
100038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "tools/lua/lua_app.cpp",
100138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
100238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
100338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
100438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":skia",
100538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
100638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
100738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      testonly = true
100838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
100938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
101038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    executable("lua_pictures") {
101138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
101238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "tools/lua/lua_pictures.cpp",
101338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
101438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
101538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":flags",
101638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
101738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":skia",
101838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":tool_utils",
101938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
102038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
102138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      testonly = true
102238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
102338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  }
102438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
10256e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/samples.gni")
102616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("samples") {
102716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "samplecode" ]
10286e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    include_dirs = [ "experimental" ]
10296e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = samples_sources + [
10306e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp",
10316e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3.cpp",
10326e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3_A.cpp",
10336e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3_D.cpp",
10346e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein              ]
103516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    deps = [
103616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":experimental_svg_model",
10376e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein      ":gm",
103816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":tool_utils",
103916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":views",
104016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":xml",
104116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
104238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
104338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    if (skia_use_lua) {
104438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources += [ "samplecode/SampleLua.cpp" ]
104538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps += [
104638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
104738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
104838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
104938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
105016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
105116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
10522b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("dm") {
10532b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
10542b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
10552b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
10562b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
10572b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10582b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
10592b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
1060046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
1061a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
10622b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
10632b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
10642b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
10652b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
10662f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
10672b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
10682b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
10692b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
10702b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10712b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
10722b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10732b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
1074a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein  if (!is_debug) {  # I've benchmarked debug code once too many times...
1075a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    executable("monobench") {
1076a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      sources = [
1077a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        "tools/monobench.cpp",
1078a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1079a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      deps = [
1080a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":bench",
1081a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":skia",
1082a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1083a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      testonly = true
1084a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    }
10852b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
10862b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
10872b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  executable("nanobench") {
10882b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
10892b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
10902b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
10912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
10922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
1093046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
10946519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
10952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
10962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
10972b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
10982b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
10992b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
11002b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
11012b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
11022b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    testonly = true
11032b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
110419a9720978700a24efed8dda7e0935ea2b7338c4halcanary
110557a98fc4d595875ca75f906acec8ba508dcb5248Jim Van Verth  if (is_linux || is_win || is_mac) {
1106b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    executable("SampleApp") {
110738925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
1108b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        "samplecode/SampleApp.cpp",
1109b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        "samplecode/SamplePictFile.cpp",
111038925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
1111b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      if (is_mac) {
1112b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/mac/skia_mac.mm" ]
1113b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      } else if (is_win) {
1114b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/win/skia_win.cpp" ]
1115b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      } else if (is_linux) {
1116b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/unix/skia_unix.cpp" ]
1117b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      }
111838925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
111938925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
1120b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":gm",
112138925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
1122b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":samples",
112338925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
112438925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
1125b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":views",
112638925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
1127c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      if (skia_use_angle) {
1128c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        deps += [ "//third_party/angle2" ]
1129c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      }
113038925aa37c17c0f54868852b8c3edf373400c742mtklein      testonly = true
113138925aa37c17c0f54868852b8c3edf373400c742mtklein    }
11328f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth  }
1133b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth
11348f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth  if (skia_enable_gpu) {
11358f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth    executable("skpbench") {
11368f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      sources = [
11378f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        "tools/skpbench/skpbench.cpp",
11388f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      ]
11398f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      deps = [
11408f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":flags",
11418f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":gpu_tool_utils",
11428f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":skia",
11438f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":tool_utils",
11448f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      ]
11458f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      testonly = true
1146b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    }
11474b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
11484b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
11497d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  # We can't yet build ICU on iOS or Windows.
11507d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (!is_ios && !is_win) {
11513eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    executable("sktexttopdf-hb") {
11526f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
11536f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
11546f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
11556f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
11566f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
11576f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
11586f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
11596f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
11606f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      testonly = true
11616f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
116219a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
11633eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  executable("sktexttopdf") {
11643eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
11653eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
11663eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
11673eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
11683eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
11693eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
11703eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
11713eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    testonly = true
11723eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
1173046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
1174046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  executable("get_images_from_skps") {
1175046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
1176046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
1177046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1178046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
1179046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
1180046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
1181046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
1182046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1183046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    testonly = true
1184046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
1185ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein
11868740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett  executable("colorspaceinfo") {
11878740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    sources = [
11888740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      "tools/colorspaceinfo.cpp",
11898740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    ]
11908740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    deps = [
11918740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":flags",
11928740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":skia",
11938740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":tool_utils",
11948740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    ]
11958740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    testonly = true
11968740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett  }
11978740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett
11987d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (!is_ios) {
11997d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    executable("skiaserve") {
12007d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      sources = [
12017d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/Request.cpp",
12027d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/Response.cpp",
12037d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/skiaserve.cpp",
12047d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp",
12057d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/BatchesHandler.cpp",
12067d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/BreakHandler.cpp",
12077d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
12087d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/CmdHandler.cpp",
12097d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
12107d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/DataHandler.cpp",
12117d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
12127d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
12137d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ImgHandler.cpp",
12147d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/InfoHandler.cpp",
12157d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/OverdrawHandler.cpp",
12167d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/PostHandler.cpp",
12177d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/QuitHandler.cpp",
12187d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/RootHandler.cpp",
12197d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      ]
12207d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      deps = [
12217d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":flags",
12227d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":gpu_tool_utils",
12237d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":skia",
12247d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":tool_utils",
12257d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/jsoncpp",
12267d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/libmicrohttpd",
12277d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/libpng",
12287d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      ]
12297d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      testonly = true
12307d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    }
1231ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  }
123214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick
123314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  executable("fuzz") {
123414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    sources = [
123514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FilterFuzz.cpp",
123614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzGradients.cpp",
123714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzParsePath.cpp",
123814f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzPathop.cpp",
123914f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzScaleToSides.cpp",
124014f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/fuzz.cpp",
124114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
124214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    deps = [
124314f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":flags",
124414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":skia",
124514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
124614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    testonly = true
124714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  }
12483831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein
12499feb6326d0c5407247ed1e3d8fade2f86b233001caryclark  executable("pathops_unittest") {
12506e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = pathops_tests_sources + [
12516e55fef07fce151bce187eabc59924ca60b3310aMike Klein                rebase_path("tests/skia_test.cpp"),
12526e55fef07fce151bce187eabc59924ca60b3310aMike Klein                rebase_path("tests/Test.cpp"),
12536e55fef07fce151bce187eabc59924ca60b3310aMike Klein              ]
12549feb6326d0c5407247ed1e3d8fade2f86b233001caryclark    deps = [
12559feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":flags",
12569feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":gpu_tool_utils",
12579feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":skia",
12589feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":tool_utils",
12599feb6326d0c5407247ed1e3d8fade2f86b233001caryclark    ]
12609feb6326d0c5407247ed1e3d8fade2f86b233001caryclark    testonly = true
12619feb6326d0c5407247ed1e3d8fade2f86b233001caryclark  }
12629feb6326d0c5407247ed1e3d8fade2f86b233001caryclark
12633831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  executable("dump_record") {
12643831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    sources = [
12653831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/DumpRecord.cpp",
12663831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/dump_record.cpp",
12673831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
12683831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    deps = [
12693831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":flags",
12703831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":skia",
12713831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
12723831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    testonly = true
12733831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  }
1274fe9172705791848ebfe5b5630973b7e67305f64cbungeman
1275fe9172705791848ebfe5b5630973b7e67305f64cbungeman  executable("skdiff") {
1276fe9172705791848ebfe5b5630973b7e67305f64cbungeman    sources = [
1277fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff.cpp",
1278fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_html.cpp",
1279fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_main.cpp",
1280fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_utils.cpp",
1281fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1282fe9172705791848ebfe5b5630973b7e67305f64cbungeman    deps = [
1283fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":skia",
1284fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":tool_utils",
1285fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1286fe9172705791848ebfe5b5630973b7e67305f64cbungeman    testonly = true
1287fe9172705791848ebfe5b5630973b7e67305f64cbungeman  }
1288a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary
1289a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  executable("skp_parser") {
1290a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    sources = [
1291a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "tools/skp_parser.cpp",
1292a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1293a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    deps = [
1294a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":skia",
1295a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":tool_utils",
1296a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "//third_party/jsoncpp",
1297a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1298a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    testonly = true
1299a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  }
130016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
130143c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein  if (skia_enable_gpu && (is_linux || is_win || is_mac)) {
130216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    executable("viewer") {
130316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources = [
130416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/GMSlide.cpp",
130516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/ImageSlide.cpp",
130616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SKPSlide.cpp",
130716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SampleSlide.cpp",
130816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/Viewer.cpp",
130916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/CommandSet.cpp",
131016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/GLWindowContext.cpp",
131116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/Window.cpp",
131216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/WindowContext.cpp",
131316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
13142dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      libs = []
131516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
13164e56a91393733359ba19967a78df26184e53854eJim Van Verth      if (is_android) {
13174e56a91393733359ba19967a78df26184e53854eJim Van Verth        sources += [
13184e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/GLWindowContext_android.cpp",
13194e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/RasterWindowContext_android.cpp",
13204e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/Window_android.cpp",
13214e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/main_android.cpp",
13224e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/surface_glue_android.cpp",
13234e56a91393733359ba19967a78df26184e53854eJim Van Verth        ]
13244e56a91393733359ba19967a78df26184e53854eJim Van Verth      } else if (is_linux) {
13252dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        sources += [
13262dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/GLWindowContext_unix.cpp",
13272dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/RasterWindowContext_unix.cpp",
13282dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/Window_unix.cpp",
13292dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/main_unix.cpp",
13302dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        ]
13312dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      } else if (is_win) {
133216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [
133316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/GLWindowContext_win.cpp",
133416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/RasterWindowContext_win.cpp",
133516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/Window_win.cpp",
133616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/main_win.cpp",
133716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ]
133843c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein      } else if (is_mac) {
133943c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        sources += [
134043c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/GLWindowContext_mac.cpp",
134143c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/RasterWindowContext_mac.cpp",
134243c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/Window_mac.cpp",
134343c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/main_mac.cpp",
134443c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        ]
134516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
134616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
134716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      if (skia_use_vulkan) {
134816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [ "tools/viewer/sk_app/VulkanWindowContext.cpp" ]
13494e56a91393733359ba19967a78df26184e53854eJim Van Verth        if (is_android) {
13504e56a91393733359ba19967a78df26184e53854eJim Van Verth          sources +=
13514e56a91393733359ba19967a78df26184e53854eJim Van Verth              [ "tools/viewer/sk_app/android/VulkanWindowContext_android.cpp" ]
13524e56a91393733359ba19967a78df26184e53854eJim Van Verth          libs += [ "android" ]
13534e56a91393733359ba19967a78df26184e53854eJim Van Verth        } else if (is_linux) {
13542dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          sources += [ "tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp" ]
13552dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          libs += [ "X11-xcb" ]
13562dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        } else if (is_win) {
135716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          sources += [ "tools/viewer/sk_app/win/VulkanWindowContext_win.cpp" ]
135816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        }
135916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
136016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
136116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      include_dirs = []
136216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      deps = [
136316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":flags",
136416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gm",
136516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gpu_tool_utils",
136616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":samples",
136716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":skia",
136816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":tool_utils",
136916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":views",
137016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "//third_party/jsoncpp",
137116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
13724e56a91393733359ba19967a78df26184e53854eJim Van Verth      if (is_android) {
13734e56a91393733359ba19967a78df26184e53854eJim Van Verth        deps += [ "//third_party/native_app_glue" ]
13744e56a91393733359ba19967a78df26184e53854eJim Van Verth      } else if (is_mac) {
137543c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        deps += [ "//third_party/libsdl" ]
137643c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein      }
137716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      testonly = true
137816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
137916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
13804f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas
13814f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas  if (skia_enable_gpu) {
13824f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas    executable("skslc") {
13834f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      sources = [
13844f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        "src/sksl/SkSLMain.cpp",
13854f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      ]
13864f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      deps = [
13874f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        ":flags",
13884f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        ":skia",
13894f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      ]
13904f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      testonly = true
13914f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas    }
13924f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas  }
139325c81d4e651b43b8217c365c87d530036529a673mtklein}
1394