Chromium Code Reviews| Index: pkg/compiler/tool/generate_kernel.dart |
| diff --git a/pkg/compiler/tool/generate_kernel.dart b/pkg/compiler/tool/generate_kernel.dart |
| index c6a24b0a0db44869afb876b88e80a77181e67273..6d1f319f33d462d482b08f221d2b8a7a8cf5b6ce 100644 |
| --- a/pkg/compiler/tool/generate_kernel.dart |
| +++ b/pkg/compiler/tool/generate_kernel.dart |
| @@ -8,29 +8,50 @@ |
| // command line. |
| library compiler.tool.generate_kernel; |
| -import 'dart:io' show exitCode; |
| - |
| -import 'package:front_end/src/fasta/compiler_command_line.dart' |
| - show CompilerCommandLine; |
| -import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext; |
| -import 'package:front_end/src/fasta/errors.dart' show InputError; |
| -import 'package:front_end/src/fasta/ticker.dart' show Ticker; |
| -import 'package:compiler/src/kernel/fasta_support.dart' show Dart2jsCompileTask; |
| - |
| -main(List<String> arguments) async { |
| - try { |
| - await CompilerCommandLine.withGlobalOptions("generate_kernel", arguments, |
| - (CompilerContext c) async { |
| - if (c.options.verbose) { |
| - print("Compiling directly to Kernel: ${arguments.join(' ')}"); |
| - } |
| - var task = |
| - new Dart2jsCompileTask(c, new Ticker(isVerbose: c.options.verbose)); |
| - await task.compile(); |
| - }); |
| - } on InputError catch (e) { |
| - exitCode = 1; |
| - print(e.format()); |
| - return null; |
| +import 'dart:io'; |
| + |
| +import 'package:args/args.dart'; |
| +import 'package:compiler/src/kernel/dart2js_target.dart'; |
| +import 'package:front_end/front_end.dart'; |
| +import 'package:front_end/src/fasta/util/relativize.dart'; |
| +import 'package:kernel/kernel.dart'; |
| +import 'package:kernel/target/targets.dart'; |
| + |
| +main(List<String> args) async { |
| + var flags = _argParser.parse(args); |
|
ahe
2017/07/05 13:29:39
A type would be nice here.
Siggi Cherem (dart-lang)
2017/07/05 18:42:07
Done.
|
| + var options = new CompilerOptions() |
| + ..target = new Dart2jsTarget(new TargetFlags()) |
| + ..packagesFileUri = Platform.script.resolve('../../../.packages') |
| + ..linkedDependencies = [Uri.base.resolve(flags['platform'])] |
| + ..onError = errorHandler; |
| + |
| + if (flags.rest.isEmpty) { |
| + var script = relativizeUri(Platform.script); |
| + var platform = relativizeUri(Uri.base.resolve(flags['platform'])); |
| + print('usage: ${Platform.executable} $script ' |
| + '[--platform=$platform] [--out=out.dill] program.dart'); |
| + exit(1); |
| } |
| + |
| + var entryUri = Uri.base.resolve(flags.rest.first); |
|
ahe
2017/07/05 13:29:39
Personally, I strongly prefer:
Uri entry
ove
Siggi Cherem (dart-lang)
2017/07/05 18:42:07
Done, although I'm personally in favor of the latt
|
| + var program = await kernelForProgram(entryUri, options); |
| + program.uriToSource.clear(); |
| + await writeProgramToBinary(program, flags['out']); |
| } |
| + |
| +void errorHandler(CompilationError e) { |
| + exitCode = 1; |
| + print(e.message); |
| +} |
| + |
| +ArgParser _argParser = new ArgParser() |
| + ..addOption('platform', |
| + help: 'location of the precompiled dart2js sdk', |
| + defaultsTo: _defaultPlatform) |
| + ..addOption('out', |
| + abbr: 'o', help: 'output location', defaultsTo: 'out.dill'); |
| + |
| +String _defaultPlatform = Uri |
| + .parse(Platform.resolvedExecutable) |
| + .resolve('patched_dart2js_sdk/platform.dill') |
| + .toString(); |