aboutsummaryrefslogtreecommitdiffhomepage
path: root/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'BUILD.gn')
-rw-r--r--BUILD.gn265
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" ]
+}