blob: 6236b3a1f5dff72c61a422a3d88d833992131099 [file] [log] [blame]
[email protected]7867196e52014-04-09 19:55:291# Copyright (c) 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/features.gni")
[email protected]51f425782014-04-11 23:06:176import("//build/config/ui.gni")
[email protected]7867196e52014-04-09 19:55:297if (cpu_arch == "arm") {
8 import("//build/config/arm.gni")
9}
10
11skia_support_gpu = !is_ios
[email protected]b46e7e92014-07-22 21:49:5212skia_support_pdf = !is_ios && printing_mode != 0
[email protected]7867196e52014-04-09 19:55:2913
bungemanc04fdeb2014-10-24 15:47:0414# The list of Skia defines that are to be set for blink.
15gypi_blink_skia_defines = exec_script(
16 "//build/gypi_to_gn.py",
17 [ rebase_path("//third_party/WebKit/public/blink_skia_config.gypi"),
18 "--replace=<(skia_include_path)=//third_party/skia/include",
19 "--replace=<(skia_src_path)=//third_party/skia/src" ],
20 "scope",
21 [ "//third_party/WebKit/public/blink_skia_config.gypi" ])
22
[email protected]cef9b0fc2014-04-30 15:56:0323# The list of Skia defines that are to be set for chromium.
24gypi_skia_defines = exec_script(
25 "//build/gypi_to_gn.py",
26 [ rebase_path("//third_party/skia/gyp/skia_for_chromium_defines.gypi"),
27 "--replace=<(skia_include_path)=//third_party/skia/include",
28 "--replace=<(skia_src_path)=//third_party/skia/src" ],
29 "scope",
30 [ "//third_party/skia/gyp/skia_for_chromium_defines.gypi" ])
31
32# The list of Skia core sources that are to be set for chromium.
33gypi_skia_core = exec_script(
34 "//build/gypi_to_gn.py",
35 [ rebase_path("//third_party/skia/gyp/core.gypi"),
36 "--replace=<(skia_include_path)=//third_party/skia/include",
37 "--replace=<(skia_src_path)=//third_party/skia/src" ],
38 "scope",
39 [ "//third_party/skia/gyp/core.gypi" ])
40
41# The list of Skia gpu sources that are to be set for chromium.
42gypi_skia_gpu = exec_script(
43 "//build/gypi_to_gn.py",
44 [ rebase_path("//third_party/skia/gyp/gpu.gypi"),
45 "--replace=<(skia_include_path)=//third_party/skia/include",
46 "--replace=<(skia_src_path)=//third_party/skia/src" ],
47 "scope",
48 [ "//third_party/skia/gyp/gpu.gypi" ])
49
50# The list of Skia pdf sources that are to be set for chromium.
51gypi_skia_pdf = exec_script(
52 "//build/gypi_to_gn.py",
53 [ rebase_path("//third_party/skia/gyp/pdf.gypi"),
54 "--replace=<(skia_include_path)=//third_party/skia/include",
55 "--replace=<(skia_src_path)=//third_party/skia/src" ],
56 "scope",
57 [ "//third_party/skia/gyp/pdf.gypi" ])
58
59# The list of Skia effects that are to be set for chromium.
60gypi_skia_effects = exec_script(
61 "//build/gypi_to_gn.py",
62 [ rebase_path("//third_party/skia/gyp/effects.gypi"),
63 "--replace=<(skia_include_path)=//third_party/skia/include",
64 "--replace=<(skia_src_path)=//third_party/skia/src" ],
65 "scope",
66 [ "//third_party/skia/gyp/effects.gypi" ])
67
[email protected]7110c54c2014-06-10 22:52:0468# The list of Skia utilss that are to be set for chromium.
69gypi_skia_utils = exec_script(
70 "//build/gypi_to_gn.py",
71 [ rebase_path("//third_party/skia/gyp/utils.gypi"),
72 "--replace=<(skia_include_path)=//third_party/skia/include",
73 "--replace=<(skia_src_path)=//third_party/skia/src" ],
74 "scope",
75 [ "//third_party/skia/gyp/utils.gypi" ])
76
[email protected]7867196e52014-04-09 19:55:2977# The list of Skia files is kept in skia_gn_files.gypi. Read it.
[email protected]f2f4d5e2014-04-11 17:23:4078gypi_values = exec_script(
79 "//build/gypi_to_gn.py",
80 [ rebase_path("skia_gn_files.gypi"),
81 "--replace=<(skia_include_path)=//third_party/skia/include",
[email protected]c7d9b352014-04-29 22:18:0482 "--replace=<(skia_src_path)=//third_party/skia/src" ],
[email protected]f2f4d5e2014-04-11 17:23:4083 "scope",
84 [ "skia_gn_files.gypi" ])
[email protected]7867196e52014-04-09 19:55:2985
86# External-facing config for dependent code.
87config("skia_config") {
88 include_dirs = [
89 "config",
90 "ext",
reed7a8ac5f2014-10-24 21:49:4491 "//third_party/skia/include/c",
[email protected]7867196e52014-04-09 19:55:2992 "//third_party/skia/include/config",
93 "//third_party/skia/include/core",
94 "//third_party/skia/include/effects",
95 "//third_party/skia/include/images",
96 "//third_party/skia/include/lazy",
97 "//third_party/skia/include/pathops",
98 "//third_party/skia/include/pdf",
99 "//third_party/skia/include/pipe",
100 "//third_party/skia/include/ports",
101 "//third_party/skia/include/utils",
102 "//third_party/skia/src/core",
103 "//third_party/skia/src/image",
104 "//third_party/skia/src/opts",
105 "//third_party/skia/src/ports",
106 "//third_party/skia/src/sfnt",
107 "//third_party/skia/src/utils",
108 "//third_party/skia/src/lazy",
109 ]
110
bungemanc04fdeb2014-10-24 15:47:04111 defines = gypi_blink_skia_defines.blink_skia_defines
112 defines += gypi_skia_defines.skia_for_chromium_defines
[email protected]cef9b0fc2014-04-30 15:56:03113
114 defines += [
115 "SK_ENABLE_INST_COUNT=0",
116 "GR_GL_CUSTOM_SETUP_HEADER=\"GrGLConfig_chrome.h\"",
117 "SK_ENABLE_LEGACY_API_ALIASING=1",
118 "SK_ATTR_DEPRECATED=SK_NOTHING_ARG1",
119 "GR_GL_IGNORE_ES3_MSAA=0",
120 "SK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT",
121 "SK_SUPPORT_LEGACY_GETTOTALCLIP",
122 ]
[email protected]7867196e52014-04-09 19:55:29123
124 if (component_mode == "shared_library") {
125 defines += [ "SKIA_DLL" ]
126 }
127
128 if (skia_support_gpu) {
129 include_dirs += [
130 "//third_party/skia/include/gpu",
131 "//third_party/skia/src/gpu",
132 ]
133 defines += [ "SK_SUPPORT_GPU=1" ]
134 } else {
135 defines += [ "SK_SUPPORT_GPU=0" ]
136 }
137
138 # For POSIX platforms, prefer the Mutex implementation provided by Skia
139 # since it does not generate static initializers.
140 if (is_posix) {
141 defines += [ "SK_USE_POSIX_THREADS" ]
142 }
143
144 if (is_android) {
145 defines += [
146 "SK_BUILD_FOR_ANDROID",
147 "USE_CHROMIUM_SKIA",
148 ]
149 }
[email protected]f7f07b02014-07-09 06:02:08150
151 if (is_mac) {
152 defines += [ "SK_BUILD_FOR_MAC" ]
153 }
[email protected]7867196e52014-04-09 19:55:29154}
155
[email protected]7867196e52014-04-09 19:55:29156# Internal-facing config for Skia library code.
157config("skia_library_config") {
[email protected]ab9ce6e2014-04-17 20:33:19158 # These include directories are only included for Skia code and are not
159 # exported to dependents. It's not clear if this is on purpose, but this
160 # matches the GYP build.
161 include_dirs = []
162 if (is_mac || is_ios) {
163 include_dirs += [ "//third_party/skia/include/utils/mac" ]
164 }
165 if (is_mac) {
166 include_dirs += [ "//third_party/skia/include/utils/ios" ]
167 }
168
[email protected]7867196e52014-04-09 19:55:29169 defines = [
170 #skia_export_defines ???) TODO
171
172 # skia uses static initializers to initialize the serialization logic
173 # of its "pictures" library. This is currently not used in chrome; if
174 # it ever gets used the processes that use it need to call
175 # SkGraphics::Init().
176 "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0",
177
[email protected]cef9b0fc2014-04-30 15:56:03178 # Forcing the unoptimized path for the offset image filter in skia until
179 # all filters used in Blink support the optimized path properly
180 "SK_DISABLE_OFFSETIMAGEFILTER_OPTIMIZATION",
181
[email protected]7867196e52014-04-09 19:55:29182 "IGNORE_ROT_AA_RECT_OPT",
183
[email protected]cef9b0fc2014-04-30 15:56:03184 "SK_IGNORE_BLURRED_RRECT_OPT",
185
[email protected]cef9b0fc2014-04-30 15:56:03186 # this flag forces Skia not to use typographic metrics with GDI.
[email protected]7867196e52014-04-09 19:55:29187 "SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS",
[email protected]cef9b0fc2014-04-30 15:56:03188
189 "SK_USE_DISCARDABLE_SCALEDIMAGECACHE",
[email protected]7867196e52014-04-09 19:55:29190 ]
191
Cem Kocagilb83a0bd2014-09-22 19:42:37192 if (component_mode == "shared_library") {
193 defines += [ "SKIA_IMPLEMENTATION=1" ]
194 }
195
[email protected]0ac572b2014-07-29 00:20:58196 if (cpu_arch == "arm") {
197 if (arm_use_neon) {
[email protected]576f60d2014-08-04 15:25:11198 defines += [ "SK_ARM_HAS_NEON" ]
[email protected]0ac572b2014-07-29 00:20:58199 }
200 if (arm_optionally_use_neon) {
[email protected]576f60d2014-08-04 15:25:11201 defines += [ "SK_ARM_HAS_OPTIONAL_NEON" ]
[email protected]0ac572b2014-07-29 00:20:58202 }
203 }
204
[email protected]7867196e52014-04-09 19:55:29205 # Settings for text blitting, chosen to approximate the system browser.
206 if (is_linux) {
207 defines += [
208 "SK_GAMMA_EXPONENT=1.2",
209 "SK_GAMMA_CONTRAST=0.2",
[email protected]cef9b0fc2014-04-30 15:56:03210 "SK_HIGH_QUALITY_IS_LANCZOS",
[email protected]7867196e52014-04-09 19:55:29211 ]
212 } else if (is_android) {
213 defines += [
214 "SK_GAMMA_APPLY_TO_A8",
215 "SK_GAMMA_EXPONENT=1.4",
216 "SK_GAMMA_CONTRAST=0.0",
217 ]
218 } else if (is_win) {
219 defines += [
220 "SK_GAMMA_SRGB",
221 "SK_GAMMA_CONTRAST=0.5",
[email protected]cef9b0fc2014-04-30 15:56:03222 "SK_HIGH_QUALITY_IS_LANCZOS",
[email protected]7867196e52014-04-09 19:55:29223 ]
224 } else if (is_mac) {
225 defines += [
226 "SK_GAMMA_SRGB",
227 "SK_GAMMA_CONTRAST=0.0",
[email protected]cef9b0fc2014-04-30 15:56:03228 "SK_HIGH_QUALITY_IS_LANCZOS",
[email protected]7867196e52014-04-09 19:55:29229 ]
230 }
231
232 if (is_android) {
233 defines += [
234 # Android devices are typically more memory constrained, so default to a
235 # smaller glyph cache (it may be overriden at runtime when the renderer
236 # starts up, depending on the actual device memory).
237 "SK_DEFAULT_FONT_CACHE_LIMIT=1048576" # 1024 * 1024
238 ]
239 } else {
240 defines += [ "SK_DEFAULT_FONT_CACHE_LIMIT=20971520" ] # 20 * 1024 * 1024
241 }
242
243 if (is_win) {
244 include_dirs = [
245 "//third_party/skia/include/utils/win",
246 "//third_party/skia/src/utils/win",
247 ]
248
249 defines += [ "SK_FONTHOST_USES_FONTMGR" ]
250
251 cflags = [
kulkarni.a59a0e352014-09-25 03:21:19252 "/wd4244", # conversion from 'type1( __int64)' to 'type2 (unsigned int)'
253 "/wd4267", # conversion from 'size_t' (64 bit) to 'type'(32 bit).
254 "/wd4341", # signed value is out of range for enum constant.
255 "/wd4345", # Object is default-initialized if initialization is omitted.
256 "/wd4390", # ';'empty statement found in looping;is it what was intended?
257 "/wd4554", # 'operator' : check operator precedence for possible error
258 "/wd4748", # compiler will disable optimizations if a function has inline
259 # assembly code contains flow control(jmp or jcc) statements.
260 "/wd4800", # forcing value to bool 'true/false'(assigning int to bool).
[email protected]7867196e52014-04-09 19:55:29261 ]
262 }
263}
264
265component("skia") {
266 sources = [
267 # Chrome sources.
sky5d73fab2014-08-25 23:37:56268 "config/SkUserConfig.h",
[email protected]7867196e52014-04-09 19:55:29269 "ext/analysis_canvas.cc",
270 "ext/analysis_canvas.h",
271 "ext/benchmarking_canvas.cc",
272 "ext/benchmarking_canvas.h",
273 "ext/bitmap_platform_device.h",
[email protected]7867196e52014-04-09 19:55:29274 "ext/convolver.cc",
275 "ext/convolver.h",
276 "ext/event_tracer_impl.cc",
277 "ext/event_tracer_impl.h",
[email protected]1399f242014-06-19 01:20:12278 "ext/fontmgr_default_win.cc",
279 "ext/fontmgr_default_win.h",
[email protected]7867196e52014-04-09 19:55:29280 "ext/google_logging.cc",
281 "ext/image_operations.cc",
282 "ext/image_operations.h",
283 "ext/lazy_pixel_ref.cc",
284 "ext/lazy_pixel_ref.h",
285 "ext/SkThread_chrome.cc",
286 "ext/opacity_draw_filter.cc",
287 "ext/opacity_draw_filter.h",
[email protected]7867196e52014-04-09 19:55:29288 "ext/pixel_ref_utils.cc",
289 "ext/pixel_ref_utils.h",
290 "ext/platform_canvas.cc",
291 "ext/platform_canvas.h",
292 "ext/platform_device.cc",
293 "ext/platform_device.h",
294 "ext/platform_device_linux.cc",
295 "ext/platform_device_mac.cc",
296 "ext/platform_device_win.cc",
297 "ext/recursive_gaussian_convolution.cc",
298 "ext/recursive_gaussian_convolution.h",
299 "ext/refptr.h",
300 "ext/SkDiscardableMemory_chrome.h",
301 "ext/SkDiscardableMemory_chrome.cc",
302 "ext/SkMemory_new_handler.cpp",
303 "ext/skia_trace_shim.h",
304 "ext/skia_utils_base.cc",
305 "ext/skia_utils_base.h",
306 "ext/skia_utils_ios.mm",
307 "ext/skia_utils_ios.h",
308 "ext/skia_utils_mac.mm",
309 "ext/skia_utils_mac.h",
310 "ext/skia_utils_win.cc",
311 "ext/skia_utils_win.h",
312 "ext/vector_canvas.h",
313 "ext/vector_platform_device_emf_win.cc",
314 "ext/vector_platform_device_emf_win.h",
315 "ext/vector_platform_device_skia.cc",
316 "ext/vector_platform_device_skia.h",
317 ]
318
319 # The skia gypi values are relative to the skia_dir, so we need to rebase.
[email protected]cef9b0fc2014-04-30 15:56:03320 sources += gypi_skia_core.sources
321 sources += gypi_skia_effects.sources
[email protected]7110c54c2014-06-10 22:52:04322 sources += gypi_skia_utils.sources
[email protected]cef9b0fc2014-04-30 15:56:03323 sources += gypi_skia_pdf.sources
[email protected]f2f4d5e2014-04-11 17:23:40324 sources += gypi_values.skia_library_sources
[email protected]7867196e52014-04-09 19:55:29325
[email protected]a5d20a22014-07-12 04:59:22326 if (cpu_arch == "arm") {
327 sources += [
328 "//third_party/skia/src/core/SkUtilsArm.cpp",
329 "//third_party/skia/src/core/SkUtilsArm.h",
330 ]
331 }
332
[email protected]7867196e52014-04-09 19:55:29333 # GPU
334 if (skia_support_gpu) {
[email protected]cef9b0fc2014-04-30 15:56:03335 sources += gypi_skia_gpu.skgpu_sources
336 sources += gypi_skia_gpu.skgpu_null_gl_sources
[email protected]7867196e52014-04-09 19:55:29337 }
338
[email protected]7110c54c2014-06-10 22:52:04339 # Remove unused util files include in utils.gypi
340 sources -= [
mtklein1bd9a312014-09-04 17:29:11341 "//third_party/skia/src/utils/SkCondVar.cpp",
[email protected]9bab87b2014-08-06 19:35:28342 "//third_party/skia/src/utils/SkCondVar.h",
343 "//third_party/skia/src/utils/SkRunnable.h",
[email protected]7110c54c2014-06-10 22:52:04344
345 "//third_party/skia/include/utils/SkBoundaryPatch.h",
346 "//third_party/skia/include/utils/SkFrontBufferedStream.h",
347 "//third_party/skia/include/utils/SkCamera.h",
348 "//third_party/skia/include/utils/SkCanvasStateUtils.h",
349 "//third_party/skia/include/utils/SkCubicInterval.h",
350 "//third_party/skia/include/utils/SkCullPoints.h",
351 "//third_party/skia/include/utils/SkDebugUtils.h",
352 "//third_party/skia/include/utils/SkDumpCanvas.h",
353 "//third_party/skia/include/utils/SkEventTracer.h",
354 "//third_party/skia/include/utils/SkInterpolator.h",
355 "//third_party/skia/include/utils/SkLayer.h",
356 "//third_party/skia/include/utils/SkMeshUtils.h",
357 "//third_party/skia/include/utils/SkNinePatch.h",
358 "//third_party/skia/include/utils/SkParse.h",
359 "//third_party/skia/include/utils/SkParsePaint.h",
360 "//third_party/skia/include/utils/SkParsePath.h",
361 "//third_party/skia/include/utils/SkRandom.h",
362 "//third_party/skia/include/utils/SkWGL.h",
363
364 "//third_party/skia/src/utils/SkBitmapHasher.cpp",
365 "//third_party/skia/src/utils/SkBitmapHasher.h",
366 "//third_party/skia/src/utils/SkBoundaryPatch.cpp",
367 "//third_party/skia/src/utils/SkFrontBufferedStream.cpp",
368 "//third_party/skia/src/utils/SkCamera.cpp",
369 "//third_party/skia/src/utils/SkCanvasStack.h",
370 "//third_party/skia/src/utils/SkCubicInterval.cpp",
371 "//third_party/skia/src/utils/SkCullPoints.cpp",
372 "//third_party/skia/src/utils/SkDumpCanvas.cpp",
373 "//third_party/skia/src/utils/SkFloatUtils.h",
374 "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.cpp",
375 "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.h",
376 "//third_party/skia/src/utils/SkInterpolator.cpp",
377 "//third_party/skia/src/utils/SkLayer.cpp",
378 "//third_party/skia/src/utils/SkMD5.cpp",
379 "//third_party/skia/src/utils/SkMD5.h",
380 "//third_party/skia/src/utils/SkMeshUtils.cpp",
381 "//third_party/skia/src/utils/SkNinePatch.cpp",
382 "//third_party/skia/src/utils/SkOSFile.cpp",
383 "//third_party/skia/src/utils/SkParse.cpp",
384 "//third_party/skia/src/utils/SkParseColor.cpp",
385 "//third_party/skia/src/utils/SkParsePath.cpp",
386 "//third_party/skia/src/utils/SkPathUtils.cpp",
387 "//third_party/skia/src/utils/SkSHA1.cpp",
388 "//third_party/skia/src/utils/SkSHA1.h",
389 "//third_party/skia/src/utils/SkThreadUtils.h",
390 "//third_party/skia/src/utils/SkThreadUtils_pthread.cpp",
391 "//third_party/skia/src/utils/SkThreadUtils_pthread.h",
392 "//third_party/skia/src/utils/SkThreadUtils_pthread_linux.cpp",
393 "//third_party/skia/src/utils/SkThreadUtils_pthread_mach.cpp",
394 "//third_party/skia/src/utils/SkThreadUtils_pthread_other.cpp",
395 "//third_party/skia/src/utils/SkThreadUtils_win.cpp",
396 "//third_party/skia/src/utils/SkTFitsIn.h",
397 "//third_party/skia/src/utils/SkTLogic.h",
398
399 #testing
400 "//third_party/skia/src/fonts/SkGScalerContext.cpp",
401 "//third_party/skia/src/fonts/SkGScalerContext.h",
402 ]
403
[email protected]273b4ac2014-07-31 01:50:08404 # need separate win section to handle chromes auto gn filter
405 # (build/config/BUILDCONFIG.gn)
[email protected]7110c54c2014-06-10 22:52:04406 if (is_win) {
407 sources -= [
408 "//third_party/skia/src/utils/SkThreadUtils_win.h",
409
410 #windows
411 "//third_party/skia/include/utils/win/SkAutoCoInitialize.h",
412 "//third_party/skia/include/utils/win/SkHRESULT.h",
413 "//third_party/skia/include/utils/win/SkIStream.h",
414 "//third_party/skia/include/utils/win/SkTScopedComPtr.h",
415 "//third_party/skia/src/utils/win/SkAutoCoInitialize.cpp",
416 "//third_party/skia/src/utils/win/SkIStream.cpp",
417 "//third_party/skia/src/utils/win/SkWGL_win.cpp",
418 ]
419 }
420
[email protected]7867196e52014-04-09 19:55:29421 # Fixup Chrome sources.
422 if (is_posix) {
423 sources -= [ "ext/SkThread_chrome.cc" ]
424 }
425 if (is_ios) {
426 sources -= [ "ext/vector_platform_device_skia.cc" ]
427 }
428 if (is_win) {
429 sources -= [ "ext/SkThread_chrome.cc" ]
430 }
[email protected]b46e7e92014-07-22 21:49:52431 if (is_android && printing_mode == 0) {
[email protected]7867196e52014-04-09 19:55:29432 sources -= [
433 "ext/skia_utils_base.cc",
434 "ext/vector_platform_device_skia.cc"
435 ]
436 }
437
438 # Fixup skia library sources.
439 if (is_win) {
440 sources -= [
[email protected]f2f4d5e2014-04-11 17:23:40441 "//third_party/skia/src/ports/SkOSFile_posix.cpp",
442 "//third_party/skia/src/ports/SkTime_Unix.cpp",
443 "//third_party/skia/src/ports/SkTLS_pthread.cpp",
[email protected]7867196e52014-04-09 19:55:29444 ]
445 } else {
446 sources -= [
[email protected]f2f4d5e2014-04-11 17:23:40447 "//third_party/skia/src/ports/SkFontHost_win.cpp",
[email protected]15c7a712014-06-06 13:33:24448 "//third_party/skia/src/ports/SkFontMgr_win_dw.cpp",
[email protected]f2f4d5e2014-04-11 17:23:40449 "//third_party/skia/src/ports/SkOSFile_win.cpp",
[email protected]4492db72014-05-31 04:40:23450 "//third_party/skia/src/ports/SkRemotableFontMgr_win_dw.cpp",
[email protected]15c7a712014-06-06 13:33:24451 "//third_party/skia/src/ports/SkScalerContext_win_dw.cpp",
452 "//third_party/skia/src/ports/SkScalerContext_win_dw.h",
[email protected]f2f4d5e2014-04-11 17:23:40453 "//third_party/skia/src/ports/SkTLS_win.cpp",
[email protected]15c7a712014-06-06 13:33:24454 "//third_party/skia/src/ports/SkTypeface_win_dw.cpp",
455 "//third_party/skia/src/ports/SkTypeface_win_dw.h",
[email protected]7867196e52014-04-09 19:55:29456 ]
457 }
458 if (!is_android) {
459 sources -= [
[email protected]f2f4d5e2014-04-11 17:23:40460 "//third_party/skia/src/ports/SkFontConfigParser_android.cpp",
[email protected]196e7ca2014-07-24 18:41:18461 "//third_party/skia/src/ports/SkFontMgr_android.cpp",
[email protected]7867196e52014-04-09 19:55:29462 ]
463 }
464 if (!is_mac) {
465 sources -= [
[email protected]f2f4d5e2014-04-11 17:23:40466 "//third_party/skia/src/ports/SkFontHost_mac.cpp",
[email protected]7867196e52014-04-09 19:55:29467 ]
468 }
[email protected]4492db72014-05-31 04:40:23469
[email protected]7867196e52014-04-09 19:55:29470 if (!is_linux) {
471 sources -= [
[email protected]2dc1e102014-08-14 14:04:34472 "//third_party/skia/src/ports/SkFontHost_fontconfig.cpp",
[email protected]ab9ce6e2014-04-17 20:33:19473 "//third_party/skia/src/fonts/SkFontMgr_fontconfig.cpp",
474 "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
[email protected]a5d20a22014-07-12 04:59:22475 ]
476 }
477
478 if (!is_linux && !is_android) {
479 sources -= [
[email protected]4492db72014-05-31 04:40:23480 "//third_party/skia/src/ports/SkFontHost_FreeType_common.cpp",
481 "//third_party/skia/src/ports/SkFontHost_FreeType.cpp",
[email protected]7867196e52014-04-09 19:55:29482 ]
483 }
[email protected]240e3032014-05-27 20:15:20484
[email protected]b46e7e92014-07-22 21:49:52485 # Select the right BitmapPlatformDevice.
486 if (is_win) {
487 sources += [
488 "ext/bitmap_platform_device_win.cc",
489 "ext/bitmap_platform_device_win.h",
490 ]
491 } else if (is_mac) {
mtklein1bd9a312014-09-04 17:29:11492 sources += [
[email protected]b46e7e92014-07-22 21:49:52493 "ext/bitmap_platform_device_mac.cc",
494 "ext/bitmap_platform_device_mac.h",
495 ]
496 } else if (use_cairo) {
497 sources += [
[email protected]51f425782014-04-11 23:06:17498 "ext/bitmap_platform_device_cairo.cc",
499 "ext/bitmap_platform_device_cairo.h",
500 ]
[email protected]b46e7e92014-07-22 21:49:52501 } else {
502 sources += [
503 "ext/bitmap_platform_device_skia.cc",
504 "ext/bitmap_platform_device_skia.h",
505 ]
[email protected]51f425782014-04-11 23:06:17506 }
[email protected]7867196e52014-04-09 19:55:29507
[email protected]ab9ce6e2014-04-17 20:33:19508 if (is_clang) {
509 # Skia won't compile with some of the more strict clang warnings.
510 # e.g. it does:
511 # SkASSERT(!"sk_out_of_memory");
512 configs -= [ "//build/config/clang:extra_warnings" ]
513 }
514
[email protected]7867196e52014-04-09 19:55:29515 configs -= [ "//build/config/compiler:chromium_code" ]
516 configs += [
517 ":skia_library_config",
518 "//build/config/compiler:no_chromium_code"
519 ]
Brett Wilsone53895272014-09-23 23:41:46520 public_configs = [ ":skia_config" ]
[email protected]7867196e52014-04-09 19:55:29521
522 deps = [
523 ":skia_opts",
524 "//base",
525 "//base/third_party/dynamic_annotations",
526 "//third_party/zlib",
527 ]
528
[email protected]240e3032014-05-27 20:15:20529 if (is_win) {
530 configs -= [
531 # Some files define WIN32_LEAN_AND_MEAN and we want to avoid a duplicate
532 # definition warning.
533 "//build/config/win:lean_and_mean",
534 ]
535 }
536
[email protected]7867196e52014-04-09 19:55:29537 if (is_linux) {
538 configs += [
539 "//build/config/linux:fontconfig",
540 "//build/config/linux:freetype2",
541 "//build/config/linux:pangocairo",
542 ]
543 deps += [
544 "//third_party/icu:icuuc",
545 ]
546 }
547
[email protected]33b56822014-05-20 07:00:44548 if (is_android) {
[email protected]a5d20a22014-07-12 04:59:22549 set_sources_assignment_filter([])
550 sources += [
551 "ext/platform_device_linux.cc",
552 ]
553 set_sources_assignment_filter(sources_assignment_filter)
[email protected]33b56822014-05-20 07:00:44554 deps += [
555 "//third_party/expat",
556 "//third_party/freetype",
[email protected]a5d20a22014-07-12 04:59:22557 "//third_party/android_tools:cpu_features",
[email protected]33b56822014-05-20 07:00:44558 ]
559 }
560
[email protected]7867196e52014-04-09 19:55:29561 if (skia_support_pdf) {
562 deps += [ "//third_party/sfntly" ]
563 }
fdegans75b3d092014-09-17 18:35:55564
565 if (is_android && !is_debug) {
566 configs -= [ "//build/config/compiler:optimize" ]
567 configs += [ "//build/config/compiler:optimize_max" ]
568 }
[email protected]7867196e52014-04-09 19:55:29569}
570
571# Separated out so it can be compiled with different flags for SSE.
572source_set("skia_opts") {
[email protected]33b56822014-05-20 07:00:44573 cflags = []
574 defines = []
575
[email protected]7867196e52014-04-09 19:55:29576 if (cpu_arch == "x86" || cpu_arch == "x64") {
577 sources = [
[email protected]a29df342014-07-15 19:16:09578 "//third_party/skia/src/opts/SkTextureCompression_opts_none.cpp",
579
[email protected]7867196e52014-04-09 19:55:29580 # SSE 2
[email protected]bdda54ae22014-05-01 18:03:17581 "//third_party/skia/src/opts/opts_check_x86.cpp",
[email protected]7867196e52014-04-09 19:55:29582 "//third_party/skia/src/opts/SkBitmapFilter_opts_SSE2.cpp",
583 "//third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp",
584 "//third_party/skia/src/opts/SkBlitRect_opts_SSE2.cpp",
585 "//third_party/skia/src/opts/SkBlitRow_opts_SSE2.cpp",
586 "//third_party/skia/src/opts/SkBlurImage_opts_SSE2.cpp",
587 "//third_party/skia/src/opts/SkMorphology_opts_SSE2.cpp",
588 "//third_party/skia/src/opts/SkUtils_opts_SSE2.cpp",
[email protected]7ac206c2014-04-11 16:55:41589 "//third_party/skia/src/opts/SkXfermode_opts_SSE2.cpp",
[email protected]7867196e52014-04-09 19:55:29590
[email protected]17495892014-07-01 19:10:35591 # SSSE 3
[email protected]7867196e52014-04-09 19:55:29592 "//third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp",
593
[email protected]d1776b82014-07-07 18:17:56594 # SSE 4
595 "//third_party/skia/src/opts/SkBlurImage_opts_SSE4.cpp",
596
[email protected]7867196e52014-04-09 19:55:29597 # Chrome-specific.
598 "ext/convolver_SSE2.cc",
[email protected]59ff2d42014-04-22 22:25:23599
600 # These are header files used by this target from the skia one above.
601 "ext/convolver.h",
602 "//third_party/skia/include/core/SkTypes.h",
[email protected]7867196e52014-04-09 19:55:29603 ]
604
[email protected]273b4ac2014-07-31 01:50:08605 if (!is_win) {
606 # SSE 4
607 if (cpu_arch == "x86") {
608 sources += [ "//third_party/skia/src/opts/SkBlitRow_opts_SSE4_asm.S" ]
609 } else { # x64
610 sources += [
611 "//third_party/skia/src/opts/SkBlitRow_opts_SSE4_x64_asm.S"
612 ]
613 }
[email protected]17495892014-07-01 19:10:35614 }
615
[email protected]7867196e52014-04-09 19:55:29616 if (is_linux || is_mac) {
[email protected]f7f07b02014-07-09 06:02:08617 cflags += [ "-msse4.1" ]
[email protected]7867196e52014-04-09 19:55:29618 }
[email protected]33b56822014-05-20 07:00:44619 } else if (cpu_arch == "arm") {
620 sources = [
621 "//third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp",
622 ]
623
624 # The assembly uses the frame pointer register (r7 in Thumb/r11 in
625 # ARM), the compiler doesn't like that.
626 cflags += [ "-fomit-frame-pointer" ]
627
628 if (arm_version >= 7) {
629 if (arm_use_neon || arm_optionally_use_neon) {
630 sources += [
[email protected]33b56822014-05-20 07:00:44631 "//third_party/skia/src/opts/SkBitmapProcState_arm_neon.cpp",
632 "//third_party/skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp",
633 "//third_party/skia/src/opts/SkBitmapProcState_matrix_clamp_neon.h",
634 "//third_party/skia/src/opts/SkBitmapProcState_matrix_repeat_neon.h",
635 "//third_party/skia/src/opts/SkBlitMask_opts_arm_neon.cpp",
636 "//third_party/skia/src/opts/SkBlitRow_opts_arm_neon.cpp",
[email protected]33b56822014-05-20 07:00:44637 "//third_party/skia/src/opts/SkBlurImage_opts_neon.cpp",
638 "//third_party/skia/src/opts/SkMorphology_opts_neon.cpp",
[email protected]a29df342014-07-15 19:16:09639 "//third_party/skia/src/opts/SkTextureCompression_opts_neon.cpp",
640 "//third_party/skia/src/opts/SkXfermode_opts_arm_neon.cpp",
641 "//third_party/skia/src/opts/memset16_neon.S",
642 "//third_party/skia/src/opts/memset32_neon.S",
[email protected]33b56822014-05-20 07:00:44643 ]
644
[email protected]33b56822014-05-20 07:00:44645 # Root build config sets -mfpu=$arm_fpu, which we expect to be neon
646 # when running this.
[email protected]0ac572b2014-07-29 00:20:58647 if (!arm_use_neon) {
648 configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
649 cflags += [
650 "-mfpu=neon"
651 ]
652 }
[email protected]33b56822014-05-20 07:00:44653
654 #ldflags = [
655 # "-march=armv7-a",
656 # "-Wl,--fix-cortex-a8",
657 #]
658 }
[email protected]33b56822014-05-20 07:00:44659 }
660
661 # Non-Neon ARM code.
[email protected]f7bc1442014-07-15 18:22:52662 if (arm_version < 7 || !arm_use_neon) {
[email protected]33b56822014-05-20 07:00:44663 sources += [ "//third_party/skia/src/opts/memset.arm.S" ]
664 }
665
666 if (arm_version < 6) {
667 sources += [
668 "//third_party/skia/src/opts/SkBlitMask_opts_none.cpp",
669 "//third_party/skia/src/opts/SkBlitRow_opts_none.cpp",
[email protected]a29df342014-07-15 19:16:09670 "//third_party/skia/src/opts/SkBlurImage_opts_none.cpp",
671 "//third_party/skia/src/opts/SkMorphology_opts_none.cpp",
672 "//third_party/skia/src/opts/SkTextureCompression_opts_none.cpp",
[email protected]33b56822014-05-20 07:00:44673 "//third_party/skia/src/opts/SkUtils_opts_none.cpp",
674 "//third_party/skia/src/opts/SkXfermode_opts_none.cpp",
[email protected]33b56822014-05-20 07:00:44675 ]
676 } else {
677 # arm version >= 6.
678 sources += [
679 "//third_party/skia/src/opts/SkBlitMask_opts_arm.cpp",
680 "//third_party/skia/src/opts/SkBlitRow_opts_arm.cpp",
681 "//third_party/skia/src/opts/SkBlitRow_opts_arm.h",
682 "//third_party/skia/src/opts/SkBlurImage_opts_arm.cpp",
683 "//third_party/skia/src/opts/SkMorphology_opts_arm.cpp",
[email protected]a29df342014-07-15 19:16:09684 "//third_party/skia/src/opts/SkTextureCompression_opts_arm.cpp",
[email protected]33b56822014-05-20 07:00:44685 "//third_party/skia/src/opts/SkUtils_opts_arm.cpp",
686 "//third_party/skia/src/opts/SkXfermode_opts_none.cpp",
687 ]
688 }
689
[email protected]2528d702014-06-24 17:13:02690 } else if (cpu_arch == "mipsel") {
691 cflags += [ "-fomit-frame-pointer" ]
692 sources = [
693 "//third_party/skia/src/opts/SkBitmapProcState_opts_none.cpp",
694 "//third_party/skia/src/opts/SkBlitMask_opts_none.cpp",
695 "//third_party/skia/src/opts/SkBlitRow_opts_none.cpp",
[email protected]a29df342014-07-15 19:16:09696 "//third_party/skia/src/opts/SkBlurImage_opts_none.cpp",
697 "//third_party/skia/src/opts/SkMorphology_opts_none.cpp",
698 "//third_party/skia/src/opts/SkTextureCompression_opts_none.cpp",
[email protected]2528d702014-06-24 17:13:02699 "//third_party/skia/src/opts/SkUtils_opts_none.cpp",
700 "//third_party/skia/src/opts/SkXfermode_opts_none.cpp",
[email protected]2528d702014-06-24 17:13:02701 ]
[email protected]7867196e52014-04-09 19:55:29702 } else {
[email protected]2528d702014-06-24 17:13:02703 assert(false, "Need to port cpu specific stuff from skia_library_opts.gyp")
[email protected]7867196e52014-04-09 19:55:29704 }
705
fdegans75b3d092014-09-17 18:35:55706 if (is_android && !is_debug) {
707 configs -= [ "//build/config/compiler:optimize" ]
708 configs += [ "//build/config/compiler:optimize_max" ]
709 }
710
[email protected]7867196e52014-04-09 19:55:29711 configs -= [ "//build/config/compiler:chromium_code" ]
712 configs += [
713 ":skia_config",
Cem Kocagilb83a0bd2014-09-22 19:42:37714 ":skia_library_config",
[email protected]7867196e52014-04-09 19:55:29715 "//build/config/compiler:no_chromium_code"
716 ]
717
[email protected]59ff2d42014-04-22 22:25:23718 deps = [
719 "//base",
720 ]
721
brettw9af42622014-09-06 21:21:02722 visibility = [ ":skia" ]
[email protected]7867196e52014-04-09 19:55:29723}