From 236575b55b3cdc6c45c2bfd7333d54a95a0654f0 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Tue, 6 Sep 2022 15:21:18 -0700 Subject: [PATCH 1/6] Override the WASM toolchain to use CanvasKit-specific args --- build/toolchain/gcc_toolchain.gni | 20 ++++++----- build/toolchain/wasm/BUILD.gn | 59 +++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 10 deletions(-) diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni index 87aedbe739..5543744f10 100644 --- a/build/toolchain/gcc_toolchain.gni +++ b/build/toolchain/gcc_toolchain.gni @@ -280,16 +280,20 @@ template("gcc_toolchain") { # When invoking this toolchain not as the default one, these args will be # passed to the build. They are ignored when this is the default toolchain. - toolchain_args = { - current_cpu = invoker.toolchain_cpu - current_os = invoker.toolchain_os + if (defined(invoker.toolchain_args)) { + toolchain_args = invoker.toolchain_args + } else { + toolchain_args = { + current_cpu = invoker.toolchain_cpu + current_os = invoker.toolchain_os - # These values need to be passed through unchanged. - target_os = target_os - target_cpu = target_cpu + # These values need to be passed through unchanged. + target_os = target_os + target_cpu = target_cpu - if (defined(invoker.is_clang)) { - is_clang = invoker.is_clang + if (defined(invoker.is_clang)) { + is_clang = invoker.is_clang + } } } diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index e11b5687da..e66b120833 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -29,7 +29,62 @@ gcc_toolchain("wasm") { toolchain_cpu = "wasm" toolchain_os = "wasm" - is_clang = true - link_outputs = [ "{{root_out_dir}}/{{target_output_name}}.wasm" ] + + toolchain_args = { + is_clang = true + target_os = target_os + target_cpu = target_cpu + current_cpu = toolchain_cpu + current_os = toolchain_os + skia_use_angle = false + skia_use_dng_sdk = false + skia_use_dawn = false + skia_use_webgl = true + skia_use_webgpu = false + skia_use_expat = false + skia_use_fontconfig = false + skia_use_freetype = true + skia_use_libheif = false + skia_use_libjpeg_turbo_decode = true + skia_use_libjpeg_turbo_encode = false + skia_use_libpng_decode = true + skia_use_libpng_encode = true + skia_use_libwebp_decode = true + skia_use_libwebp_encode = false + skia_use_lua = false + skia_use_piex = false + skia_use_vulkan = false + skia_use_wuffs = true + skia_use_zlib = true + skia_enable_gpu = true + skia_build_for_debugger = false + skia_enable_sksl_tracing = false + skia_use_icu = true + skia_use_harfbuzz = true + skia_enable_fontmgr_custom_directory = false + skia_enable_fontmgr_custom_embedded = true + skia_enable_fontmgr_custom_empty = false + skia_enable_skshaper = true + skia_enable_skparagraph = true + skia_enable_pdf = false + skia_canvaskit_force_tracing = false + skia_canvaskit_enable_skp_serialization = true + skia_canvaskit_enable_effects_deserialization = false + skia_canvaskit_enable_skottie = false + skia_canvaskit_include_viewer = false + skia_canvaskit_enable_particles = false + skia_canvaskit_enable_pathops= true + skia_canvaskit_enable_rt_shader = true + skia_canvaskit_enable_matrix_helper = false + skia_canvaskit_enable_canvas_bindings = false + skia_canvaskit_enable_font = true + skia_canvaskit_enable_embedded_font = true + skia_canvaskit_enable_alias_font = true + skia_canvaskit_legacy_draw_vertices_blend_mode = false + skia_canvaskit_enable_debugger = false + skia_canvaskit_enable_paragraph = true + skia_canvaskit_enable_webgl = true + skia_canvaskit_enable_webgpu = false + } } From 6dca5e7d561d80ee901790257bd1ee6b3bc41a9b Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 7 Sep 2022 11:15:27 -0700 Subject: [PATCH 2/6] Refactor to use `extra_toolchain_args` instead --- build/toolchain/gcc_toolchain.gni | 25 +++++++++++++------------ build/toolchain/wasm/BUILD.gn | 9 +++------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni index 5543744f10..72daa088c5 100644 --- a/build/toolchain/gcc_toolchain.gni +++ b/build/toolchain/gcc_toolchain.gni @@ -280,23 +280,24 @@ template("gcc_toolchain") { # When invoking this toolchain not as the default one, these args will be # passed to the build. They are ignored when this is the default toolchain. - if (defined(invoker.toolchain_args)) { - toolchain_args = invoker.toolchain_args - } else { - toolchain_args = { - current_cpu = invoker.toolchain_cpu - current_os = invoker.toolchain_os + toolchain_args = { + current_cpu = invoker.toolchain_cpu + current_os = invoker.toolchain_os - # These values need to be passed through unchanged. - target_os = target_os - target_cpu = target_cpu + # These values need to be passed through unchanged. + target_os = target_os + target_cpu = target_cpu - if (defined(invoker.is_clang)) { - is_clang = invoker.is_clang - } + if (defined(invoker.is_clang)) { + is_clang = invoker.is_clang + } + + if (defined(invoker.extra_toolchain_args)) { + forward_variables_from(invoker.extra_toolchain_args, "*") } } + if (defined(invoker.deps)) { deps = invoker.deps } diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index e66b120833..d3fe8119b3 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -26,17 +26,14 @@ gcc_toolchain("wasm") { readelf = "readelf" nm = "nm" + is_clang = true + toolchain_cpu = "wasm" toolchain_os = "wasm" link_outputs = [ "{{root_out_dir}}/{{target_output_name}}.wasm" ] - toolchain_args = { - is_clang = true - target_os = target_os - target_cpu = target_cpu - current_cpu = toolchain_cpu - current_os = toolchain_os + extra_toolchain_args = { skia_use_angle = false skia_use_dng_sdk = false skia_use_dawn = false From 27cf07f135dc35e7e52e67942ae6ddbc2fc03046 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 7 Sep 2022 11:19:56 -0700 Subject: [PATCH 3/6] Remove extraneous changes --- build/toolchain/gcc_toolchain.gni | 1 - build/toolchain/wasm/BUILD.gn | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni index 72daa088c5..d0922eac68 100644 --- a/build/toolchain/gcc_toolchain.gni +++ b/build/toolchain/gcc_toolchain.gni @@ -297,7 +297,6 @@ template("gcc_toolchain") { } } - if (defined(invoker.deps)) { deps = invoker.deps } diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index d3fe8119b3..8965716e24 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -26,11 +26,11 @@ gcc_toolchain("wasm") { readelf = "readelf" nm = "nm" - is_clang = true - toolchain_cpu = "wasm" toolchain_os = "wasm" + is_clang = true + link_outputs = [ "{{root_out_dir}}/{{target_output_name}}.wasm" ] extra_toolchain_args = { From bd693c8100f970a2089829ee65b071c42df4da7b Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 7 Sep 2022 12:51:05 -0700 Subject: [PATCH 4/6] Rename to wasm_for_canvaskit and add comment --- build/toolchain/wasm/BUILD.gn | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index 8965716e24..759dde04f9 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -17,7 +17,10 @@ if (use_goma) { compiler_prefix = "" } -gcc_toolchain("wasm") { +# This toolchain is specifically for building CanvasKit. +# +# It overrides many Skia args in order to facilitate building CanvasKit. +gcc_toolchain("wasm_for_canvaskit") { # emsdk_dir and em_config are defined in wasm.gni. ar = "$compiler_prefix$emsdk_dir/upstream/emscripten/emar --em-config $em_config_path" cc = "$compiler_prefix$emsdk_dir/upstream/emscripten/emcc --em-config $em_config_path" From 09c2cf7d351e144017dbfa82e16c06711f638e19 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 7 Sep 2022 14:46:35 -0700 Subject: [PATCH 5/6] Narrow down args --- build/toolchain/wasm/BUILD.gn | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index 759dde04f9..157127707e 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -37,14 +37,7 @@ gcc_toolchain("wasm_for_canvaskit") { link_outputs = [ "{{root_out_dir}}/{{target_output_name}}.wasm" ] extra_toolchain_args = { - skia_use_angle = false - skia_use_dng_sdk = false - skia_use_dawn = false - skia_use_webgl = true skia_use_webgpu = false - skia_use_expat = false - skia_use_fontconfig = false - skia_use_freetype = true skia_use_libheif = false skia_use_libjpeg_turbo_decode = true skia_use_libjpeg_turbo_encode = false @@ -53,12 +46,9 @@ gcc_toolchain("wasm_for_canvaskit") { skia_use_libwebp_decode = true skia_use_libwebp_encode = false skia_use_lua = false - skia_use_piex = false - skia_use_vulkan = false skia_use_wuffs = true skia_use_zlib = true skia_enable_gpu = true - skia_build_for_debugger = false skia_enable_sksl_tracing = false skia_use_icu = true skia_use_harfbuzz = true @@ -67,14 +57,13 @@ gcc_toolchain("wasm_for_canvaskit") { skia_enable_fontmgr_custom_empty = false skia_enable_skshaper = true skia_enable_skparagraph = true - skia_enable_pdf = false skia_canvaskit_force_tracing = false skia_canvaskit_enable_skp_serialization = true skia_canvaskit_enable_effects_deserialization = false skia_canvaskit_enable_skottie = false skia_canvaskit_include_viewer = false skia_canvaskit_enable_particles = false - skia_canvaskit_enable_pathops= true + skia_canvaskit_enable_pathops = true skia_canvaskit_enable_rt_shader = true skia_canvaskit_enable_matrix_helper = false skia_canvaskit_enable_canvas_bindings = false From bdb087b482c9d7ac61894445678d49c9a7f1e66a Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 12 Sep 2022 12:42:47 -0700 Subject: [PATCH 6/6] Fix build with some more arguments --- build/toolchain/wasm/BUILD.gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/toolchain/wasm/BUILD.gn b/build/toolchain/wasm/BUILD.gn index 157127707e..503c09d2de 100644 --- a/build/toolchain/wasm/BUILD.gn +++ b/build/toolchain/wasm/BUILD.gn @@ -37,6 +37,7 @@ gcc_toolchain("wasm_for_canvaskit") { link_outputs = [ "{{root_out_dir}}/{{target_output_name}}.wasm" ] extra_toolchain_args = { + skia_use_vulkan = false skia_use_webgpu = false skia_use_libheif = false skia_use_libjpeg_turbo_decode = true @@ -48,6 +49,7 @@ gcc_toolchain("wasm_for_canvaskit") { skia_use_lua = false skia_use_wuffs = true skia_use_zlib = true + skia_gl_standard = "webgl" skia_enable_gpu = true skia_enable_sksl_tracing = false skia_use_icu = true