| # 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 |
| } |