blob: 639bba8eeaee460480743c8086b9410a90721075 [file] [log] [blame]
#!/usr/bin/env dart
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'package:dev_compiler/src/kernel/target.dart';
import 'package:front_end/compiler_options.dart';
import 'package:front_end/src/base/processed_options.dart';
import 'package:front_end/src/fasta/compiler_context.dart';
import 'package:front_end/src/fasta/dill/dill_target.dart';
import 'package:front_end/src/fasta/kernel/kernel_target.dart';
import 'package:front_end/src/fasta/kernel/utils.dart';
import 'package:front_end/src/fasta/ticker.dart';
import 'package:path/path.dart' as path;
Future main(List<String> args) {
Directory.current = path.dirname(path.dirname(path.fromUri(Platform.script)));
var target = new DevCompilerTarget();
var options = new ProcessedOptions(
new CompilerOptions()
..compileSdk = true
..packagesFileUri = path.toUri(path.absolute('../../.packages'))
..sdkRoot = path.toUri(path.absolute('tool/input_sdk'))
..target = target,
false,
target.extraRequiredLibraries.map(Uri.parse).toList(),
path.toUri(path.absolute('lib/sdk/ddc_sdk.dill')));
return CompilerContext.runWithOptions(options, (c) async {
var ticker = new Ticker(isVerbose: false);
var uriTranslator = await c.options.getUriTranslator();
var dillTarget = new DillTarget(ticker, uriTranslator, c.options.target);
var kernelTarget = new KernelTarget(
c.fileSystem, false, dillTarget, uriTranslator, c.uriToSource);
for (var input in c.options.inputs) {
kernelTarget.read(input);
}
await dillTarget.buildOutlines();
await kernelTarget.buildOutlines();
if (exitCode != 0) return;
var program = await kernelTarget.buildProgram();
// Useful for debugging:
// printProgramText(program);
await writeProgramToFile(program, c.options.output);
});
}