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
93669a824baeadee660b32a719e6879ecb5f7fca9Mike Kleinif (!defined(is_skia_standalone)) {
103669a824baeadee660b32a719e6879ecb5f7fca9Mike Klein  is_skia_standalone = false
113669a824baeadee660b32a719e6879ecb5f7fca9Mike Klein}
123669a824baeadee660b32a719e6879ecb5f7fca9Mike Kleinis_skia_dev_build = is_skia_standalone && !is_official_build
133669a824baeadee660b32a719e6879ecb5f7fca9Mike Klein
14c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleindeclare_args() {
15c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein  skia_use_angle = false
166321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_expat = true
173cc22180561ae17a64ff0e0f9ba173eac149009emtklein  skia_use_fontconfig = is_linux
18cdedd0e061f3f50cd217638c28b27d798d930896mtklein  skia_use_freetype = is_android || is_fuchsia || is_linux
1969f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein  skia_use_gdi = false
207d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  skia_use_icu = !is_fuchsia && !is_ios && !is_win  # TODO: Windows
216321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libjpeg_turbo = true
226321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_libpng = true
23eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  skia_use_libwebp = !is_fuchsia
2438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  skia_use_lua = false
25a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein  skia_use_mesa = false
2610d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  skia_use_piex = !is_win
276321381d18f9d478598c0996c1380633003961ddmtklein  skia_use_zlib = true
281bd72ba2cb349788223e3e7304f25751c87f1f95mtklein
297d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein  skia_android_serial = ""
301bd72ba2cb349788223e3e7304f25751c87f1f95mtklein  skia_enable_android_framework_defines = false
313f375d055a9bf167122a5bbf4db9753f4b46a781Brian Osman  skia_enable_discrete_gpu = true
32a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein  skia_enable_effects = true
332fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein  skia_enable_jumper = is_skia_dev_build
3406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  skia_enable_gpu = true
3543fb7a014b785960e5892cadd0bd30c10328ae8aHal Canary  skia_enable_pdf = true
36a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas  skia_enable_spirv_validation = is_skia_dev_build && is_debug
373669a824baeadee660b32a719e6879ecb5f7fca9Mike Klein  skia_enable_tools = is_skia_dev_build
383669a824baeadee660b32a719e6879ecb5f7fca9Mike Klein  skia_enable_vulkan_debug_layers = is_skia_dev_build && is_debug
39686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel  skia_vulkan_sdk = getenv("VULKAN_SDK")
40c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
4123d73ea5b45cef6cf66ebe912725c4dd947c4767Brian Salomondeclare_args() {
42189491c2813981fd51c2ad813b45e789c27297d1Matt Sarett  skia_use_dng_sdk = !is_fuchsia && skia_use_libjpeg_turbo && skia_use_zlib
4310d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  skia_use_sfntly = skia_use_icu
4410d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein
454d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  if (is_android) {
464d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein    skia_use_vulkan = defined(ndk_api) && ndk_api >= 24
474d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  } else {
484d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein    skia_use_vulkan = skia_vulkan_sdk != ""
494d598a35cd7a9b2bbfd724e7503840e2ad8ee778Mike Klein  }
5023d73ea5b45cef6cf66ebe912725c4dd947c4767Brian Salomon}
51789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon
5238925aa37c17c0f54868852b8c3edf373400c742mtklein# Our tools require static linking (they use non-exported symbols).
5338925aa37c17c0f54868852b8c3edf373400c742mtkleinskia_enable_tools = skia_enable_tools && !is_component_build
5406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
55a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinfontmgr_android_enabled = skia_use_expat && skia_use_freetype
56a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
571211e0ca74fc4b58dd314c87e94692b4d61be9b7mtkleinskia_public_includes = [
5825c81d4e651b43b8217c365c87d530036529a673mtklein  "include/android",
59fa84d94bb0b226f81b7eaa411aabbbaec3d180cbmtklein  "include/c",
601211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/codec",
611211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/config",
621211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/core",
631211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/effects",
641211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu",
651211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/gpu/gl",
661211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/pathops",
671211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/ports",
6825c81d4e651b43b8217c365c87d530036529a673mtklein  "include/svg",
691211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils",
701211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  "include/utils/mac",
711211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein]
721211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
73c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia public API, generally provided by :skia.
74c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_public") {
751211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein  include_dirs = skia_public_includes
76ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  defines = []
77ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  if (is_component_build) {
78ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein    defines += [ "SKIA_DLL" ]
79ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein  }
80c4cbd74a38232a0e9f1cc1cc8fb826bb06c577a9Mike Klein  if (is_fuchsia || is_linux) {
815561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio    defines += [ "SK_SAMPLES_FOR_X" ]
825561e3ddbbf6c3e051075ada4a11ddc70760f03djcgregorio  }
83cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  if (skia_enable_android_framework_defines) {
84cfc4f44aebdd560c600991ad900a4f07c3958c8fMike Klein    defines += android_framework_defines
85cae1be5acc8148fc5cbadd8730ee7994e50a1a47mtklein  }
8606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (!skia_enable_gpu) {
8706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    defines += [ "SK_SUPPORT_GPU=0" ]
8806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
89c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
90c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
91c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Skia internal APIs, used by Skia itself and a few test tools.
92c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_private") {
93c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
94c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
95c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  include_dirs = [
96c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "include/private",
97c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/c",
981211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec",
99c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/core",
100c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/effects",
10125c81d4e651b43b8217c365c87d530036529a673mtklein    "src/effects/gradients",
10225c81d4e651b43b8217c365c87d530036529a673mtklein    "src/fonts",
103c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/image",
104c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images",
105c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/lazy",
106c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/opts",
107c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/pathops",
1082b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    "src/pdf",
109c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports",
110c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt",
1119e0d9ddc0ef39e239670b22e5439993c45f4ae42mtklein    "src/sksl",
112c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils",
1137a1f45f9e584fef625e764bd5d180a9c4943dcd5mtklein    "src/utils/win",
1145a8fe978c3d90a5aced700af42b9394d4264cdfcHerb Derby    "src/xml",
115c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1",
11619b91531e912283d237435d94516575b28713cbascroggo    "third_party/gif",
117c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
118150d113db56dc55b5e78f32febfb1e3b7c350611mtklein
119b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth  defines = [
120b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    "SK_GAMMA_APPLY_TO_A8",
121b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    "SK_INTERNAL",
122b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth  ]
123b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  if (is_android) {
124b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    defines += [
125b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_EXPONENT=1.4",
126b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "SK_GAMMA_CONTRAST=0.0",
127b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein    ]
128b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein  }
12988a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  if (is_official_build || is_android) {
13088a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    # TODO(bsalomon): it'd be nice to make Android normal.
13188a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein    defines += [ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0" ]
13288a7ac0b2dad4e7d581eae2da19888aec9ba1693mtklein  }
133789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  libs = []
134789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  lib_dirs = []
135789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  if (skia_use_vulkan) {
136ab563d471960b0bd5d3ed22dd604bc92521ffe01Greg Daniel    if (skia_vulkan_sdk != "" && !is_android) {
137487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      if (is_win) {
138487bfc26f93821548b4f02269aacc4843b259a23Mike Klein        include_dirs += [ "$skia_vulkan_sdk/Include/" ]
1393b5bf35720c9f751f4df10666a5228ae134bbcddBrian Salomon        lib_dirs += [
1403b5bf35720c9f751f4df10666a5228ae134bbcddBrian Salomon          "$skia_vulkan_sdk/Bin",
1413b5bf35720c9f751f4df10666a5228ae134bbcddBrian Salomon          "$skia_vulkan_sdk/Lib",
1423b5bf35720c9f751f4df10666a5228ae134bbcddBrian Salomon        ]
143487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      } else {
144686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel        include_dirs += [ "$skia_vulkan_sdk/include/" ]
145686bb21f3ed19218a85e94798fe50e240e3fac08Greg Daniel        lib_dirs += [ "$skia_vulkan_sdk/lib/" ]
146487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      }
147487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    }
148487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    if (is_win) {
149487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan-1.lib" ]
150487bfc26f93821548b4f02269aacc4843b259a23Mike Klein    } else {
151487bfc26f93821548b4f02269aacc4843b259a23Mike Klein      libs += [ "vulkan" ]
152789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon    }
153789e25ea7d0e97bfbcd0e16e8c382fbf39962eb2Brian Salomon  }
15403e058414cfc2f65d01a786024378092eed8833dBrian Salomon  if (skia_enable_gpu) {
15503e058414cfc2f65d01a786024378092eed8833dBrian Salomon    include_dirs += [ "src/gpu" ]
15603e058414cfc2f65d01a786024378092eed8833dBrian Salomon  }
15734755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman  if (skia_use_angle) {
15834755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman    defines += [ "SK_ANGLE" ]
15934755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman  }
1603f375d055a9bf167122a5bbf4db9753f4b46a781Brian Osman  if (skia_enable_discrete_gpu) {
1613f375d055a9bf167122a5bbf4db9753f4b46a781Brian Osman    defines += [ "SK_ENABLE_DISCRETE_GPU" ]
1623f375d055a9bf167122a5bbf4db9753f4b46a781Brian Osman  }
163c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
164c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
165c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein# Any code that's linked into Skia-the-library should use this config via += skia_library_configs.
166c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinconfig("skia_library") {
167c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  visibility = [ ":*" ]
168c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  defines = [ "SKIA_IMPLEMENTATION=1" ]
169c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
170c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
171c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleinskia_library_configs = [
172c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_public",
173c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_private",
174c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ":skia_library",
175c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein]
176c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1779b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein# Use for CPU-specific Skia code that needs particular compiler flags.
1789b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleintemplate("opts") {
1799b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  if (invoker.enabled) {
1809b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1819b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker, "*")
1829b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
1839b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1849b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  } else {
1859b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    # If not enabled, a phony empty target that swallows all otherwise unused variables.
1869b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    source_set(target_name) {
1879b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      forward_variables_from(invoker,
1889b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             "*",
1899b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             [
1909b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "sources",
1919b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                               "cflags",
1929b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein                             ])
1939b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    }
1949b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  }
195a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal}
196a7eaf2e7e84ff10d1ed76b5d1e039c1a2d931392anmittal
197422310ddbe4db616200a949adcac2c560685030cmtkleinis_x86 = current_cpu == "x64" || current_cpu == "x86"
198c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
1997d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("none") {
2007d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  enabled = !is_x86 && current_cpu != "arm" && current_cpu != "arm64"
201b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.none_sources
202b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
203b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
204b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
2057d6fb2c92d096ac3630e23d561a4077a974a815cmtkleinopts("armv7") {
206b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm"
207b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.armv7_sources + skia_opts.neon_sources
2087d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  cflags = []
209b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
210b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
211b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("arm64") {
212b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
213b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.arm64_sources
214b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = []
215b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
216b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
217b8b3f71c5589aaed8ae76727f3d62642a192b359anmittalopts("crc32") {
218b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  enabled = current_cpu == "arm64"
219b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.crc32_sources
220b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal  cflags = [ "-march=armv8-a+crc" ]
221b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal}
222b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal
2239b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse2") {
2249b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
225b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse2_sources
226d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
227d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE2" ]
228d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2293eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse2" ]
2303eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2319b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2324e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2339b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("ssse3") {
2349b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
235b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.ssse3_sources
236d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
237d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSSE3" ]
238d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2393eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mssse3" ]
2403eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2419b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2424e97607d9a1cef66fac16f347c5ca813ec4f9515mtklein
2439b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse41") {
2449b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
245b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse41_sources
246d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
247d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE41" ]
248d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2493eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.1" ]
2503eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2519b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
252c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
2539b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("sse42") {
2549b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
255b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.sse42_sources
256d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  if (is_win) {
257d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein    defines = [ "SK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE42" ]
258d8765e3455ff3f99cc733f01f8d10d4b0939bbd5Mike Klein  } else {
2593eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-msse4.2" ]
2603eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
2619b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein}
2629b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein
2639b8583dd1f18657c08eaab047d79288b9f2c61a7mtkleinopts("avx") {
2649b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein  enabled = is_x86
265b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_opts.avx_sources
2663eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
26717b6e487b71b7ed541d3239f194e121fbe8efd1dMike Klein    cflags = [ "/arch:AVX" ]
2683eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2693eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [ "-mavx" ]
2703eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
271c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
272c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
27378d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Kleinopts("hsw") {
27478d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  enabled = is_x86
27578d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein  sources = skia_opts.hsw_sources
2763eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  if (is_win) {
27717b6e487b71b7ed541d3239f194e121fbe8efd1dMike Klein    cflags = [ "/arch:AVX2" ]
2783eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  } else {
2793eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    cflags = [
2803eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mavx2",
2813eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi",
2823eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mbmi2",
2833eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mf16c",
2843eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein      "-mfma",
2853eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein    ]
2863eb71216d2fb70114417ae8ee9b0c5f5dc650704Mike Klein  }
28778d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein}
28878d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein
289c095df55e86e7126b0582856720bb9177b553ff1mtklein# Any feature of Skia that requires third-party code should be optional and use this template.
290457b42a6398020c3791f62f8c8637653e0d39bccmtkleintemplate("optional") {
291457b42a6398020c3791f62f8c8637653e0d39bccmtklein  if (invoker.enabled) {
292457b42a6398020c3791f62f8c8637653e0d39bccmtklein    config(target_name + "_public") {
293cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.public_defines)) {
294cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        defines = invoker.public_defines
295cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
296457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
297457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
298cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      forward_variables_from(invoker,
299cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             "*",
300cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             [
301cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "public_defines",
302cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
303f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo                               "configs_to_remove",
304cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                             ])
305457b42a6398020c3791f62f8c8637653e0d39bccmtklein      all_dependent_configs = [ ":" + target_name + "_public" ]
3069b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein      configs += skia_library_configs
307f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo      if (defined(invoker.configs_to_remove)) {
308f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo        configs -= invoker.configs_to_remove
309f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo      }
310457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
311457b42a6398020c3791f62f8c8637653e0d39bccmtklein  } else {
312457b42a6398020c3791f62f8c8637653e0d39bccmtklein    source_set(target_name) {
313457b42a6398020c3791f62f8c8637653e0d39bccmtklein      forward_variables_from(invoker,
314457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             "*",
315457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             [
316457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "public_defines",
317457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "deps",
3186ef6999017febaf0039b83c1ff4da1efe9c0e85dmtklein                               "libs",
319457b42a6398020c3791f62f8c8637653e0d39bccmtklein                               "sources",
320cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein                               "sources_when_disabled",
321f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo                               "configs_to_remove",
322457b42a6398020c3791f62f8c8637653e0d39bccmtklein                             ])
323cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      if (defined(invoker.sources_when_disabled)) {
324cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein        sources = invoker.sources_when_disabled
325cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      }
326cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein      configs += skia_library_configs
327457b42a6398020c3791f62f8c8637653e0d39bccmtklein    }
328eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein  }
329eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein}
330457b42a6398020c3791f62f8c8637653e0d39bccmtklein
331a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Kleinoptional("effects") {
332a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein  enabled = skia_enable_effects
333a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein  sources =
334a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein      skia_effects_sources + [ "src/ports/SkGlobalInitialization_default.cpp" ]
335a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein  sources_when_disabled = [ "src/ports/SkGlobalInitialization_none.cpp" ]
336a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein}
337a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein
338a45be61d6beeb923d1b3352776042d58d7b7280dmtkleinoptional("fontmgr_android") {
339a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  enabled = fontmgr_android_enabled
340a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
341a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  deps = [
342fc497343cbcbd526f77da913ae2feca0e1b1b866Ben Wagner    ":typeface_freetype",
343a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "//third_party/expat",
344a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
345a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  sources = [
346a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android.cpp",
347a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_factory.cpp",
348a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    "src/ports/SkFontMgr_android_parser.cpp",
349a45be61d6beeb923d1b3352776042d58d7b7280dmtklein  ]
350a45be61d6beeb923d1b3352776042d58d7b7280dmtklein}
351a45be61d6beeb923d1b3352776042d58d7b7280dmtklein
352d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtkleinoptional("fontmgr_custom") {
353d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  enabled = is_linux && skia_use_freetype && !skia_use_fontconfig
354d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
355d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  deps = [
356fc497343cbcbd526f77da913ae2feca0e1b1b866Ben Wagner    ":typeface_freetype",
357d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
358d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  sources = [
359d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom.cpp",
3608ab590f17fed097758b209c3b82fc1e4d802768eBen Wagner    "src/ports/SkFontMgr_custom.h",
3618ab590f17fed097758b209c3b82fc1e4d802768eBen Wagner    "src/ports/SkFontMgr_custom_directory.cpp",
362d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    "src/ports/SkFontMgr_custom_directory_factory.cpp",
3638ab590f17fed097758b209c3b82fc1e4d802768eBen Wagner    "src/ports/SkFontMgr_custom_embedded.cpp",
3648ab590f17fed097758b209c3b82fc1e4d802768eBen Wagner    "src/ports/SkFontMgr_custom_empty.cpp",
365d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein  ]
366d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein}
367d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein
3683cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("fontmgr_fontconfig") {
3693cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype && skia_use_fontconfig
3703cc22180561ae17a64ff0e0f9ba173eac149009emtklein
3713cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
372fc497343cbcbd526f77da913ae2feca0e1b1b866Ben Wagner    ":typeface_freetype",
3733cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party:fontconfig",
3743cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3753cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
3761ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    "src/ports/SkFontConfigInterface.cpp",
3773cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct.cpp",
3783cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontConfigInterface_direct_factory.cpp",
3793cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_FontConfigInterface.cpp",
3803cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig.cpp",
3813cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontMgr_fontconfig_factory.cpp",
3823cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
3833cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
3843cc22180561ae17a64ff0e0f9ba173eac149009emtklein
385cdedd0e061f3f50cd217638c28b27d798d930896mtkleinoptional("fontmgr_fuchsia") {
386cdedd0e061f3f50cd217638c28b27d798d930896mtklein  enabled = is_fuchsia && skia_use_freetype
387cdedd0e061f3f50cd217638c28b27d798d930896mtklein
388cdedd0e061f3f50cd217638c28b27d798d930896mtklein  deps = [
389fc497343cbcbd526f77da913ae2feca0e1b1b866Ben Wagner    ":typeface_freetype",
390cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
391cdedd0e061f3f50cd217638c28b27d798d930896mtklein  sources = [
392cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom.cpp",
3938ab590f17fed097758b209c3b82fc1e4d802768eBen Wagner    "src/ports/SkFontMgr_custom_empty.cpp",
394cdedd0e061f3f50cd217638c28b27d798d930896mtklein    "src/ports/SkFontMgr_custom_empty_factory.cpp",
395cdedd0e061f3f50cd217638c28b27d798d930896mtklein  ]
396cdedd0e061f3f50cd217638c28b27d798d930896mtklein}
397cdedd0e061f3f50cd217638c28b27d798d930896mtklein
39806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtkleinoptional("gpu") {
39906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  enabled = skia_enable_gpu
400e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  public_defines = []
401e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
40229b3e58befbaa0b81fb7880e6ebcfa8061e2db2eMike Klein  sources = skia_gpu_sources + skia_sksl_sources +
40329b3e58befbaa0b81fb7880e6ebcfa8061e2db2eMike Klein            [ "src/gpu/gl/GrGLDefaultInterface_native.cpp" ]
40406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
40506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  # These paths need to be absolute to match the ones produced by shared_sources.gni.
40606c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  sources -= get_path_info([
40706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
40806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                             "src/gpu/gl/GrGLDefaultInterface_none.cpp",
40906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           ],
41006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein                           "abspath")
411703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  libs = []
41206c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  if (is_android) {
41306c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp" ]
41406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_linux) {
41506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp" ]
416a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein    libs += [
417a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein      "GL",
418a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein      "GLU",
419a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein    ]
42006c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else if (is_mac) {
42106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp" ]
422130a118cc68f8f9973e9572356011de378463feaChinmay Garde  } else if (is_ios) {
423130a118cc68f8f9973e9572356011de378463feaChinmay Garde    sources += [ "src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp" ]
424703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein  } else if (is_win) {
425703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    sources += [ "src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp" ]
426703cf5aa20aaf01476f99299ca70a7e8b7aab4c5Mike Klein    libs += [ "OpenGL32.lib" ]
42706c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  } else {
42806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/gpu/gl/GrGLCreateNativeInterface_none.cpp" ]
42906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein  }
430e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein
431e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  if (skia_use_vulkan) {
432e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    public_defines += [ "SK_VULKAN" ]
433e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein    sources += skia_vk_sources
434e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    if (skia_enable_vulkan_debug_layers) {
435e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel      public_defines += [ "SK_ENABLE_VK_LAYERS" ]
436e4a9bd79c676346ada8f4c35fa3a7fd99dfc5544egdaniel    }
437e9fb3d553cbff3b86e4aae751c75b742d425c7afmtklein  }
438a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas  if (skia_enable_spirv_validation) {
439a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas    deps = [
440a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas      "//third_party/spirv-tools",
441a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas    ]
442a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas    public_defines += [ "SK_ENABLE_SPIRV_VALIDATION" ]
443a6ae1f7cda072ff814a838e2d9013a017552cc35Ethan Nicholas  }
44406c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein}
44506c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein
4466321381d18f9d478598c0996c1380633003961ddmtkleinoptional("jpeg") {
4476321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libjpeg_turbo
4486321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
4496321381d18f9d478598c0996c1380633003961ddmtklein
4506321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4516321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libjpeg-turbo:libjpeg",
4526321381d18f9d478598c0996c1380633003961ddmtklein  ]
4536321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4546321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegCodec.cpp",
4556321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegDecoderMgr.cpp",
4566321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkJpegUtility.cpp",
4576321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGImageEncoder.cpp",
4586321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkJPEGWriteUtility.cpp",
4596321381d18f9d478598c0996c1380633003961ddmtklein  ]
4606321381d18f9d478598c0996c1380633003961ddmtklein}
4616321381d18f9d478598c0996c1380633003961ddmtklein
4626321381d18f9d478598c0996c1380633003961ddmtkleinoptional("pdf") {
46343fb7a014b785960e5892cadd0bd30c10328ae8aHal Canary  enabled = skia_use_zlib && skia_enable_pdf
46443fb7a014b785960e5892cadd0bd30c10328ae8aHal Canary  public_defines = [ "SK_SUPPORT_PDF" ]
4656321381d18f9d478598c0996c1380633003961ddmtklein
4666321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4676321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/zlib",
4686321381d18f9d478598c0996c1380633003961ddmtklein  ]
469b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources = skia_pdf_sources
470cd01b03df8acefbe0e8a37fa10b97d8a6fc0b992mtklein  sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
4716321381d18f9d478598c0996c1380633003961ddmtklein
4726321381d18f9d478598c0996c1380633003961ddmtklein  if (skia_use_sfntly) {
4736321381d18f9d478598c0996c1380633003961ddmtklein    deps += [ "//third_party/sfntly" ]
47443fb7a014b785960e5892cadd0bd30c10328ae8aHal Canary    public_defines += [ "SK_PDF_USE_SFNTLY" ]
4756321381d18f9d478598c0996c1380633003961ddmtklein  }
4766321381d18f9d478598c0996c1380633003961ddmtklein}
4776321381d18f9d478598c0996c1380633003961ddmtklein
4786321381d18f9d478598c0996c1380633003961ddmtkleinoptional("png") {
4796321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_libpng
4806321381d18f9d478598c0996c1380633003961ddmtklein  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
4816321381d18f9d478598c0996c1380633003961ddmtklein
4826321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
4836321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/libpng",
4846321381d18f9d478598c0996c1380633003961ddmtklein  ]
4856321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
4866321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkIcoCodec.cpp",
4876321381d18f9d478598c0996c1380633003961ddmtklein    "src/codec/SkPngCodec.cpp",
4886321381d18f9d478598c0996c1380633003961ddmtklein    "src/images/SkPNGImageEncoder.cpp",
4896321381d18f9d478598c0996c1380633003961ddmtklein  ]
4906321381d18f9d478598c0996c1380633003961ddmtklein}
4916321381d18f9d478598c0996c1380633003961ddmtklein
492f84ad646f94ee959eb17d05f072935edd1ad14fdscroggooptional("raw") {
49310d665d000cfdce693b7ca088fb2c61ed54bcdfbMike Klein  enabled = skia_use_dng_sdk && skia_use_libjpeg_turbo && skia_use_piex
494f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  public_defines = [ "SK_CODEC_DECODES_RAW" ]
495f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
496f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  deps = [
497f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/dng_sdk",
498f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/libjpeg-turbo:libjpeg",
499f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "//third_party/piex",
500f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  ]
501f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
502f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  # SkRawCodec catches any exceptions thrown by dng_sdk, insulating the rest of
503f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  # Skia.
504f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  configs_to_remove = [ "//gn:no_exceptions" ]
505f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
506f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  sources = [
507f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "src/codec/SkRawAdapterCodec.cpp",
508f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    "src/codec/SkRawCodec.cpp",
509f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo  ]
510f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo}
511f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo
5122fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Kleinoptional("jumper") {
5132fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein  enabled = skia_enable_jumper
5142fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein  public_defines = [ "SK_JUMPER" ]
5152fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein  sources = [
5162fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein    "src/jumper/SkJumper.cpp",
5172fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein    "src/jumper/SkJumper_generated.cpp",
5182fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein    "src/jumper/SkJumper_stages.cpp",
5192fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein  ]
5202fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein}
5212fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein
5223cc22180561ae17a64ff0e0f9ba173eac149009emtkleinoptional("typeface_freetype") {
5233cc22180561ae17a64ff0e0f9ba173eac149009emtklein  enabled = skia_use_freetype
5243cc22180561ae17a64ff0e0f9ba173eac149009emtklein
5253cc22180561ae17a64ff0e0f9ba173eac149009emtklein  deps = [
5263cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "//third_party/freetype2",
5273cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
5283cc22180561ae17a64ff0e0f9ba173eac149009emtklein  sources = [
5293cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType.cpp",
5303cc22180561ae17a64ff0e0f9ba173eac149009emtklein    "src/ports/SkFontHost_FreeType_common.cpp",
5313cc22180561ae17a64ff0e0f9ba173eac149009emtklein  ]
5323cc22180561ae17a64ff0e0f9ba173eac149009emtklein}
5333cc22180561ae17a64ff0e0f9ba173eac149009emtklein
534457b42a6398020c3791f62f8c8637653e0d39bccmtkleinoptional("webp") {
535457b42a6398020c3791f62f8c8637653e0d39bccmtklein  enabled = skia_use_libwebp
536457b42a6398020c3791f62f8c8637653e0d39bccmtklein  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
537457b42a6398020c3791f62f8c8637653e0d39bccmtklein
538457b42a6398020c3791f62f8c8637653e0d39bccmtklein  deps = [
539457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "//third_party/libwebp",
540457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
541457b42a6398020c3791f62f8c8637653e0d39bccmtklein  sources = [
542457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpAdapterCodec.cpp",
543457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/codec/SkWebpCodec.cpp",
544457b42a6398020c3791f62f8c8637653e0d39bccmtklein    "src/images/SkWEBPImageEncoder.cpp",
545457b42a6398020c3791f62f8c8637653e0d39bccmtklein  ]
546457b42a6398020c3791f62f8c8637653e0d39bccmtklein}
547eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein
5486321381d18f9d478598c0996c1380633003961ddmtkleinoptional("xml") {
5496321381d18f9d478598c0996c1380633003961ddmtklein  enabled = skia_use_expat
550442fff958c911bbc354a56003e3a8d75805c45f6Florin Malita  public_defines = [ "SK_XML" ]
5516321381d18f9d478598c0996c1380633003961ddmtklein
5526321381d18f9d478598c0996c1380633003961ddmtklein  deps = [
5536321381d18f9d478598c0996c1380633003961ddmtklein    "//third_party/expat",
5546321381d18f9d478598c0996c1380633003961ddmtklein  ]
5556321381d18f9d478598c0996c1380633003961ddmtklein  sources = [
556bd41bcc4d7e01bedd416c05f11b7b1ab10258a77Mike Klein    "src/svg/SkSVGCanvas.cpp",
557bd41bcc4d7e01bedd416c05f11b7b1ab10258a77Mike Klein    "src/svg/SkSVGDevice.cpp",
5586321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkDOM.cpp",
5596321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLParser.cpp",
5606321381d18f9d478598c0996c1380633003961ddmtklein    "src/xml/SkXMLWriter.cpp",
5616321381d18f9d478598c0996c1380633003961ddmtklein  ]
5626321381d18f9d478598c0996c1380633003961ddmtklein}
5636321381d18f9d478598c0996c1380633003961ddmtklein
564c04ff4788cb425db6d9bec0bde4edb14aec97f16mtkleincomponent("skia") {
565c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  public_configs = [ ":skia_public" ]
566c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  configs += skia_library_configs
567c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
568c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  deps = [
569b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":arm64",
570b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":armv7",
5719b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":avx",
572b8b3f71c5589aaed8ae76727f3d62642a192b359anmittal    ":crc32",
573a04bb45b23e201f317e6bddd41b3241df9f3ac2cMike Klein    ":effects",
574a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    ":fontmgr_android",
575d2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77mtklein    ":fontmgr_custom",
5763cc22180561ae17a64ff0e0f9ba173eac149009emtklein    ":fontmgr_fontconfig",
577cdedd0e061f3f50cd217638c28b27d798d930896mtklein    ":fontmgr_fuchsia",
57806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    ":gpu",
57978d5a3bac5cbde50cd12d8b9ab6dd269324b5272Mike Klein    ":hsw",
5806321381d18f9d478598c0996c1380633003961ddmtklein    ":jpeg",
5812fcd17087e4e299a734f4f41fe94cd039adc2b64Mike Klein    ":jumper",
5829b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":none",
5836321381d18f9d478598c0996c1380633003961ddmtklein    ":pdf",
5846321381d18f9d478598c0996c1380633003961ddmtklein    ":png",
585f84ad646f94ee959eb17d05f072935edd1ad14fdscroggo    ":raw",
5869b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse2",
5879b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse41",
5889b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":sse42",
5899b8583dd1f18657c08eaab047d79288b9f2c61a7mtklein    ":ssse3",
590eb3c425f1b33836e116e8ed4eeb40e0c6d8dffb6mtklein    ":webp",
5916321381d18f9d478598c0996c1380633003961ddmtklein    ":xml",
592c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
593c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
59443f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # This file (and all GN files in Skia) are designed to work with an
59543f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # empty sources assignment filter; we handle all that explicitly.
59643f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  # We clear the filter here for clients who may have set up a global filter.
59743f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde  set_sources_assignment_filter([])
59843f115cef45f4471ad4db30503b96530c7ad44a9Chinmay Garde
599c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources = []
600b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_core_sources
601b944728b93a1623d73be31413a6798e0b7dddc16brettw  sources += skia_utils_sources
6026ad3d2fa38589fafd8b1c203996a402bd8b24362Hal Canary  sources += skia_xps_sources
603c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  sources += [
60425c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionCodec.cpp",
60525c81d4e651b43b8217c365c87d530036529a673mtklein    "src/android/SkBitmapRegionDecoder.cpp",
60625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkAndroidCodec.cpp",
6071211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpCodec.cpp",
6081211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpMaskCodec.cpp",
6091211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpRLECodec.cpp",
6101211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkBmpStandardCodec.cpp",
6111211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodec.cpp",
6121211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkCodecImageGenerator.cpp",
61319b91531e912283d237435d94516575b28713cbascroggo    "src/codec/SkGifCodec.cpp",
6141211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMaskSwizzler.cpp",
6151211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkMasks.cpp",
61625c81d4e651b43b8217c365c87d530036529a673mtklein    "src/codec/SkSampledCodec.cpp",
6171211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSampler.cpp",
61819b91531e912283d237435d94516575b28713cbascroggo    "src/codec/SkStreamBuffer.cpp",
6191211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkSwizzler.cpp",
6201211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/codec/SkWbmpCodec.cpp",
621c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/images/SkImageEncoder.cpp",
622c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkDiscardableMemory_none.cpp",
6231211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein    "src/ports/SkImageGenerator_skia.cpp",
624c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkMemory_malloc.cpp",
625c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/ports/SkOSFile_stdio.cpp",
626c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTTable_name.cpp",
627c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/sfnt/SkOTUtils.cpp",
628c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "src/utils/mac/SkStream_mac.cpp",
629c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    "third_party/etc1/etc1.cpp",
6303d3a65c488162ef1db0b35adf3235d012b04c88dscroggo    "third_party/gif/SkGifImageReader.cpp",
631c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  ]
632b944728b93a1623d73be31413a6798e0b7dddc16brettw
6337d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  libs = []
6347d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
635c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_win) {
636c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
637ae7e671f86e9171c98a4b12bd0a0f875c8d6604fMike Klein      "src/fonts/SkFontMgr_indirect.cpp",
638c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkDebug_win.cpp",
639c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_win.cpp",
640c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontMgr_win_dw.cpp",
641c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_WIC.cpp",
642c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorWIC.cpp",
643c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_win.cpp",
644605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_win.cpp",
645c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkScalerContext_win_dw.cpp",
646c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_win.cpp",
647c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTypeface_win_dw.cpp",
648c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
64969f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    if (skia_use_gdi) {
65069f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_gdi_factory.cpp" ]
65169f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      libs += [
65269f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Gdi32.lib",
65369f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein        "Usp10.lib",
65469f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      ]
65569f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    } else {
65669f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein      sources += [ "src/ports/SkFontMgr_win_dw_factory.cpp" ]
65769f6ed40eb8d363644a6b53f5fcbbf88baee372fMike Klein    }
658b9be979eaecebcb5350efae46e6555188e7c3a78mtklein    sources -=
659b9be979eaecebcb5350efae46e6555188e7c3a78mtklein        [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
6604b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    libs += [
6614b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "FontSub.lib",
6624b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "Ole32.lib",
6634b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "OleAut32.lib",
6644b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      "User32.lib",
6654b167fc8503d8b4887346c5054fc2cc93428846dMike Klein    ]
666c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  } else {
667c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
668c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkOSFile_posix.cpp",
669605d95289379a07aad50b38ca6badbee45813d56mtklein      "src/ports/SkOSLibrary_posix.cpp",
670c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkTLS_pthread.cpp",
671c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
672c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
673c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
6747d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  if (is_android) {
6751c471874c52cfb811fce8a5beed447042319f515Mike Klein    deps += [ "//third_party/expat" ]
676e459afd6ce2c2ccbad500dc2e77e0ac287af90ebMike Klein    if (defined(ndk) && ndk != "") {
6771c471874c52cfb811fce8a5beed447042319f515Mike Klein      deps += [ "//third_party/cpu-features" ]
6781c471874c52cfb811fce8a5beed447042319f515Mike Klein    }
67906c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_android.cpp" ]
6807d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    libs += [
6817d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "EGL",
6827d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "GLESv2",
6837d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "log",
6847d6fb2c92d096ac3630e23d561a4077a974a815cmtklein    ]
6857d6fb2c92d096ac3630e23d561a4077a974a815cmtklein  }
6867d6fb2c92d096ac3630e23d561a4077a974a815cmtklein
687c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_linux) {
68806c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
689c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
690c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
691c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  if (is_mac) {
692c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    sources += [
6937d6fb2c92d096ac3630e23d561a4077a974a815cmtklein      "src/ports/SkDebug_stdio.cpp",
694c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkFontHost_mac.cpp",
695c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageEncoder_CG.cpp",
696c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein      "src/ports/SkImageGeneratorCG.cpp",
697c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein    ]
69809e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    libs += [
69909e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "ApplicationServices.framework",
70009e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein      "OpenGL.framework",
70109e61f72334c6fc4840560b56ff44761d7bf0e5dmtklein    ]
702c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein  }
7036fc8ff024bd823f350400a86e7b9daa1c25f618eabarth
7047d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (is_ios) {
7057d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    sources += [
7067d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkDebug_stdio.cpp",
7077d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkFontHost_mac.cpp",
7087d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkImageEncoder_CG.cpp",
7097d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "src/ports/SkImageGeneratorCG.cpp",
7107d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    ]
7117d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    libs += [
7127d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreFoundation.framework",
7137d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreGraphics.framework",
7147d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "CoreText.framework",
7157d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "ImageIO.framework",
7167d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      "MobileCoreServices.framework",
7177d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    ]
7187d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  }
7197d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein
7206fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  if (is_fuchsia) {
72106c35c0953b4884c18d1f2ce32c4c5045f86fa81mtklein    sources += [ "src/ports/SkDebug_stdio.cpp" ]
7226fc8ff024bd823f350400a86e7b9daa1c25f618eabarth  }
723c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein}
724c04ff4788cb425db6d9bec0bde4edb14aec97f16mtklein
725c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein# Targets guarded by skia_enable_tools may use //third_party freely.
726c36dedf613b09cc5e2286b2f0602c73722c85958Mike Kleinif (skia_enable_tools) {
727308b5ac681d5423ddafd208e3d90179e6dc9502eMike Klein  # Used by gn_to_bp.py to list our public include dirs.
728308b5ac681d5423ddafd208e3d90179e6dc9502eMike Klein  source_set("public") {
729308b5ac681d5423ddafd208e3d90179e6dc9502eMike Klein    configs += [ ":skia_public" ]
730308b5ac681d5423ddafd208e3d90179e6dc9502eMike Klein  }
731308b5ac681d5423ddafd208e3d90179e6dc9502eMike Klein
732c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  config("skia.h_config") {
733c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    include_dirs = [ "$target_gen_dir" ]
734c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  }
735c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  action("skia.h") {
736c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    public_configs = [ ":skia.h_config" ]
737c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    skia_h = "$target_gen_dir/skia.h"
738c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    script = "gn/find_headers.py"
739c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    args = [ rebase_path(skia_h, root_build_dir) ] +
740c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein           rebase_path(skia_public_includes)
741c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    depfile = "$skia_h.deps"
742c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    outputs = [
743c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      skia_h,
744c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    ]
745c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  }
7461211e0ca74fc4b58dd314c87e94692b4d61be9b7mtklein
747c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  if (skia_enable_gpu && target_cpu == "x64") {
748c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    # Our bots only have 64-bit libOSMesa installed.
749c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    # TODO: worth fixing?
750c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    executable("fiddle") {
751c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      libs = []
752c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      if (is_linux) {
753c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        libs += [ "OSMesa" ]
754c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      }
75556d5669095feca663e9e05f4621146abeee626ecmtklein
756c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      sources = [
757c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        "tools/fiddle/draw.cpp",
758c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        "tools/fiddle/fiddle_main.cpp",
759c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      ]
760c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      deps = [
761c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        ":skia",
762c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        ":skia.h",
763c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      ]
764c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    }
7651fbdf98d0e9a9e5e720c77fd896a0655074e31cbmtklein  }
76625c81d4e651b43b8217c365c87d530036529a673mtklein
767c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein  if (skia_enable_gpu) {
768c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    source_set("public_headers_warnings_check") {
769c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      sources = [
770c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        "tools/public_headers_warnings_check.cpp",
771c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      ]
772c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      configs -= [ "//gn:warnings_except_public_headers" ]
773c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      deps = [
774c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        ":skia",
775c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein        ":skia.h",
776c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein      ]
777c36dedf613b09cc5e2286b2f0602c73722c85958Mike Klein    }
77850500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein  }
77950500ad470af3d82c68144fec7e55c9cdffb5d98Mike Klein
780c095df55e86e7126b0582856720bb9177b553ff1mtklein  template("test_lib") {
781c095df55e86e7126b0582856720bb9177b553ff1mtklein    config(target_name + "_config") {
782c095df55e86e7126b0582856720bb9177b553ff1mtklein      include_dirs = invoker.public_include_dirs
783a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      if (defined(invoker.public_defines)) {
784a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein        defines = invoker.public_defines
785a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein      }
786c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
787c095df55e86e7126b0582856720bb9177b553ff1mtklein    source_set(target_name) {
788c095df55e86e7126b0582856720bb9177b553ff1mtklein      forward_variables_from(invoker, "*", [ "public_include_dirs" ])
789c095df55e86e7126b0582856720bb9177b553ff1mtklein      public_configs = [
790c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":" + target_name + "_config",
791c095df55e86e7126b0582856720bb9177b553ff1mtklein        ":skia_private",
792c095df55e86e7126b0582856720bb9177b553ff1mtklein      ]
793c095df55e86e7126b0582856720bb9177b553ff1mtklein
794c095df55e86e7126b0582856720bb9177b553ff1mtklein      if (!defined(deps)) {
795c095df55e86e7126b0582856720bb9177b553ff1mtklein        deps = []
796c095df55e86e7126b0582856720bb9177b553ff1mtklein      }
797c095df55e86e7126b0582856720bb9177b553ff1mtklein      deps += [ ":skia" ]
798c095df55e86e7126b0582856720bb9177b553ff1mtklein      testonly = true
799c095df55e86e7126b0582856720bb9177b553ff1mtklein    }
80025c81d4e651b43b8217c365c87d530036529a673mtklein  }
801c095df55e86e7126b0582856720bb9177b553ff1mtklein
802e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  template("test_app") {
803e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    if (defined(invoker.is_shared_library) && invoker.is_shared_library) {
804e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein      shared_library("lib" + target_name) {
805e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein        forward_variables_from(invoker, "*", [ "is_shared_library" ])
806e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein        testonly = true
807e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein      }
808e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    } else {
8097d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein      _executable = target_name
8107d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein      executable(_executable) {
811e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein        forward_variables_from(invoker, "*", [ "is_shared_library" ])
812e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein        testonly = true
813e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein      }
814e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    }
8157d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein    if (is_android && skia_android_serial != "" && defined(_executable)) {
8167d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein      action("push_" + target_name) {
8177d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        script = "gn/push_to_android.py"
8187d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        deps = [
8197d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein          ":" + _executable,
8207d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        ]
8217d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        _stamp = "$target_gen_dir/$_executable.pushed_$skia_android_serial"
8227d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        outputs = [
8237d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein          _stamp,
8247d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        ]
8257d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        args = [
8267d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein          rebase_path("$root_build_dir/$_executable"),
8277d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein          skia_android_serial,
8287d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein          rebase_path(_stamp),
8297d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        ]
8307d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein        testonly = true
8317d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein      }
8327d92103f9ebed04c54f4ec8636f98dc0e4fc3056Mike Klein    }
833e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  }
834e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein
835c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gpu_tool_utils") {
83638925aa37c17c0f54868852b8c3edf373400c742mtklein    public_include_dirs = []
83738925aa37c17c0f54868852b8c3edf373400c742mtklein    if (skia_enable_gpu) {
83838925aa37c17c0f54868852b8c3edf373400c742mtklein      public_defines = []
83938925aa37c17c0f54868852b8c3edf373400c742mtklein      public_include_dirs += [ "tools/gpu" ]
840d68f9b00389bf676b171f250e684486cb2fbd404mtklein
841d68f9b00389bf676b171f250e684486cb2fbd404mtklein      deps = []
84238925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
84338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrContextFactory.cpp",
84438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/GrTest.cpp",
84538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/TestContext.cpp",
84638925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/GLTestContext.cpp",
847605d95289379a07aad50b38ca6badbee45813d56mtklein        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
84838925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/DebugGLTestContext.cpp",
84938925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrBufferObj.cpp",
85038925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrFrameBufferObj.cpp",
85138925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrProgramObj.cpp",
85238925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrShaderObj.cpp",
85338925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureObj.cpp",
85438925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/debug/GrTextureUnitObj.cpp",
85538925aa37c17c0f54868852b8c3edf373400c742mtklein        "tools/gpu/gl/null/NullGLTestContext.cpp",
85638925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
85738925aa37c17c0f54868852b8c3edf373400c742mtklein      libs = []
85838925aa37c17c0f54868852b8c3edf373400c742mtklein
85938925aa37c17c0f54868852b8c3edf373400c742mtklein      if (is_android) {
86038925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp" ]
8617d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      } else if (is_ios) {
8627d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        sources += [ "tools/gpu/gl/iOS/CreatePlatformGLTestContext_iOS.mm" ]
8637d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        libs += [ "OpenGLES.framework" ]
86438925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_linux) {
86538925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
866a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein        libs += [ "X11" ]
86738925aa37c17c0f54868852b8c3edf373400c742mtklein      } else if (is_mac) {
86838925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
8694b167fc8503d8b4887346c5054fc2cc93428846dMike Klein      } else if (is_win) {
8704b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        sources += [ "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp" ]
8714b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        libs += [
8724b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "Gdi32.lib",
8734b167fc8503d8b4887346c5054fc2cc93428846dMike Klein          "OpenGL32.lib",
8744b167fc8503d8b4887346c5054fc2cc93428846dMike Klein        ]
87538925aa37c17c0f54868852b8c3edf373400c742mtklein      }
876238b820369c4b556c2e7c8277855e6950de3d9ebBrian Salomon
877c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      if (skia_use_angle) {
878c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        deps += [ "//third_party/angle2" ]
879c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        sources += [ "tools/gpu/gl/angle/GLTestContext_angle.cpp" ]
880c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      }
88138925aa37c17c0f54868852b8c3edf373400c742mtklein      if (skia_use_mesa) {
88238925aa37c17c0f54868852b8c3edf373400c742mtklein        public_defines += [ "SK_MESA" ]
88338925aa37c17c0f54868852b8c3edf373400c742mtklein        sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
88438925aa37c17c0f54868852b8c3edf373400c742mtklein        libs += [ "OSMesa" ]
88538925aa37c17c0f54868852b8c3edf373400c742mtklein      }
886d68f9b00389bf676b171f250e684486cb2fbd404mtklein      if (skia_use_vulkan) {
887d68f9b00389bf676b171f250e684486cb2fbd404mtklein        sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
888d68f9b00389bf676b171f250e684486cb2fbd404mtklein      }
889a627b5c3b9004118621bfa99f3952465adfa4ad6mtklein    }
89025c81d4e651b43b8217c365c87d530036529a673mtklein  }
89125c81d4e651b43b8217c365c87d530036529a673mtklein
892c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("flags") {
893c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tools/flags" ]
894c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
895c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommandLineFlags.cpp",
896046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
897046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
898046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  test_lib("common_flags") {
899046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    public_include_dirs = [ "tools/flags" ]
900046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
901c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlags.cpp",
902c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/flags/SkCommonFlagsConfig.cpp",
903c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
904c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
905046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
906c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
907c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
90825c81d4e651b43b8217c365c87d530036529a673mtklein  }
90925c81d4e651b43b8217c365c87d530036529a673mtklein
910c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tool_utils") {
911c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [
912c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools",
913c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger",
914c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer",
915c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
916c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
917c095df55e86e7126b0582856720bb9177b553ff1mtklein      "src/utils/SkMultiPictureDocumentReader.cpp",  # TODO(halcanary): move to tools?
918b37c034ac8ad590c70ceac9811ba42a0bf34642cmtklein      "tools/AndroidSkDebugToStdOut.cpp",
919c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/CrashHandler.cpp",
9200590fa549d09bd1b6f26c0d5e470f35efe430d65mtklein      "tools/LsanSuppressions.cpp",
921c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ProcStats.cpp",
922c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/Resources.cpp",
923c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/ThermalManager.cpp",
924c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/UrlDataManager.cpp",
925c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDebugCanvas.cpp",
926c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkDrawCommand.cpp",
927c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkJsonWriteBuffer.cpp",
928c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/debugger/SkObjectParser.cpp",
929c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/picture_utils.cpp",
930c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/random_parse_path.cpp",
931c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils.cpp",
932c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/sk_tool_utils_font.cpp",
933c095df55e86e7126b0582856720bb9177b553ff1mtklein      "tools/timer/Timer.cpp",
934c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
935adacaef799455013bf00b85a43237ac8d9471adeMike Klein    libs = []
936adacaef799455013bf00b85a43237ac8d9471adeMike Klein    if (is_ios) {
937adacaef799455013bf00b85a43237ac8d9471adeMike Klein      sources += [ "tools/ios_utils.m" ]
938adacaef799455013bf00b85a43237ac8d9471adeMike Klein      libs += [ "Foundation.framework" ]
939adacaef799455013bf00b85a43237ac8d9471adeMike Klein    }
940c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
941046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
942c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
943c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
944c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
945c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_deps = [
946c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/jsoncpp",
947c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
948c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
94925c81d4e651b43b8217c365c87d530036529a673mtklein
9506e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/gm.gni")
951c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("gm") {
952c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "gm" ]
953c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = gm_sources
954c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
95519b91531e912283d237435d94516575b28713cbascroggo      ":flags",
956c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
957c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
958c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
959c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
960c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
96125c81d4e651b43b8217c365c87d530036529a673mtklein
9626e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/tests.gni")
963c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("tests") {
964c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "tests" ]
9656e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = tests_sources + pathops_tests_sources
966a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    if (!fontmgr_android_enabled) {
9676e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein      sources -= [ "//tests/FontMgrAndroidParserTest.cpp" ]
968a45be61d6beeb923d1b3352776042d58d7b7280dmtklein    }
969c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
9706cf896d7ce03b87b3a5595bc66caf0a34c993755fmalita      ":experimental_svg_model",
971c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
972c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
973c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
974c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/libpng",
975c095df55e86e7126b0582856720bb9177b553ff1mtklein      "//third_party/zlib",
976c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
977d63442d87c6d35af4b2771a30a80e67d6aa92b68Mike Klein    public_deps = [
978d63442d87c6d35af4b2771a30a80e67d6aa92b68Mike Klein      ":gpu_tool_utils",  # Test.h #includes headers from this target.
979d63442d87c6d35af4b2771a30a80e67d6aa92b68Mike Klein    ]
980c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
9812f3416d2befb9480b7faf461530fd9044f77e6cdmtklein
9826e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/bench.gni")
983c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("bench") {
984c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "bench" ]
985c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = bench_sources
986c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
987c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":flags",
988c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gm",
989c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":gpu_tool_utils",
990c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
991c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":tool_utils",
992c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
993c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
9942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
995c095df55e86e7126b0582856720bb9177b553ff1mtklein  test_lib("experimental_svg_model") {
996c095df55e86e7126b0582856720bb9177b553ff1mtklein    public_include_dirs = [ "experimental/svg/model" ]
997c095df55e86e7126b0582856720bb9177b553ff1mtklein    sources = [
998c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttribute.cpp",
999c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGAttributeParser.cpp",
1000c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGCircle.cpp",
1001ce8840e3842f3a702c5d7bf440ff730bdfaf8e70Florin Malita      "experimental/svg/model/SkSVGClipPath.cpp",
1002c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGContainer.cpp",
1003c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGDOM.cpp",
1004c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGEllipse.cpp",
1005c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGLine.cpp",
100628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGLinearGradient.cpp",
1007c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGNode.cpp",
1008c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPath.cpp",
1009c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGPoly.cpp",
1010c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRect.cpp",
1011c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGRenderContext.cpp",
1012c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGSVG.cpp",
1013c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGShape.cpp",
101428d5b72d86fdfae20dc47ba548748f119c7273e3fmalita      "experimental/svg/model/SkSVGStop.cpp",
1015c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGTransformableNode.cpp",
1016c095df55e86e7126b0582856720bb9177b553ff1mtklein      "experimental/svg/model/SkSVGValue.cpp",
1017c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
1018c095df55e86e7126b0582856720bb9177b553ff1mtklein    deps = [
1019c095df55e86e7126b0582856720bb9177b553ff1mtklein      ":skia",
1020c095df55e86e7126b0582856720bb9177b553ff1mtklein    ]
1021c095df55e86e7126b0582856720bb9177b553ff1mtklein  }
1022a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita
102316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("views") {
102416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "include/views" ]
102516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    sources = [
102616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEvent.cpp",
102716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkEventSink.cpp",
102816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkOSMenu.cpp",
102916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTagList.cpp",
103016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkTouchGesture.cpp",
103116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkView.cpp",
103216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      "src/views/SkViewPriv.cpp",
103316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
103416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    libs = []
103534755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman    deps = []
103616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    if (!is_android) {
103716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/SkWindow.cpp" ]
103816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
10394e56a91393733359ba19967a78df26184e53854eJim Van Verth    if (is_linux) {
10402dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      public_include_dirs += [ "src/views/unix" ]
10412dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      sources += [
10422dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/SkOSWindow_Unix.cpp",
10432dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        "src/views/unix/keysym2ucs.c",
10442dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      ]
1045a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein      libs += [
1046a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein        "GL",
1047a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein        "X11",
1048a979a1d39dae9944a25d81fa6740d4eced9bbdabMike Klein      ]
104916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_mac) {
105016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [
105116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkEventNotifier.mm",
105216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkNSView.mm",
105316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkOSWindow_Mac.mm",
105416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "src/views/mac/SkTextFieldCell.m",
105516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
105616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      libs += [
105716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "QuartzCore.framework",
105816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Cocoa.framework",
105916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "Foundation.framework",
106016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
106116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    } else if (is_win) {
106216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources += [ "src/views/win/SkOSWindow_win.cpp" ]
106316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    }
106434755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman    if (skia_use_angle) {
106534755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman      deps += [ "//third_party/angle2" ]
106634755e2cbd55497c9b86bf5ad9eb0668f1b6f6bbBrian Osman    }
106716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
106816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
106938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  if (skia_use_lua) {
107038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    test_lib("lua") {
107138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      public_include_dirs = []
107238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
107338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "src/utils/SkLua.cpp",
107438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "src/utils/SkLuaCanvas.cpp",
107538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
107638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
107738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
107838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
107938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
108038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
1081e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("lua_app") {
108238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
108338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "tools/lua/lua_app.cpp",
108438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
108538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
108638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
108738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":skia",
108838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
108938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
109038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
109138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
1092e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("lua_pictures") {
109338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources = [
109438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "tools/lua/lua_pictures.cpp",
109538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
109638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps = [
109738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":flags",
109838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
109938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":skia",
110038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":tool_utils",
110138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
110238af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
110338af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
110438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein  }
110538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
11066e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein  import("gn/samples.gni")
110716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  test_lib("samples") {
110816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    public_include_dirs = [ "samplecode" ]
11096e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    include_dirs = [ "experimental" ]
11106e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = samples_sources + [
11116e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp",
11126e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3.cpp",
11136e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3_A.cpp",
11146e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein                "experimental/SkSetPoly3To3_D.cpp",
11156e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein              ]
111616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    deps = [
111716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":experimental_svg_model",
11188c67909e0443d0419edbb3743fed57df063850f6csmartdalton      ":flags",
11196e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein      ":gm",
112016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":tool_utils",
112116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":views",
112216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ":xml",
112316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman    ]
112438af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein
112538af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    if (skia_use_lua) {
112638af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      sources += [ "samplecode/SampleLua.cpp" ]
112738af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      deps += [
112838af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        ":lua",
112938af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein        "//third_party/lua",
113038af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein      ]
113138af9438d7b7fa838aff2931d9afb4dd4a82549dMike Klein    }
113216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
113316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
1134e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("dm") {
11352b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
11362b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DM.cpp",
11372b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMJsonWriter.cpp",
11382b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "dm/DMSrcSink.cpp",
11392b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
11402b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    include_dirs = [ "tests" ]
11412b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
1142046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
1143a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491fmalita      ":experimental_svg_model",
11442b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
11452b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
11462b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
11472b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
11482f3416d2befb9480b7faf461530fd9044f77e6cdmtklein      ":tests",
11492b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
11502b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
11512b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/libpng",
11522b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
11532b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
11542b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
115506432b26c6bf25793a65906e1f8e97e691a70351Mike Klein  test_app("ok") {
115606432b26c6bf25793a65906e1f8e97e691a70351Mike Klein    sources = [
115706432b26c6bf25793a65906e1f8e97e691a70351Mike Klein      "tools/ok.cpp",
11587ac04838c58eebbac477895fafdd4b0421727b9eMike Klein      "tools/ok_dsts.cpp",
11597ac04838c58eebbac477895fafdd4b0421727b9eMike Klein      "tools/ok_srcs.cpp",
1160d63442d87c6d35af4b2771a30a80e67d6aa92b68Mike Klein      "tools/ok_test.cpp",
1161f5d1a5567e3df04c288dc6856a0b41a6a6be0a2dMike Klein      "tools/ok_vias.cpp",
116206432b26c6bf25793a65906e1f8e97e691a70351Mike Klein    ]
116306432b26c6bf25793a65906e1f8e97e691a70351Mike Klein    deps = [
116406432b26c6bf25793a65906e1f8e97e691a70351Mike Klein      ":gm",
116506432b26c6bf25793a65906e1f8e97e691a70351Mike Klein      ":skia",
1166d63442d87c6d35af4b2771a30a80e67d6aa92b68Mike Klein      ":tests",
116706432b26c6bf25793a65906e1f8e97e691a70351Mike Klein    ]
116806432b26c6bf25793a65906e1f8e97e691a70351Mike Klein  }
116906432b26c6bf25793a65906e1f8e97e691a70351Mike Klein
1170a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein  if (!is_debug) {  # I've benchmarked debug code once too many times...
1171e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("monobench") {
1172a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      sources = [
1173a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        "tools/monobench.cpp",
1174a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1175a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      deps = [
1176a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":bench",
1177a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein        ":skia",
1178a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein      ]
1179a343017fc2a1dd3d7aba50f60f2064b787748bb2Mike Klein    }
11802b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
11812b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein
1182e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("nanobench") {
11832b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    sources = [
11842b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "bench/nanobench.cpp",
11852b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
11862b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    deps = [
11872b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":bench",
1188046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":common_flags",
11896519c21a57946366c1141fa81fe1b283150b43fcfmalita      ":experimental_svg_model",
11902b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":flags",
11912b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gm",
11922b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":gpu_tool_utils",
11932b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":skia",
11942b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      ":tool_utils",
11952b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein      "//third_party/jsoncpp",
11962b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein    ]
11972b6870ccb21f0dbcfb17644e9badfb1d07009315mtklein  }
119819a9720978700a24efed8dda7e0935ea2b7338c4halcanary
119910d36c54559586a2776c49d540ece409b4294e8dRavi Mistry  test_app("skpinfo") {
120010d36c54559586a2776c49d540ece409b4294e8dRavi Mistry    sources = [
120110d36c54559586a2776c49d540ece409b4294e8dRavi Mistry      "tools/skpinfo.cpp",
120210d36c54559586a2776c49d540ece409b4294e8dRavi Mistry    ]
120310d36c54559586a2776c49d540ece409b4294e8dRavi Mistry    deps = [
120410d36c54559586a2776c49d540ece409b4294e8dRavi Mistry      ":flags",
120510d36c54559586a2776c49d540ece409b4294e8dRavi Mistry      ":skia",
120610d36c54559586a2776c49d540ece409b4294e8dRavi Mistry    ]
120710d36c54559586a2776c49d540ece409b4294e8dRavi Mistry  }
120810d36c54559586a2776c49d540ece409b4294e8dRavi Mistry
120957a98fc4d595875ca75f906acec8ba508dcb5248Jim Van Verth  if (is_linux || is_win || is_mac) {
1210e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("SampleApp") {
121138925aa37c17c0f54868852b8c3edf373400c742mtklein      sources = [
1212b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        "samplecode/SampleApp.cpp",
1213b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        "samplecode/SamplePictFile.cpp",
121438925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
1215b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      if (is_mac) {
1216b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/mac/skia_mac.mm" ]
1217b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      } else if (is_win) {
1218b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/win/skia_win.cpp" ]
1219b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      } else if (is_linux) {
1220b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        sources += [ "src/views/unix/skia_unix.cpp" ]
1221b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth      }
122238925aa37c17c0f54868852b8c3edf373400c742mtklein      deps = [
122338925aa37c17c0f54868852b8c3edf373400c742mtklein        ":flags",
1224b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":gm",
122538925aa37c17c0f54868852b8c3edf373400c742mtklein        ":gpu_tool_utils",
1226b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":samples",
122738925aa37c17c0f54868852b8c3edf373400c742mtklein        ":skia",
122838925aa37c17c0f54868852b8c3edf373400c742mtklein        ":tool_utils",
1229b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth        ":views",
123038925aa37c17c0f54868852b8c3edf373400c742mtklein      ]
1231c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      if (skia_use_angle) {
1232c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein        deps += [ "//third_party/angle2" ]
1233c168a3ac3cb96555011c73938f71f8183990ab46Mike Klein      }
123438925aa37c17c0f54868852b8c3edf373400c742mtklein    }
12358f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth  }
1236b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth
12378f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth  if (skia_enable_gpu) {
1238e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("skpbench") {
12398f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      sources = [
12408f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        "tools/skpbench/skpbench.cpp",
12418f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      ]
12428f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      deps = [
12438f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":flags",
12448f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":gpu_tool_utils",
12458f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":skia",
12468f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth        ":tool_utils",
12478f5468f0221a987f7bc6565d2cae255372863a2dJim Van Verth      ]
1248b6c5e5379605627fb2bdb49b62141291fca20824Jim Van Verth    }
12494b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton  }
12504b5179b74c49498e5b2b7d94319476672170b61dcsmartdalton
12517d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  # We can't yet build ICU on iOS or Windows.
12527d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (!is_ios && !is_win) {
1253e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("sktexttopdf-hb") {
12546f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      sources = [
12556f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/SkShaper_harfbuzz.cpp",
12566f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "tools/using_skia_and_harfbuzz.cpp",
12576f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
12586f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      deps = [
12596f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        ":skia",
12606f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein        "//third_party/harfbuzz",
12616f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein      ]
12626f5df6acb7dec9788fe5d9c44f7892b896e21de3mtklein    }
126319a9720978700a24efed8dda7e0935ea2b7338c4halcanary  }
1264e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("sktexttopdf") {
12653eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    sources = [
12663eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/SkShaper_primitive.cpp",
12673eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      "tools/using_skia_and_harfbuzz.cpp",
12683eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
12693eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    deps = [
12703eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary      ":skia",
12713eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary    ]
12723eee9d941e773d576917d4a5e89fd4b2b8f53253halcanary  }
1273046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein
1274e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("get_images_from_skps") {
1275046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    sources = [
1276046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "tools/get_images_from_skps.cpp",
1277046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1278046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    deps = [
1279046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":flags",
1280046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      ":skia",
1281046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein      "//third_party/jsoncpp",
1282046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein    ]
1283046cb56c6c1bb40779c81b115271ed0e8196b48bmtklein  }
1284ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein
1285e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("colorspaceinfo") {
12868740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    sources = [
12878740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      "tools/colorspaceinfo.cpp",
12888740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    ]
12898740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    deps = [
12908740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":flags",
12918740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":skia",
12928740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett      ":tool_utils",
12938740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett    ]
12948740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett  }
12958740d5802b27b0786f2b51eef65f500b2a6f6351Matt Sarett
12967d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein  if (!is_ios) {
1297e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("skiaserve") {
12987d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      sources = [
12997d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/Request.cpp",
13007d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/Response.cpp",
13017d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/skiaserve.cpp",
13027d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/BreakHandler.cpp",
13037d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ClipAlphaHandler.cpp",
13047d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/CmdHandler.cpp",
13057d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ColorModeHandler.cpp",
13067d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/DataHandler.cpp",
13077d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/DownloadHandler.cpp",
13087d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/EnableGPUHandler.cpp",
13097d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/ImgHandler.cpp",
13107d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/InfoHandler.cpp",
1311144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon        "tools/skiaserve/urlhandlers/OpBoundsHandler.cpp",
1312144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon        "tools/skiaserve/urlhandlers/OpsHandler.cpp",
13137d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/OverdrawHandler.cpp",
13147d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/PostHandler.cpp",
13157d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/QuitHandler.cpp",
13167d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "tools/skiaserve/urlhandlers/RootHandler.cpp",
13177d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      ]
13187d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      deps = [
13197d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":flags",
13207d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":gpu_tool_utils",
13217d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":skia",
13227d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        ":tool_utils",
13237d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/jsoncpp",
13247d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/libmicrohttpd",
13257d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein        "//third_party/libpng",
13267d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein      ]
13277d3028818ec1b6a653da45387ddf0fa01888cddaMike Klein    }
1328ecbc526418414f6f9d29b176ea0ad8037fff2e2dmtklein  }
132914f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick
1330e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("fuzz") {
133114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    sources = [
133214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FilterFuzz.cpp",
133324ac42b373d9202a89538a1873df9275870c7632Hal Canary      "fuzz/FuzzCanvas.cpp",
1334fec1dea8098fe09f04fff542efdb83edc1fe8240Kevin Lubick      "fuzz/FuzzDrawFunctions.cpp",
133514f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzGradients.cpp",
133614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzParsePath.cpp",
133714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzPathop.cpp",
133814f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/FuzzScaleToSides.cpp",
133914f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      "fuzz/fuzz.cpp",
134014f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
134114f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    deps = [
134214f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":flags",
134344801cac9a7a83711e1b04b14e90364e02a6de49Hal Canary      ":gpu_tool_utils",
134414f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick      ":skia",
1345db6830162eca5b94e61d9825ec93306fc615d204Hal Canary      ":tool_utils",
134614f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick    ]
134714f984bc6bdb4327c3f577b7ccbc61a710443288kjlubick  }
13483831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein
1349e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("pathops_unittest") {
13506e74412a9cf1ffa44271a55b42f18e8a0813a0a2Mike Klein    sources = pathops_tests_sources + [
13516e55fef07fce151bce187eabc59924ca60b3310aMike Klein                rebase_path("tests/skia_test.cpp"),
13526e55fef07fce151bce187eabc59924ca60b3310aMike Klein                rebase_path("tests/Test.cpp"),
13536e55fef07fce151bce187eabc59924ca60b3310aMike Klein              ]
13549feb6326d0c5407247ed1e3d8fade2f86b233001caryclark    deps = [
13559feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":flags",
13569feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":gpu_tool_utils",
13579feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":skia",
13589feb6326d0c5407247ed1e3d8fade2f86b233001caryclark      ":tool_utils",
13599feb6326d0c5407247ed1e3d8fade2f86b233001caryclark    ]
13609feb6326d0c5407247ed1e3d8fade2f86b233001caryclark  }
13619feb6326d0c5407247ed1e3d8fade2f86b233001caryclark
1362e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("dump_record") {
13633831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    sources = [
13643831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/DumpRecord.cpp",
13653831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      "tools/dump_record.cpp",
13663831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
13673831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    deps = [
13683831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":flags",
13693831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein      ":skia",
13703831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein    ]
13713831242a33fbf8d0cd45a0056427bf68df317f07Mike Klein  }
1372fe9172705791848ebfe5b5630973b7e67305f64cbungeman
1373e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("skdiff") {
1374fe9172705791848ebfe5b5630973b7e67305f64cbungeman    sources = [
1375fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff.cpp",
1376fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_html.cpp",
1377fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_main.cpp",
1378fe9172705791848ebfe5b5630973b7e67305f64cbungeman      "tools/skdiff/skdiff_utils.cpp",
1379fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1380fe9172705791848ebfe5b5630973b7e67305f64cbungeman    deps = [
1381fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":skia",
1382fe9172705791848ebfe5b5630973b7e67305f64cbungeman      ":tool_utils",
1383fe9172705791848ebfe5b5630973b7e67305f64cbungeman    ]
1384fe9172705791848ebfe5b5630973b7e67305f64cbungeman  }
1385a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary
1386e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein  test_app("skp_parser") {
1387a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    sources = [
1388a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "tools/skp_parser.cpp",
1389a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1390a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    deps = [
1391a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":skia",
1392a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      ":tool_utils",
1393a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary      "//third_party/jsoncpp",
1394a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary    ]
1395a73d76af31d8ad04716fb611d7987dfd1762f5e9halcanary  }
139616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
1397a92c383e2f1ceb0323aef79fa444450e6a3e1c03Mike Klein  if (skia_enable_gpu && (is_android || is_linux || is_win || is_mac)) {
1398e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("viewer") {
1399e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein      is_shared_library = is_android
140016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      sources = [
140116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/GMSlide.cpp",
140216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/ImageSlide.cpp",
140316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SKPSlide.cpp",
140416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/SampleSlide.cpp",
140516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/Viewer.cpp",
140616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/CommandSet.cpp",
140716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/GLWindowContext.cpp",
140816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "tools/viewer/sk_app/Window.cpp",
140916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
14102dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      libs = []
141116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
14124e56a91393733359ba19967a78df26184e53854eJim Van Verth      if (is_android) {
14134e56a91393733359ba19967a78df26184e53854eJim Van Verth        sources += [
14144e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/GLWindowContext_android.cpp",
14154e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/RasterWindowContext_android.cpp",
14164e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/Window_android.cpp",
14174e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/main_android.cpp",
14184e56a91393733359ba19967a78df26184e53854eJim Van Verth          "tools/viewer/sk_app/android/surface_glue_android.cpp",
14194e56a91393733359ba19967a78df26184e53854eJim Van Verth        ]
1420462334ebc16beb2c223e806561440b2b0f86c236Brian Osman        libs += [ "android" ]
14214e56a91393733359ba19967a78df26184e53854eJim Van Verth      } else if (is_linux) {
14222dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        sources += [
14232dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/GLWindowContext_unix.cpp",
14242dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/RasterWindowContext_unix.cpp",
14252dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/Window_unix.cpp",
14262dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          "tools/viewer/sk_app/unix/main_unix.cpp",
14272dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        ]
14282dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman      } else if (is_win) {
142916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [
143016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/GLWindowContext_win.cpp",
143116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/RasterWindowContext_win.cpp",
143216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/Window_win.cpp",
143316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          "tools/viewer/sk_app/win/main_win.cpp",
143416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ]
143543c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein      } else if (is_mac) {
143643c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        sources += [
143743c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/GLWindowContext_mac.cpp",
143843c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/RasterWindowContext_mac.cpp",
143943c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/Window_mac.cpp",
144043c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein          "tools/viewer/sk_app/mac/main_mac.cpp",
144143c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        ]
144216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
144316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
144416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      if (skia_use_vulkan) {
144516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        sources += [ "tools/viewer/sk_app/VulkanWindowContext.cpp" ]
14464e56a91393733359ba19967a78df26184e53854eJim Van Verth        if (is_android) {
14474e56a91393733359ba19967a78df26184e53854eJim Van Verth          sources +=
14484e56a91393733359ba19967a78df26184e53854eJim Van Verth              [ "tools/viewer/sk_app/android/VulkanWindowContext_android.cpp" ]
14494e56a91393733359ba19967a78df26184e53854eJim Van Verth        } else if (is_linux) {
14502dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          sources += [ "tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp" ]
14512dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman          libs += [ "X11-xcb" ]
14522dd9693432b319c18a12c8a0deab5e1af5330e95Brian Osman        } else if (is_win) {
145316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman          sources += [ "tools/viewer/sk_app/win/VulkanWindowContext_win.cpp" ]
145416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        }
145516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      }
145616adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman
145716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      include_dirs = []
145816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      deps = [
145916adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":flags",
146016adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gm",
146116adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":gpu_tool_utils",
146216adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":samples",
146316adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":skia",
146416adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":tool_utils",
146516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        ":views",
146679086b94eda7c46c37e1cf4395eb75ef54807e3cBrian Osman        "//third_party/imgui",
146716adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman        "//third_party/jsoncpp",
146816adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman      ]
14694e56a91393733359ba19967a78df26184e53854eJim Van Verth      if (is_android) {
14704e56a91393733359ba19967a78df26184e53854eJim Van Verth        deps += [ "//third_party/native_app_glue" ]
14714e56a91393733359ba19967a78df26184e53854eJim Van Verth      } else if (is_mac) {
147243c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein        deps += [ "//third_party/libsdl" ]
147343c2526665fb0c5a2f8c5793b9326ebf4ef3dacaMike Klein      }
1474a92c383e2f1ceb0323aef79fa444450e6a3e1c03Mike Klein    }
147516adfa39330b7b1c6ac16b8127843e55f4233a29Brian Osman  }
14764f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas
1477e459afd6ce2c2ccbad500dc2e77e0ac287af90ebMike Klein  if (is_android && defined(ndk) && ndk != "") {
147870120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger    copy("gdbserver") {
147970120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger      sources = [
148070120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger        "$ndk/$ndk_gdbserver",
148170120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger      ]
148270120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger      outputs = [
148370120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger        "$root_out_dir/gdbserver",
148470120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger      ]
148570120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger    }
148670120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger  }
148770120c778abc42ce754fb8178aa49bf8ce95a5c3Derek Sollenberger
14884f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas  if (skia_enable_gpu) {
1489e6682eb88c1db2bb6f9de34f6e3b1b70c91f5e38Mike Klein    test_app("skslc") {
14904f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      sources = [
14914f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        "src/sksl/SkSLMain.cpp",
14924f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      ]
14934f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      deps = [
14944f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        ":flags",
14954f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas        ":skia",
14964f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas      ]
14974f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas    }
14984f3985c636542e46fedddf736401d74c70ba7384Ethan Nicholas  }
149925c81d4e651b43b8217c365c87d530036529a673mtklein}
1500