diff options
Diffstat (limited to 'BUILD.gn')
-rw-r--r-- | BUILD.gn | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/BUILD.gn b/BUILD.gn new file mode 100644 index 0000000000..9af046af6e --- /dev/null +++ b/BUILD.gn @@ -0,0 +1,265 @@ +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("build/config/linux/pkg_config.gni") + +declare_args() { +} + +# Skia public API, generally provided by :skia. +config("skia_public") { + include_dirs = [ + "include/c", + "include/config", + "include/core", + "include/effects", + "include/gpu", + "include/images", + "include/lazy", + "include/pathops", + "include/ports", + "include/utils", + "include/utils/mac", + ] + defines = [ "SKIA_DLL" ] +} + +# Skia internal APIs, used by Skia itself and a few test tools. +config("skia_private") { + visibility = [ ":*" ] + + include_dirs = [ + "include/private", + "src/c", + "src/config", + "src/core", + "src/effects", + "src/gpu", + "src/image", + "src/images", + "src/lazy", + "src/opts", + "src/pathops", + "src/ports", + "src/sfnt", + "src/utils", + "third_party/etc1", + "third_party/ktx", + ] +} + +# Any code that's linked into Skia-the-library should use this config via += skia_library_configs. +config("skia_library") { + visibility = [ ":*" ] + + cflags = [ + "-Winit-self", + "-Wpointer-arith", + "-Wsign-compare", + "-Wvla", + "-fstrict-aliasing", + ] + cflags_cc = [ "-Wnon-virtual-dtor" ] + + defines = [ "SKIA_IMPLEMENTATION=1" ] +} + +skia_library_configs = [ + ":skia_public", + ":skia_private", + ":skia_library", +] + +# Chrome's GN environment is mostly helpful, but a couple default configs tend to get in the way. +unwanted_configs = [ + "//build/config/clang:find_bad_constructs", # Chrome style checks. + "//build/config:feature_flags", # A bunch of #defines we don't care about. +] + +core_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/core.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/core.gypi" ]) + +effects_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/effects.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/effects.gypi" ]) + +gpu_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/gpu.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/gpu.gypi" ]) + +opts_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/opts.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/opts.gypi" ]) + +pdf_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/pdf.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/pdf.gypi" ]) + +utils_gypi = exec_script("build/gypi_to_gn.py", + [ + rebase_path("gyp/utils.gypi"), + "--replace=<(skia_include_path)=include", + "--replace=<(skia_src_path)=src", + ], + "scope", + [ "gyp/utils.gypi" ]) + +source_set("opts_ssse3") { + configs += skia_library_configs + configs -= unwanted_configs + + sources = opts_gypi.ssse3_sources + cflags = [ "-mssse3" ] +} + +source_set("opts_sse41") { + configs += skia_library_configs + configs -= unwanted_configs + + sources = opts_gypi.sse41_sources + cflags = [ "-msse4.1" ] +} + +component("skia") { + public_configs = [ ":skia_public" ] + configs += skia_library_configs + configs -= unwanted_configs + + deps = [ + ":opts_sse41", + ":opts_ssse3", + "third_party:zlib", + ] + + libs = [] + + sources = [] + sources += core_gypi.sources + sources += effects_gypi.sources + sources += gpu_gypi.skgpu_sources + sources += opts_gypi.sse2_sources + sources += pdf_gypi.sources + sources += utils_gypi.sources + sources += [ + "src/images/SkImageEncoder.cpp", + "src/images/SkImageEncoder_Factory.cpp", + "src/ports/SkDiscardableMemory_none.cpp", + "src/ports/SkGlobalInitialization_default.cpp", + "src/ports/SkImageGenerator_none.cpp", + "src/ports/SkMemory_malloc.cpp", + "src/ports/SkOSFile_stdio.cpp", + "src/sfnt/SkOTTable_name.cpp", + "src/sfnt/SkOTUtils.cpp", + "src/utils/mac/SkStream_mac.cpp", + "third_party/etc1/etc1.cpp", + "third_party/ktx/ktx.cpp", + ] + + if (is_win) { + sources += [ + "src/ports/SkDebug_win.cpp", + "src/ports/SkFontHost_win.cpp", + "src/ports/SkFontMgr_win_dw.cpp", + "src/ports/SkFontMgr_win_dw_factory.cpp", + "src/ports/SkImageEncoder_WIC.cpp", + "src/ports/SkImageGeneratorWIC.cpp", + "src/ports/SkOSFile_win.cpp", + "src/ports/SkScalerContext_win_dw.cpp", + "src/ports/SkTLS_win.cpp", + "src/ports/SkTypeface_win_dw.cpp", + ] + } else { + sources += [ + "src/ports/SkDebug_stdio.cpp", + "src/ports/SkOSFile_posix.cpp", + "src/ports/SkTLS_pthread.cpp", + ] + } + + if (is_linux) { + deps += [ + ":fontconfig", + ":freetype2", + "third_party:libjpeg-turbo", + "third_party:libpng", + ] + sources += [ + "src/fonts/SkFontMgr_fontconfig.cpp", + "src/images/SkJPEGImageEncoder.cpp", + "src/images/SkJPEGWriteUtility.cpp", + "src/images/SkPNGImageEncoder.cpp", + "src/ports/SkFontConfigInterface_direct.cpp", + "src/ports/SkFontConfigInterface_direct_factory.cpp", + "src/ports/SkFontHost_FreeType.cpp", + "src/ports/SkFontHost_FreeType_common.cpp", + "src/ports/SkFontHost_fontconfig.cpp", + ] + } + + if (is_mac) { + sources += [ + "src/ports/SkFontHost_mac.cpp", + "src/ports/SkImageEncoder_CG.cpp", + "src/ports/SkImageGeneratorCG.cpp", + ] + libs += [ "ApplicationServices.framework" ] + } +} + +executable("example") { + configs -= unwanted_configs + + sources = [ + "cmake/example.cpp", + ] + deps = [ + ":skia", + ] + + libs = [] + if (is_mac) { + libs += [ "OpenGL.framework" ] + } +} + +pkg_config("system_freetype2") { + packages = [ "freetype2" ] +} +group("freetype2") { + public_configs = [ ":system_freetype2" ] +} + +pkg_config("system_fontconfig") { + packages = [ "fontconfig" ] +} +group("fontconfig") { + public_configs = [ ":system_fontconfig" ] +} |