blob: 782ee659f552871de942884e0e4305d3775d8207 [file] [log] [blame] [edit]
# Copyright 2013 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")
# This toolchain is only to be used by the canvaskit target below.
wasm_toolchain("canvaskit") {
extra_toolchain_args = {
# Include ICU data.
skia_use_icu = true
skia_use_client_icu = false
# Include image codecs.
skia_use_libjpeg_turbo_decode = true
skia_use_libpng_decode = true
skia_use_libwebp_decode = true
# Disable LTO.
enable_lto = false
}
}
copy("canvaskit_group") {
visibility = [ "//flutter/web_sdk:*" ]
public_deps = [ "//flutter/skia/modules/canvaskit(:canvaskit)" ]
sources = [
"$root_out_dir/canvaskit/canvaskit.js",
"$root_out_dir/canvaskit/canvaskit.js.symbols",
"$root_out_dir/canvaskit/canvaskit.wasm",
]
outputs = [ "$root_out_dir/flutter_web_sdk/canvaskit/{{source_file_part}}" ]
}
# This toolchain is only to be used by canvaskit_chromium_group below.
wasm_toolchain("canvaskit_chromium") {
extra_toolchain_args = {
# In Chromium browsers, we can use the browser's APIs to get the necessary
# ICU data.
skia_use_icu = false
skia_use_client_icu = true
skia_icu_bidi_third_party_dir = "//flutter/third_party/canvaskit/icu_bidi"
# TODO(mdebbar): Set these to false once all image decoding can be done
# using the browser's built-in codecs.
# https://github.com/flutter/flutter/issues/122331
# In Chromium browsers, we can use the browser's built-in codecs.
skia_use_libjpeg_turbo_decode = true
skia_use_libpng_decode = true
skia_use_libwebp_decode = true
# Disable LTO.
enable_lto = false
}
}
copy("canvaskit_chromium_group") {
visibility = [ "//flutter/web_sdk:*" ]
public_deps = [ "//flutter/skia/modules/canvaskit(:canvaskit_chromium)" ]
sources = [
"$root_out_dir/canvaskit_chromium/canvaskit.js",
"$root_out_dir/canvaskit_chromium/canvaskit.js.symbols",
"$root_out_dir/canvaskit_chromium/canvaskit.wasm",
]
outputs = [
"$root_out_dir/flutter_web_sdk/canvaskit/chromium/{{source_file_part}}",
]
}
# This toolchain is only to be used by skwasm_group below.
wasm_toolchain("skwasm") {
extra_toolchain_args = {
# In Chromium browsers, we can use the browser's APIs to get the necessary
# ICU data.
skia_use_icu = false
skia_use_client_icu = true
skia_icu_bidi_third_party_dir = "//flutter/third_party/canvaskit/icu_bidi"
skia_use_libjpeg_turbo_decode = false
skia_use_libpng_decode = false
skia_use_libwebp_decode = false
# We use OffscreenCanvas to produce PNG data instead of skia
skia_use_no_png_encode = true
skia_use_libpng_encode = false
# skwasm is multithreaded
wasm_use_pthreads = true
wasm_prioritize_size = true
}
}
copy("skwasm_group") {
visibility = [ "//flutter/web_sdk:*" ]
public_deps = [ "//flutter/lib/web_ui/skwasm(:skwasm)" ]
sources = [
"$root_out_dir/skwasm/skwasm.js",
"$root_out_dir/skwasm/skwasm.js.symbols",
"$root_out_dir/skwasm/skwasm.wasm",
"$root_out_dir/skwasm/skwasm.worker.js",
]
if (is_debug) {
if (!wasm_use_dwarf) {
sources += [ "$root_out_dir/skwasm/skwasm.wasm.map" ]
}
}
outputs = [ "$root_out_dir/flutter_web_sdk/canvaskit/{{source_file_part}}" ]
}