50012bd88e
Change-Id: I5964d330f87949fd214873693204a153d22282a8 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529205 Reviewed-by: Kevin Lubick <kjlubick@google.com> Commit-Queue: Kevin Lubick <kjlubick@google.com>
388 lines
9.5 KiB
Plaintext
388 lines
9.5 KiB
Plaintext
# Copyright 2020 Google Inc.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
import("../../gn/skia.gni")
|
|
import("../../gn/toolchain/wasm.gni")
|
|
import("canvaskit.gni")
|
|
|
|
# These targets depend on components that are only declared if
|
|
# `skia_enable_tools` is true.
|
|
if (skia_enable_tools) {
|
|
component("viewer_wasm") {
|
|
testonly = true
|
|
include_dirs = [ "../.." ]
|
|
sources = [
|
|
"../../modules/svg/src/SkSVGAttribute.cpp",
|
|
"../../modules/svg/src/SkSVGAttributeParser.cpp",
|
|
"../../modules/svg/src/SkSVGCircle.cpp",
|
|
"../../modules/svg/src/SkSVGClipPath.cpp",
|
|
"../../modules/svg/src/SkSVGContainer.cpp",
|
|
"../../modules/svg/src/SkSVGDOM.cpp",
|
|
"../../modules/svg/src/SkSVGEllipse.cpp",
|
|
"../../modules/svg/src/SkSVGFe.cpp",
|
|
"../../modules/svg/src/SkSVGFeColorMatrix.cpp",
|
|
"../../modules/svg/src/SkSVGFeComposite.cpp",
|
|
"../../modules/svg/src/SkSVGFeTurbulence.cpp",
|
|
"../../modules/svg/src/SkSVGFilter.cpp",
|
|
"../../modules/svg/src/SkSVGFilterContext.cpp",
|
|
"../../modules/svg/src/SkSVGGradient.cpp",
|
|
"../../modules/svg/src/SkSVGLine.cpp",
|
|
"../../modules/svg/src/SkSVGLinearGradient.cpp",
|
|
"../../modules/svg/src/SkSVGNode.cpp",
|
|
"../../modules/svg/src/SkSVGPath.cpp",
|
|
"../../modules/svg/src/SkSVGPattern.cpp",
|
|
"../../modules/svg/src/SkSVGPoly.cpp",
|
|
"../../modules/svg/src/SkSVGRadialGradient.cpp",
|
|
"../../modules/svg/src/SkSVGRect.cpp",
|
|
"../../modules/svg/src/SkSVGRenderContext.cpp",
|
|
"../../modules/svg/src/SkSVGSVG.cpp",
|
|
"../../modules/svg/src/SkSVGShape.cpp",
|
|
"../../modules/svg/src/SkSVGStop.cpp",
|
|
"../../modules/svg/src/SkSVGText.cpp",
|
|
"../../modules/svg/src/SkSVGTransformableNode.cpp",
|
|
"../../modules/svg/src/SkSVGUse.cpp",
|
|
"../../modules/svg/src/SkSVGValue.cpp",
|
|
"../../tools/viewer/SKPSlide.cpp",
|
|
"../../tools/viewer/SampleSlide.cpp",
|
|
"../../tools/viewer/SvgSlide.cpp",
|
|
]
|
|
deps = [ "../..:samples" ]
|
|
}
|
|
|
|
component("gm_wasm") {
|
|
testonly = true
|
|
include_dirs = [ "../.." ]
|
|
deps = [
|
|
"../..:hash_and_encode",
|
|
"../..:tool_utils",
|
|
"../../modules/svg:svg",
|
|
]
|
|
}
|
|
}
|
|
|
|
component("debugger") {
|
|
include_dirs = [ "../.." ]
|
|
sources = [
|
|
"../../tools/SkSharingProc.cpp",
|
|
"../../tools/UrlDataManager.cpp",
|
|
"../../tools/debugger/DebugCanvas.cpp",
|
|
"../../tools/debugger/DebugLayerManager.cpp",
|
|
"../../tools/debugger/DrawCommand.cpp",
|
|
"../../tools/debugger/JsonWriteBuffer.cpp",
|
|
]
|
|
}
|
|
|
|
action("create_notomono_cpp") {
|
|
script = "../../tools/embed_resources.py"
|
|
|
|
inputs = [ "fonts/NotoMono-Regular.ttf" ]
|
|
|
|
output_path =
|
|
"$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp"
|
|
|
|
outputs = [ output_path ]
|
|
|
|
args = [
|
|
"--name=SK_EMBEDDED_FONTS",
|
|
"--input",
|
|
rebase_path("fonts/NotoMono-Regular.ttf"),
|
|
"--output",
|
|
rebase_path(output_path),
|
|
"--align=4",
|
|
]
|
|
}
|
|
|
|
skia_wasm_lib("canvaskit") {
|
|
deps = [ "../..:skia" ]
|
|
if (skia_canvaskit_enable_paragraph) {
|
|
deps += [ "../../modules/skparagraph:skparagraph" ]
|
|
}
|
|
if (skia_canvaskit_enable_skottie) {
|
|
deps += [
|
|
"../../modules/skottie:skottie",
|
|
"../../modules/sksg:sksg",
|
|
]
|
|
}
|
|
if (skia_canvaskit_enable_particles) {
|
|
deps += [ "../../modules/particles:particles" ]
|
|
}
|
|
if (skia_canvaskit_enable_skottie || skia_canvaskit_enable_particles) {
|
|
deps += [ "../../modules/skresources:skresources" ]
|
|
}
|
|
if (skia_canvaskit_include_viewer) {
|
|
deps += [ ":viewer_wasm" ]
|
|
}
|
|
if (skia_canvaskit_enable_embedded_font) {
|
|
deps += [ ":create_notomono_cpp" ]
|
|
}
|
|
|
|
sources = [
|
|
"WasmCommon.h",
|
|
"canvaskit_bindings.cpp",
|
|
]
|
|
if (skia_canvaskit_enable_paragraph) {
|
|
sources += [
|
|
"paragraph_bindings.cpp",
|
|
"paragraph_bindings_gen.cpp",
|
|
]
|
|
}
|
|
if (skia_canvaskit_enable_skottie) {
|
|
sources += [
|
|
"../../modules/skottie/utils/SkottieUtils.cpp",
|
|
"skottie_bindings.cpp",
|
|
]
|
|
}
|
|
if (skia_canvaskit_enable_particles) {
|
|
sources += [ "particles_bindings.cpp" ]
|
|
}
|
|
if (skia_canvaskit_enable_skottie || skia_canvaskit_enable_particles) {
|
|
sources += [ "../../modules/skresources/src/SkResources.cpp" ]
|
|
}
|
|
if (skia_canvaskit_include_viewer) {
|
|
sources += [ "viewer_bindings.cpp" ]
|
|
# TODO(kjlubick): remove this
|
|
}
|
|
if (skia_canvaskit_enable_debugger) {
|
|
sources += [ "debugger_bindings.cpp" ]
|
|
deps += [ ":debugger" ]
|
|
}
|
|
if (skia_canvaskit_enable_embedded_font) {
|
|
sources += [
|
|
"$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp",
|
|
]
|
|
}
|
|
|
|
ldflags = []
|
|
if (is_debug) {
|
|
ldflags += [
|
|
"-O0",
|
|
"-sDEMANGLE_SUPPORT=1",
|
|
"-sASSERTIONS=1",
|
|
"-sGL_ASSERTIONS=1",
|
|
"-g3",
|
|
"--source-map-base",
|
|
"/node_modules/canvaskit/bin/",
|
|
"--pre-js",
|
|
rebase_path("debug.js"),
|
|
]
|
|
} else {
|
|
externs_path = rebase_path("externs.js")
|
|
ldflags += [
|
|
"-Oz",
|
|
"--closure=1",
|
|
"--pre-js",
|
|
rebase_path("release.js"),
|
|
"--closure-args=--externs=$externs_path",
|
|
]
|
|
}
|
|
if (skia_canvaskit_profile_build) {
|
|
ldflags += [
|
|
"--profiling-funcs",
|
|
"--closure=0",
|
|
]
|
|
}
|
|
ldflags += [ "-fno-rtti" ]
|
|
|
|
if (skia_enable_gpu) {
|
|
ldflags += [
|
|
"-lGL",
|
|
"--pre-js",
|
|
rebase_path("cpu.js"),
|
|
"--pre-js",
|
|
rebase_path("gpu.js"),
|
|
"-sUSE_WEBGL2=1",
|
|
"-sMAX_WEBGL_VERSION=2",
|
|
]
|
|
} else {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("cpu.js"),
|
|
"-sUSE_WEBGL2=0",
|
|
]
|
|
}
|
|
|
|
ldflags += [
|
|
"-std=c++17",
|
|
"--bind",
|
|
"--no-entry",
|
|
"--pre-js",
|
|
rebase_path("preamble.js"),
|
|
"--pre-js",
|
|
rebase_path("color.js"),
|
|
"--pre-js",
|
|
rebase_path("memory.js"),
|
|
"--pre-js",
|
|
rebase_path("util.js"),
|
|
"--pre-js",
|
|
rebase_path("interface.js"),
|
|
]
|
|
|
|
if (skia_canvaskit_enable_matrix_helper) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("matrix.js"),
|
|
]
|
|
}
|
|
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("paragraph.js"),
|
|
]
|
|
|
|
if (skia_canvaskit_enable_skottie) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("skottie.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_particles) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("particles.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_pathops) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("pathops.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_font) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("font.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_skp_serialization) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("skp.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_rt_shader) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("rt_shader.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_debugger) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("debugger.js"),
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_canvas_bindings) {
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/preamble.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/util.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/color.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/font.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/canvas2dcontext.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/htmlcanvas.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/htmlimage.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/imagedata.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/lineargradient.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/path2d.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/pattern.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/radialgradient.js"),
|
|
"--pre-js",
|
|
rebase_path("htmlcanvas/postamble.js"),
|
|
]
|
|
}
|
|
|
|
ldflags += [
|
|
"--pre-js",
|
|
rebase_path("postamble.js"),
|
|
"-sLLD_REPORT_UNDEFINED",
|
|
"-sALLOW_MEMORY_GROWTH",
|
|
"-sUSE_PTHREADS=0",
|
|
"-sDISABLE_EXCEPTION_CATCHING",
|
|
"-sNODEJS_CATCH_EXIT=0",
|
|
"-sDYNAMIC_EXECUTION=0",
|
|
"-sEXPORT_NAME=CanvasKitInit",
|
|
"-sEXPORTED_FUNCTIONS=[_malloc,_free]",
|
|
"-sFORCE_FILESYSTEM=0",
|
|
"-sFILESYSTEM=0",
|
|
"-sMODULARIZE",
|
|
"-sNO_EXIT_RUNTIME=1",
|
|
"-sINITIAL_MEMORY=128MB",
|
|
"-sWASM",
|
|
"-sSTRICT=1",
|
|
]
|
|
|
|
defines = []
|
|
if (is_debug) {
|
|
defines += [ "SK_DEBUG" ]
|
|
} else {
|
|
defines += [ "SK_RELEASE" ]
|
|
}
|
|
if (!is_debug && !skia_canvaskit_force_tracing) {
|
|
defines += [ "SK_DISABLE_TRACING" ]
|
|
}
|
|
defines += [
|
|
"SK_DISABLE_AAA",
|
|
"SK_FORCE_8_BYTE_ALIGNMENT",
|
|
"EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0",
|
|
"SK_HAS_ANDROID_CODEC",
|
|
"SK_SHAPER_HARFBUZZ_AVAILABLE",
|
|
]
|
|
if (skia_canvaskit_enable_paragraph) {
|
|
defines += [ "CK_INCLUDE_PARAGRAPH" ]
|
|
}
|
|
if (skia_canvaskit_enable_skp_serialization) {
|
|
defines += [ "CK_SERIALIZE_SKP" ]
|
|
}
|
|
if (skia_enable_gpu) {
|
|
defines += [
|
|
"SK_SUPPORT_GPU=1",
|
|
"SK_GL",
|
|
"SK_DISABLE_LEGACY_SHADERCONTEXT",
|
|
]
|
|
} else {
|
|
defines += [
|
|
"SK_SUPPORT_GPU=0",
|
|
"SK_ENABLE_SKSL",
|
|
]
|
|
}
|
|
|
|
if (skia_canvaskit_enable_pathops) {
|
|
defines += [ "CK_INCLUDE_PATHOPS" ]
|
|
}
|
|
if (skia_canvaskit_enable_rt_shader) {
|
|
defines += [ "CK_INCLUDE_RUNTIME_EFFECT" ]
|
|
}
|
|
if (!skia_canvaskit_enable_alias_font) {
|
|
defines += [ "CANVASKIT_NO_ALIAS_FONT" ]
|
|
}
|
|
if (skia_canvaskit_legacy_draw_vertices_blend_mode) {
|
|
# https://github.com/flutter/flutter/issues/98531
|
|
defines += [ "SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER" ]
|
|
}
|
|
if (!skia_canvaskit_enable_font) {
|
|
defines += [ "CK_NO_FONTS" ]
|
|
}
|
|
if (skia_enable_sksl_tracing) {
|
|
defines += [ "SKSL_ENABLE_TRACING" ]
|
|
}
|
|
}
|