| 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"
|
| +}
|
|
|