Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit b2efe01

Browse files
authored
[web] Expose felt flag for building CanvasKit Chromium (#39201)
1 parent 396c7fd commit b2efe01

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

lib/web_ui/dev/build.dart

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {
2727
'by default.',
2828
defaultsTo: true
2929
);
30+
argParser.addFlag(
31+
'build-canvaskit-chromium',
32+
help: 'Build the Chromium variant of CanvasKit. Disabled by default.',
33+
);
3034
argParser.addFlag(
3135
'host',
3236
help: 'Build the host build instead of the wasm build, which is '
@@ -44,13 +48,19 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {
4448

4549
bool get buildCanvasKit => boolArg('build-canvaskit');
4650

51+
bool get buildCanvasKitChromium => boolArg('build-canvaskit-chromium');
52+
4753
bool get host => boolArg('host');
4854

4955
@override
5056
FutureOr<bool> run() async {
5157
final FilePath libPath = FilePath.fromWebUi('lib');
5258
final List<PipelineStep> steps = <PipelineStep>[
53-
GnPipelineStep(buildCanvasKit: buildCanvasKit, host: host),
59+
GnPipelineStep(
60+
buildCanvasKit: buildCanvasKit,
61+
buildCanvasKitChromium: buildCanvasKitChromium,
62+
host: host,
63+
),
5464
NinjaPipelineStep(target: host ? environment.hostDebugUnoptDir : environment.wasmReleaseOutDir),
5565
];
5666
final Pipeline buildPipeline = Pipeline(steps: steps);
@@ -75,9 +85,14 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {
7585
/// Not safe to interrupt as it may leave the `out/` directory in a corrupted
7686
/// state. GN is pretty quick though, so it's OK to not support interruption.
7787
class GnPipelineStep extends ProcessStep {
78-
GnPipelineStep({required this.buildCanvasKit, required this.host});
88+
GnPipelineStep({
89+
required this.buildCanvasKit,
90+
required this.buildCanvasKitChromium,
91+
required this.host,
92+
});
7993

8094
final bool buildCanvasKit;
95+
final bool buildCanvasKitChromium;
8196
final bool host;
8297

8398
@override
@@ -97,6 +112,7 @@ class GnPipelineStep extends ProcessStep {
97112
'--web',
98113
'--runtime-mode=release',
99114
if (buildCanvasKit) '--build-canvaskit',
115+
if (buildCanvasKitChromium) '--build-canvaskit-chromium',
100116
];
101117
}
102118
}

tools/gn

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,9 +662,7 @@ def to_gn_wasm_args(args, gn_args):
662662
# than forced to true, once the recipes are updated.
663663
# https://github.com/flutter/flutter/issues/113303
664664
gn_args['build_canvaskit'] = True
665-
# TODO(mdebbar): Read this from an input argument.
666-
# https://github.com/flutter/flutter/issues/118744
667-
gn_args['build_canvaskit_chromium'] = False
665+
gn_args['build_canvaskit_chromium'] = args.build_canvaskit_chromium
668666
gn_args['flutter_build_web_sdk'] = True
669667

670668

@@ -885,6 +883,14 @@ def parse_args(args):
885883
'--no-build-canvaskit', dest='build_canvaskit', action='store_false'
886884
)
887885

886+
parser.add_argument(
887+
'--build-canvaskit-chromium',
888+
default=False,
889+
dest='build_canvaskit_chromium',
890+
action='store_true',
891+
help='build the Chromium variant of CanvasKit from sources'
892+
)
893+
888894
parser.add_argument(
889895
'--ide',
890896
default='',

0 commit comments

Comments
 (0)