blob: 4ee5c9ee1418a6493ea2d345fcf62ce07960bd9e [file] [log] [blame] [edit]
# Copyright 2019 The Flutter 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/toolchain/wasm.gni")
template("skwasm_variant") {
wasm_lib(target_name) {
public_configs = [ "//flutter:config" ]
sources = [
"canvas.cc",
"canvas_text.h",
"contour_measure.cc",
"data.cc",
"export.h",
"filters.cc",
"fonts.cc",
"helpers.h",
"image.cc",
"images.h",
"live_objects.cc",
"live_objects.h",
"paint.cc",
"path.cc",
"picture.cc",
"render_context.h",
"shaders.cc",
"skwasm_support.h",
"string.cc",
"surface.cc",
"text/line_metrics.cc",
"text/paragraph.cc",
"text/paragraph_builder.cc",
"text/paragraph_style.cc",
"text/strut_style.cc",
"text/text_style.cc",
"text/text_types.h",
"vertices.cc",
"wrappers.h",
]
cflags = [ "-mreference-types" ]
ldflags = [
"-std=c++20",
"-lGL",
"-sUSE_WEBGL2=1",
"-sMAX_WEBGL_VERSION=2",
"-sOFFSCREENCANVAS_SUPPORT",
"-sALLOW_MEMORY_GROWTH",
"-sALLOW_TABLE_GROWTH",
"-lexports.js",
"-sEXPORTED_FUNCTIONS=[stackAlloc]",
"-sEXPORTED_RUNTIME_METHODS=[addFunction,wasmExports,wasmMemory,stackAlloc]",
"-sINCOMING_MODULE_JS_API=[instantiateWasm,locateFile,noExitRuntime,mainScriptUrlOrBlob,wasmMemory,wasm,skwasmSingleThreaded]",
"-sUSE_ES6_IMPORT_META=0",
"--js-library",
rebase_path("library_skwasm_support.js"),
]
inputs = [ rebase_path("library_skwasm_support.js") ]
if (invoker.is_heavy) {
sources += [
"animated_image.cc",
"text/paragraph_builder_builtin_icu.cc",
]
} else {
sources += [
"animated_image_stub.cc",
"text/paragraph_builder_client_icu.cc",
]
}
if (invoker.use_impeller) {
sources += [
"canvas_text_impeller.cc",
"images_impeller.cc",
"render_context_impeller.cc",
"shaders_impeller.cc",
]
} else {
sources += [
"canvas_text_skia.cc",
"images_skia.cc",
"render_context_skia.cc",
"shaders_skia.cc",
]
}
if (is_debug) {
ldflags += [
"-sASSERTIONS=1",
"-sGL_ASSERTIONS=1",
]
} else {
ldflags += [ "--closure=1" ]
}
deps = [
"//flutter/display_list",
"//flutter/skia/modules/skparagraph",
"//flutter/skia/modules/skunicode",
]
if (invoker.use_impeller) {
deps += [ "//flutter/impeller" ]
} else {
deps += [ "//flutter/skia" ]
}
}
}
skwasm_variant("skwasm") {
is_heavy = false
use_impeller = false
}
skwasm_variant("skwasm_heavy") {
is_heavy = true
use_impeller = false
}
skwasm_variant("wimp") {
is_heavy = false
use_impeller = true
}