From 9e33b609ff13337c048e7ba111572dd8e18f81eb Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Fri, 27 Jan 2023 10:33:11 -0500 Subject: [PATCH] [web] Expose felt flag for building CanvasKit Chromium --- lib/web_ui/dev/build.dart | 20 ++++++++++++++++++-- tools/gn | 12 +++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/web_ui/dev/build.dart b/lib/web_ui/dev/build.dart index 215d59a2dbf95..459445eaa1ba3 100644 --- a/lib/web_ui/dev/build.dart +++ b/lib/web_ui/dev/build.dart @@ -27,6 +27,10 @@ class BuildCommand extends Command with ArgUtils { 'by default.', defaultsTo: true ); + argParser.addFlag( + 'build-canvaskit-chromium', + help: 'Build the Chromium variant of CanvasKit. Disabled by default.', + ); argParser.addFlag( 'host', help: 'Build the host build instead of the wasm build, which is ' @@ -44,13 +48,19 @@ class BuildCommand extends Command with ArgUtils { bool get buildCanvasKit => boolArg('build-canvaskit'); + bool get buildCanvasKitChromium => boolArg('build-canvaskit-chromium'); + bool get host => boolArg('host'); @override FutureOr run() async { final FilePath libPath = FilePath.fromWebUi('lib'); final List steps = [ - GnPipelineStep(buildCanvasKit: buildCanvasKit, host: host), + GnPipelineStep( + buildCanvasKit: buildCanvasKit, + buildCanvasKitChromium: buildCanvasKitChromium, + host: host, + ), NinjaPipelineStep(target: host ? environment.hostDebugUnoptDir : environment.wasmReleaseOutDir), ]; final Pipeline buildPipeline = Pipeline(steps: steps); @@ -75,9 +85,14 @@ class BuildCommand extends Command with ArgUtils { /// Not safe to interrupt as it may leave the `out/` directory in a corrupted /// state. GN is pretty quick though, so it's OK to not support interruption. class GnPipelineStep extends ProcessStep { - GnPipelineStep({required this.buildCanvasKit, required this.host}); + GnPipelineStep({ + required this.buildCanvasKit, + required this.buildCanvasKitChromium, + required this.host, + }); final bool buildCanvasKit; + final bool buildCanvasKitChromium; final bool host; @override @@ -97,6 +112,7 @@ class GnPipelineStep extends ProcessStep { '--web', '--runtime-mode=release', if (buildCanvasKit) '--build-canvaskit', + if (buildCanvasKitChromium) '--build-canvaskit-chromium', ]; } } diff --git a/tools/gn b/tools/gn index 2a4b3b973faae..b680b838f4e56 100755 --- a/tools/gn +++ b/tools/gn @@ -662,9 +662,7 @@ def to_gn_wasm_args(args, gn_args): # than forced to true, once the recipes are updated. # https://github.com/flutter/flutter/issues/113303 gn_args['build_canvaskit'] = True - # TODO(mdebbar): Read this from an input argument. - # https://github.com/flutter/flutter/issues/118744 - gn_args['build_canvaskit_chromium'] = False + gn_args['build_canvaskit_chromium'] = args.build_canvaskit_chromium gn_args['flutter_build_web_sdk'] = True @@ -885,6 +883,14 @@ def parse_args(args): '--no-build-canvaskit', dest='build_canvaskit', action='store_false' ) + parser.add_argument( + '--build-canvaskit-chromium', + default=False, + dest='build_canvaskit_chromium', + action='store_true', + help='build the Chromium variant of CanvasKit from sources' + ) + parser.add_argument( '--ide', default='',