[web] Expose felt flag for building CanvasKit Chromium (#39201)
diff --git a/lib/web_ui/dev/build.dart b/lib/web_ui/dev/build.dart index 215d59a..459445e 100644 --- a/lib/web_ui/dev/build.dart +++ b/lib/web_ui/dev/build.dart
@@ -28,6 +28,10 @@ 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 ' 'currently needed for `flutter run --local-engine` to work.' @@ -44,13 +48,19 @@ bool get buildCanvasKit => boolArg('build-canvaskit'); + bool get buildCanvasKitChromium => boolArg('build-canvaskit-chromium'); + bool get host => boolArg('host'); @override FutureOr<bool> run() async { final FilePath libPath = FilePath.fromWebUi('lib'); final List<PipelineStep> steps = <PipelineStep>[ - 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 @@ /// 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 @@ '--web', '--runtime-mode=release', if (buildCanvasKit) '--build-canvaskit', + if (buildCanvasKitChromium) '--build-canvaskit-chromium', ]; } }
diff --git a/tools/gn b/tools/gn index 2a4b3b9..b680b83 100755 --- a/tools/gn +++ b/tools/gn
@@ -662,9 +662,7 @@ # 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 @@ -886,6 +884,14 @@ ) 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='', type=str,