| Index: dart/utils/compiler/build_helper.dart
|
| diff --git a/dart/utils/compiler/build_helper.dart b/dart/utils/compiler/build_helper.dart
|
| index a1a0bacf455e3c4f48acd70fe508e0529893a268..50e70810b62d74097b5aa1ef7ac2a3bca100f4ea 100644
|
| --- a/dart/utils/compiler/build_helper.dart
|
| +++ b/dart/utils/compiler/build_helper.dart
|
| @@ -9,73 +9,61 @@ main() {
|
| List<String> arguments = new Options().arguments;
|
| Uri uri = new Uri(scheme: 'file', path: '${arguments[0]}/');
|
| String dartVmLocation = uri.resolve(arguments[1]).path;
|
| - String productionLauncherLocation = uri.resolve(arguments[2]).path;
|
| - String developerLauncherLocation = uri.resolve(arguments[3]).path;
|
| - String productionLaunch = '#!$dartVmLocation\n';
|
| - String developerLaunch = '#!$dartVmLocation --enable_checked_mode\n';
|
| - String launcherScript = """
|
| + Uri productionLauncher = uri.resolve(arguments[2]);
|
| + Uri developerLauncher = uri.resolve(arguments[3]);
|
| + String launcherScript = buildScript(uri);
|
|
|
| -#import('dart:io');
|
| -
|
| -#import('${uri.resolve('../../frog/file_system_vm.dart').path}', prefix: 'fs');
|
| -#import('${uri.resolve('../../frog/lang.dart').path}', prefix: 'lang');
|
| -#import('${uri.resolve('../../frog/leg/frog_leg.dart').path}', prefix: 'leg');
|
| -
|
| -void main() {
|
| - lang.legCompile = leg.compile;
|
| - try {
|
| -
|
| - List<String> argv = (new Options()).arguments;
|
| + writeScript(productionLauncher,
|
| + ['#!$dartVmLocation\n',
|
| + launcherScript]);
|
| + writeScript(developerLauncher,
|
| + ['#!$dartVmLocation --enable_checked_mode\n',
|
| + launcherScript]);
|
| +}
|
|
|
| - // Infer --out if there is none defined.
|
| - var outFileDefined = false;
|
| - for (var arg in argv) {
|
| - if (arg.startsWith('--out=')) outFileDefined = true;
|
| - }
|
| +writeScript(Uri uri, List<String> chunks) {
|
| + var f = new File(uri.path);
|
| + var stream = f.openSync(FileMode.WRITE);
|
| + for (String chunk in chunks) {
|
| + stream.writeStringSync(chunk);
|
| + }
|
| + stream.closeSync();
|
|
|
| - if (!outFileDefined) {
|
| - argv.insertRange(0, 1, '--out=' + argv[argv.length-1] + '.js');
|
| - }
|
| + // TODO(ahe): Make script executable.
|
| + // TODO(ahe): Also make a .bat file for Windows.
|
| +}
|
|
|
| - // TODO(dgrove) we're simulating node by placing the arguments to frogc
|
| - // starting at index 2.
|
| - argv.insertRange(0, 4, null);
|
| +buildScript(Uri uri) {
|
| + return """
|
|
|
| - argv[2] = '--leg';
|
| - argv[3] = '--libdir=${uri.resolve('../../frog/lib').path}';
|
| +#import('dart:io');
|
|
|
| - // TODO(dgrove) Until we have a way of getting the executable's path, we'll
|
| - // run from '.'
|
| - var homedir = (new File('.')).fullPathSync();
|
| +#import('${uri.resolve('../../utils/compiler/dart2js.dart').path}');
|
|
|
| - if (!lang.compile(homedir, argv, new fs.VMFileSystem())) {
|
| - print('Compilation failed');
|
| - exit(1);
|
| - }
|
| - } catch (var exception, var trace) {
|
| +class Helper {
|
| + void run() {
|
| try {
|
| - print('Internal error: \$exception');
|
| - } catch (var ignored) {
|
| - print('Internal error: error while printing exception');
|
| - }
|
| - try {
|
| - print(trace);
|
| - } finally {
|
| - exit(253);
|
| + List<String> argv =
|
| + ['--library-root=${uri.resolve('../../frog/leg/lib').path}'];
|
| + argv.addAll(new Options().arguments);
|
| + compile(argv);
|
| + } catch (var exception, var trace) {
|
| + try {
|
| + print('Internal error: \$exception');
|
| + } catch (var ignored) {
|
| + print('Internal error: error while printing exception');
|
| + }
|
| + try {
|
| + print(trace);
|
| + } finally {
|
| + exit(253); // 253 is recognized as a crash by our test scripts.
|
| + }
|
| }
|
| }
|
| }
|
| +
|
| +void main() {
|
| + new Helper().run();
|
| +}
|
| """;
|
| - var f = new File(productionLauncherLocation);
|
| - var stream = f.openSync(FileMode.WRITE);
|
| - stream.writeStringSync(productionLaunch);
|
| - stream.writeStringSync(launcherScript);
|
| - stream.closeSync();
|
| - f = new File(developerLauncherLocation);
|
| - stream = f.openSync(FileMode.WRITE);
|
| - stream.writeStringSync(developerLaunch);
|
| - stream.writeStringSync(launcherScript);
|
| - stream.closeSync();
|
| - // TODO(ahe): Make scripts executable.
|
| - // TODO(ahe): Also make .bat files for Windows.
|
| }
|
|
|