Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions lib/web_ui/dev/build.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {
'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 '
Expand All @@ -44,13 +48,19 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {

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);
Expand All @@ -75,9 +85,14 @@ class BuildCommand extends Command<bool> with ArgUtils<bool> {
/// 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
Expand All @@ -97,6 +112,7 @@ class GnPipelineStep extends ProcessStep {
'--web',
'--runtime-mode=release',
if (buildCanvasKit) '--build-canvaskit',
if (buildCanvasKitChromium) '--build-canvaskit-chromium',
];
}
}
Expand Down
12 changes: 9 additions & 3 deletions tools/gn
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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='',
Expand Down