Index: skia/BUILD.gn |
diff --git a/skia/BUILD.gn b/skia/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7dc5f22bd4cb0aadcfbe9ab81ea0842aaa09fdb6 |
--- /dev/null |
+++ b/skia/BUILD.gn |
@@ -0,0 +1,368 @@ |
+# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import("//build/config/features.gni") |
+if (cpu_arch == "arm") { |
+ import("//build/config/arm.gni") |
+} |
+ |
+skia_support_gpu = !is_ios |
+skia_support_pdf = !is_ios && enable_printing != 0 |
+ |
+# The list of Skia files is kept in skia_gn_files.gypi. Read it. |
+gypi_values = exec_script("//build/gypi_to_gn.py", |
+ [ rebase_path("skia_gn_files.gypi") ], |
+ "scope", |
+ [ "skia_gn_files.gypi" ]) |
+ |
+# This files in the skia gypi file are relative to this directory. |
+skia_dir = "//third_party/skia" |
+ |
+# Same as skia_dir but relative to the current directory. This is what all |
+# files will be prefixed to once we rebase them to be relative to our file. If |
+# you need to filter out a file, prefix it with $skia_rel_dir. |
+skia_rel_dir = rebase_path(".", ".", skia_dir) |
+ |
+# External-facing config for dependent code. |
+config("skia_config") { |
+ include_dirs = [ |
+ "config", |
+ "ext", |
+ "//third_party/skia/include/config", |
+ "//third_party/skia/include/core", |
+ "//third_party/skia/include/effects", |
+ "//third_party/skia/include/images", |
+ "//third_party/skia/include/lazy", |
+ "//third_party/skia/include/pathops", |
+ "//third_party/skia/include/pdf", |
+ "//third_party/skia/include/pipe", |
+ "//third_party/skia/include/ports", |
+ "//third_party/skia/include/utils", |
+ "//third_party/skia/src/core", |
+ "//third_party/skia/src/image", |
+ "//third_party/skia/src/opts", |
+ "//third_party/skia/src/ports", |
+ "//third_party/skia/src/sfnt", |
+ "//third_party/skia/src/utils", |
+ "//third_party/skia/src/lazy", |
+ ] |
+ |
+ defines = gypi_values.skia_feature_defines |
+ |
+ if (component_mode == "shared_library") { |
+ defines += [ "SKIA_DLL" ] |
+ } |
+ |
+ if (skia_support_gpu) { |
+ include_dirs += [ |
+ "//third_party/skia/include/gpu", |
+ "//third_party/skia/src/gpu", |
+ ] |
+ defines += [ "SK_SUPPORT_GPU=1" ] |
+ } else { |
+ defines += [ "SK_SUPPORT_GPU=0" ] |
+ } |
+ |
+ # For POSIX platforms, prefer the Mutex implementation provided by Skia |
+ # since it does not generate static initializers. |
+ if (is_posix) { |
+ defines += [ "SK_USE_POSIX_THREADS" ] |
+ } |
+ |
+ if (is_android) { |
+ defines += [ |
+ "SK_BUILD_FOR_ANDROID", |
+ "USE_CHROMIUM_SKIA", |
+ ] |
+ } |
+} |
+ |
+config("skia_dependent_config") { |
+} |
+ |
+# Internal-facing config for Skia library code. |
+config("skia_library_config") { |
+ defines = [ |
+ #skia_export_defines ???) TODO |
+ |
+ # skia uses static initializers to initialize the serialization logic |
+ # of its "pictures" library. This is currently not used in chrome; if |
+ # it ever gets used the processes that use it need to call |
+ # SkGraphics::Init(). |
+ "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0", |
+ |
+ # Disable this check because it is too strict for some Chromium-specific |
+ # subclasses of SkPixelRef. See bug: crbug.com/171776. |
+ "SK_DISABLE_PIXELREF_LOCKCOUNT_BALANCE_CHECK", |
+ |
+ "IGNORE_ROT_AA_RECT_OPT", |
+ |
+ # Forces Skia not to use typographic metrics with GDI. |
+ "SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS", |
+ ] |
+ |
+ # Settings for text blitting, chosen to approximate the system browser. |
+ if (is_linux) { |
+ defines += [ |
+ "SK_GAMMA_EXPONENT=1.2", |
+ "SK_GAMMA_CONTRAST=0.2", |
+ ] |
+ } else if (is_android) { |
+ defines += [ |
+ "SK_GAMMA_APPLY_TO_A8", |
+ "SK_GAMMA_EXPONENT=1.4", |
+ "SK_GAMMA_CONTRAST=0.0", |
+ ] |
+ } else if (is_win) { |
+ defines += [ |
+ "SK_GAMMA_SRGB", |
+ "SK_GAMMA_CONTRAST=0.5", |
+ ] |
+ } else if (is_mac) { |
+ defines += [ |
+ "SK_GAMMA_SRGB", |
+ "SK_GAMMA_CONTRAST=0.0", |
+ ] |
+ } |
+ |
+ if (is_android) { |
+ defines += [ |
+ # Android devices are typically more memory constrained, so default to a |
+ # smaller glyph cache (it may be overriden at runtime when the renderer |
+ # starts up, depending on the actual device memory). |
+ "SK_DEFAULT_FONT_CACHE_LIMIT=1048576" # 1024 * 1024 |
+ ] |
+ } else { |
+ defines += [ "SK_DEFAULT_FONT_CACHE_LIMIT=20971520" ] # 20 * 1024 * 1024 |
+ } |
+ |
+ if (is_win) { |
+ include_dirs = [ |
+ "//third_party/skia/include/utils/win", |
+ "//third_party/skia/src/utils/win", |
+ ] |
+ |
+ defines += [ "SK_FONTHOST_USES_FONTMGR" ] |
+ |
+ cflags = [ |
+ # TODO(brettw) comment what these are. |
+ "/wd4244", |
+ "/wd4267", |
+ "/wd4341", |
+ "/wd4345", |
+ "/wd4390", |
+ "/wd4554", |
+ "/wd4748", |
+ "/wd4800", |
+ ] |
+ } |
+} |
+ |
+component("skia") { |
+ sources = [ |
+ # Chrome sources. |
+ "ext/analysis_canvas.cc", |
+ "ext/analysis_canvas.h", |
+ "ext/benchmarking_canvas.cc", |
+ "ext/benchmarking_canvas.h", |
+ "ext/bitmap_platform_device.h", |
+ "ext/bitmap_platform_device_cairo.cc", |
+ "ext/bitmap_platform_device_cairo.h", |
+ "ext/bitmap_platform_device_mac.cc", |
+ "ext/bitmap_platform_device_mac.h", |
+ #"ext/bitmap_platform_device_skia.cc", |
+ #"ext/bitmap_platform_device_skia.h", |
+ "ext/bitmap_platform_device_win.cc", |
+ "ext/bitmap_platform_device_win.h", |
+ "ext/convolver.cc", |
+ "ext/convolver.h", |
+ "ext/event_tracer_impl.cc", |
+ "ext/event_tracer_impl.h", |
+ "ext/google_logging.cc", |
+ "ext/image_operations.cc", |
+ "ext/image_operations.h", |
+ "ext/lazy_pixel_ref.cc", |
+ "ext/lazy_pixel_ref.h", |
+ "ext/SkThread_chrome.cc", |
+ "ext/opacity_draw_filter.cc", |
+ "ext/opacity_draw_filter.h", |
+ "ext/paint_simplifier.cc", |
+ "ext/paint_simplifier.h", |
+ "ext/pixel_ref_utils.cc", |
+ "ext/pixel_ref_utils.h", |
+ "ext/platform_canvas.cc", |
+ "ext/platform_canvas.h", |
+ "ext/platform_device.cc", |
+ "ext/platform_device.h", |
+ "ext/platform_device_linux.cc", |
+ "ext/platform_device_mac.cc", |
+ "ext/platform_device_win.cc", |
+ "ext/recursive_gaussian_convolution.cc", |
+ "ext/recursive_gaussian_convolution.h", |
+ "ext/refptr.h", |
+ "ext/SkDiscardableMemory_chrome.h", |
+ "ext/SkDiscardableMemory_chrome.cc", |
+ "ext/SkMemory_new_handler.cpp", |
+ "ext/skia_trace_shim.h", |
+ "ext/skia_utils_base.cc", |
+ "ext/skia_utils_base.h", |
+ "ext/skia_utils_ios.mm", |
+ "ext/skia_utils_ios.h", |
+ "ext/skia_utils_mac.mm", |
+ "ext/skia_utils_mac.h", |
+ "ext/skia_utils_win.cc", |
+ "ext/skia_utils_win.h", |
+ "ext/vector_canvas.h", |
+ "ext/vector_platform_device_emf_win.cc", |
+ "ext/vector_platform_device_emf_win.h", |
+ "ext/vector_platform_device_skia.cc", |
+ "ext/vector_platform_device_skia.h", |
+ ] |
+ |
+ # The skia gypi values are relative to the skia_dir, so we need to rebase. |
+ sources += rebase_path(gypi_values.skia_core_sources, ".", skia_dir) |
+ sources += rebase_path(gypi_values.skia_effects_sources, ".", skia_dir) |
+ sources += rebase_path(gypi_values.skia_pdf_sources, ".", skia_dir) |
+ sources += rebase_path(gypi_values.skia_library_sources, ".", skia_dir) |
+ |
+ # GPU |
+ if (skia_support_gpu) { |
+ sources += rebase_path(gypi_values.skia_gpu_sources, ".", skia_dir) |
+ } |
+ |
+ # Fixup Chrome sources. |
+ if (is_posix) { |
+ sources -= [ "ext/SkThread_chrome.cc" ] |
+ } |
+ if (is_ios) { |
+ sources -= [ "ext/vector_platform_device_skia.cc" ] |
+ } |
+ if (is_win) { |
+ sources -= [ "ext/SkThread_chrome.cc" ] |
+ } |
+ if (is_android && enable_printing == 0) { |
+ sources -= [ |
+ "ext/skia_utils_base.cc", |
+ "ext/vector_platform_device_skia.cc" |
+ ] |
+ } |
+ |
+ # Fixup skia library sources. |
+ if (is_win) { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkOSFile_posix.cpp", |
+ "$skia_rel_dir/src/ports/SkTime_Unix.cpp", |
+ "$skia_rel_dir/src/ports/SkTLS_pthread.cpp", |
+ "$skia_rel_dir/src/ports/SkFontConfigInterface_direct.cpp", |
+ "$skia_rel_dir/src/fonts/SkFontMgr_fontconfig.cpp", |
+ ] |
+ } else { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkFontHost_win.cpp", |
+ "$skia_rel_dir/src/ports/SkFontHost_win_dw.cpp", |
+ "$skia_rel_dir/src/ports/SkFontMgr_default_gdi.cpp", |
+ "$skia_rel_dir/src/ports/SkOSFile_win.cpp", |
+ "$skia_rel_dir/src/ports/SkThread_win.cpp", |
+ "$skia_rel_dir/src/ports/SkTLS_win.cpp", |
+ "$skia_rel_dir/src/utils/SkThreadUtils_win.cpp", |
+ ] |
+ } |
+ if (!is_android) { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkFontConfigInterface_android.cpp", |
+ "$skia_rel_dir/src/ports/SkFontConfigParser_android.cpp", |
+ ] |
+ } |
+ if (!is_mac) { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkFontHost_mac.cpp", |
+ "$skia_rel_dir/src/utils/SkThreadUtils_pthread_mach.cpp", |
+ ] |
+ } |
+ if (!is_linux) { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkFontHost_FreeType.cpp", |
+ "$skia_rel_dir/src/ports/SkFontHost_FreeType_common.cpp", |
+ "$skia_rel_dir/src/ports/SkFontHost_fontconfig.cpp", |
+ "$skia_rel_dir/src/ports/SkFontHost_linux.cpp", |
+ ] |
+ } else if (!is_android) { |
+ sources -= [ |
+ "$skia_rel_dir/src/ports/SkFontConfigInterface_direct.cpp", |
+ "$skia_rel_dir/src/fonts/SkFontMgr_fontconfig.cpp", |
+ ] |
+ } |
+ |
+ configs -= [ "//build/config/compiler:chromium_code" ] |
+ configs += [ |
+ ":skia_library_config", |
+ "//build/config/compiler:no_chromium_code" |
+ ] |
+ direct_dependent_configs = [ ":skia_config" ] |
+ |
+ deps = [ |
+ ":skia_opts", |
+ "//base", |
+ "//base/third_party/dynamic_annotations", |
+ "//third_party/zlib", |
+ ] |
+ |
+ if (component_mode == "shared_library") { |
+ defines = [ "SKIA_IMPLEMENTATION=1" ] |
+ } |
+ |
+ if (is_linux) { |
+ configs += [ |
+ "//build/config/linux:fontconfig", |
+ "//build/config/linux:freetype2", |
+ "//build/config/linux:pangocairo", |
+ ] |
+ deps += [ |
+ "//third_party/icu:icuuc", |
+ ] |
+ } |
+ |
+ if (skia_support_pdf) { |
+ deps += [ "//third_party/sfntly" ] |
+ } |
+} |
+ |
+# Separated out so it can be compiled with different flags for SSE. |
+source_set("skia_opts") { |
+ if (cpu_arch == "x86" || cpu_arch == "x64") { |
+ sources = [ |
+ # SSE 2 |
+ "//third_party/skia/src/opts/opts_check_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkBitmapFilter_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkBlitRect_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkBlitRow_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkBlurImage_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkMorphology_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkUtils_opts_SSE2.cpp", |
+ "//third_party/skia/src/opts/SkXfermode_opts_none.cpp", |
+ |
+ # SSE 3 |
+ "//third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp", |
+ |
+ # Chrome-specific. |
+ "ext/convolver_SSE2.cc", |
+ ] |
+ |
+ if (is_linux || is_mac) { |
+ cflags = [ "-mssse3" ] # Note third 's'. |
+ } |
+ } else { |
+ assert(false, "Need to port ARM/MIPS stuff from skia_library_opts.gyp") |
+ } |
+ |
+ configs -= [ "//build/config/compiler:chromium_code" ] |
+ configs += [ |
+ ":skia_config", |
+ "//build/config/compiler:no_chromium_code" |
+ ] |
+ |
+ # TODO(brettw) uncomment when visibility is supported. |
+ #visibility = ":skia" |
+} |