[dart2wasm] Support --multi-root and --multi-root-scheme flags.

Change-Id: I111748742677073bb3cf4c1655b69cb21d42f546
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274089
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Jackson Gardner <jacksongardner@google.com>
This commit is contained in:
Jackson Gardner 2022-12-08 00:59:23 +00:00 committed by Commit Queue
parent 1edc2ecd3f
commit 00ca59a478
5 changed files with 33 additions and 2 deletions

View file

@ -50,8 +50,12 @@ final List<Option> options = [
StringMultiOption(
"define", (o, values) => o.environment = processEnvironment(values),
abbr: "D"),
StringMultiOption("enable-experiment",
(o, values) => o.feExperimentalFlags = processFeExperimentalFlags(values))
StringMultiOption(
"enable-experiment",
(o, values) =>
o.feExperimentalFlags = processFeExperimentalFlags(values)),
StringOption("multi-root-scheme", (o, value) => o.multiRootScheme = value),
UriMultiOption("multi-root", (o, values) => o.multiRoots = values),
];
Map<fe.ExperimentalFlag, bool> processFeExperimentalFlags(

View file

@ -4,6 +4,11 @@
import 'dart:typed_data';
import 'package:build_integration/file_system/multi_root.dart'
show MultiRootFileSystem;
import 'package:front_end/src/api_prototype/standard_file_system.dart'
show StandardFileSystem;
import 'package:front_end/src/api_unstable/vm.dart'
show
CompilerOptions,
@ -52,6 +57,12 @@ Future<Uint8List?> compileToModule(compiler.CompilerOptions options,
..verbose = false
..onDiagnostic = diagnosticMessageHandler
..nnbdMode = NnbdMode.Strong;
if (options.multiRootScheme != null) {
compilerOptions.fileSystem = new MultiRootFileSystem(
options.multiRootScheme!,
options.multiRoots.isEmpty ? [Uri.base] : options.multiRoots,
StandardFileSystem.instance);
}
if (options.platformPath != null) {
compilerOptions.sdkSummary = options.platformPath;

View file

@ -18,6 +18,8 @@ class CompilerOptions {
String outputFile;
Map<String, String> environment = const {};
Map<fe.ExperimentalFlag, bool> feExperimentalFlags = const {};
String? multiRootScheme;
List<Uri> multiRoots = const [];
factory CompilerOptions.defaultOptions() =>
CompilerOptions(mainUri: Uri(), outputFile: '');

View file

@ -51,6 +51,12 @@ class IntOption extends ValueOption<int> {
defaultsTo: defaultsTo);
}
class StringOption extends ValueOption<String> {
StringOption(String name, void applyToOptions(CompilerOptions o, String v),
{String? defaultsTo})
: super(name, applyToOptions, (v) => v, defaultsTo: defaultsTo);
}
class UriOption extends ValueOption<Uri> {
UriOption(String name, void applyToOptions(CompilerOptions o, Uri v),
{String? defaultsTo})
@ -86,3 +92,10 @@ class StringMultiOption extends MultiValueOption<String> {
: super(name, applyToOptions, (v) => v,
abbr: abbr, defaultsTo: defaultsTo);
}
class UriMultiOption extends MultiValueOption<Uri> {
UriMultiOption(name, void applyToOptions(CompilerOptions o, List<Uri> v),
{Iterable<String>? defaultsTo})
: super(name, applyToOptions, (v) => Uri.file(Directory(v).absolute.path),
defaultsTo: defaultsTo);
}

View file

@ -9,6 +9,7 @@ dependencies:
_fe_analyzer_shared: any
_js_interop_checks: any
args: any
build_integration: any
front_end: any
kernel: any
vm: any