Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: dart/utils/compiler/build_helper.dart

Issue 10207010: Make dart2js work on Windows. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address review comments Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « dart/lib/compiler/implementation/util/uri_extras.dart ('k') | dart/utils/compiler/compiler.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #import('dart:io'); 5 #import('dart:io');
6 #import('dart:uri'); 6 #import('dart:uri');
7 7
8 #import('../../lib/compiler/implementation/util/uri_extras.dart');
9 #import('../../lib/compiler/implementation/filenames.dart');
10
8 main() { 11 main() {
9 List<String> arguments = new Options().arguments; 12 List<String> arguments = new Options().arguments;
10 Uri uri = new Uri(scheme: 'file', path: '${arguments[0]}/'); 13 Uri cwd = getCurrentDirectory();
11 String dartVmLocation = uri.resolve(arguments[1]).path; 14 String productDir = appendSlash(nativeToUriPath(arguments[0]));
12 Uri productionLauncher = uri.resolve(arguments[2]); 15 String dartVmPath = nativeToUriPath(arguments[1]);
13 Uri developerLauncher = uri.resolve(arguments[3]); 16 String productionName = nativeToUriPath(arguments[2]);
14 String launcherScript = buildScript(uri); 17 String developerName = nativeToUriPath(arguments[3]);
18 String dartDir = appendSlash(nativeToUriPath(arguments[4]));
15 19
16 writeScript(productionLauncher, 20 Uri dartUri = cwd.resolve(dartDir);
17 ['#!$dartVmLocation\n', 21 Uri productUri = cwd.resolve(productDir);
18 launcherScript]); 22
19 writeScript(developerLauncher, 23 Uri dartVmUri = productUri.resolve(dartVmPath);
20 ['#!$dartVmLocation --enable_checked_mode\n', 24 Uri productionUri = productUri.resolve(arguments[2]);
21 launcherScript]); 25 Uri developerUri = productUri.resolve(arguments[3]);
26 String productionScript = buildScript(dartUri, dartVmUri, '');
27 String developerScript = buildScript(dartUri, dartVmUri,
28 ' --enable_checked_mode');
29
30 writeScript(productionUri, productionScript);
31 writeScript(developerUri, developerScript);
22 } 32 }
23 33
24 writeScript(Uri uri, List<String> chunks) { 34 writeScript(Uri uri, String script) {
25 var f = new File(uri.path); 35 var f = new File(uriPathToNative(uri.path));
26 var stream = f.openSync(FileMode.WRITE); 36 var stream = f.openSync(FileMode.WRITE);
27 for (String chunk in chunks) { 37 try {
28 stream.writeStringSync(chunk); 38 stream.writeStringSync(script);
39 } finally {
40 stream.closeSync();
29 } 41 }
30 stream.closeSync();
31 42
32 // TODO(ahe): Also make a .bat file for Windows. 43 // TODO(ahe): Also make a .bat file for Windows.
33 44
34 if (Platform.operatingSystem() != 'windows') { 45 if (Platform.operatingSystem() != 'windows') {
35 onExit(int exitCode, String stdout, String stderr) { 46 onExit(int exitCode, String stdout, String stderr) {
36 if (exitCode != 0) { 47 if (exitCode != 0) {
37 print(stdout); 48 print(stdout);
38 print(stderr); 49 print(stderr);
39 exit(exitCode); 50 exit(exitCode);
40 } 51 }
41 } 52 }
42 new Process.run('/bin/chmod', ['+x', uri.path], null, onExit); 53 new Process.run('/bin/chmod', ['+x', uri.path], null, onExit);
43 } 54 }
44 } 55 }
45 56
46 buildScript(Uri uri) { 57 buildScript(Uri dartUri, Uri dartVmLocation, String options) {
47 String dart2jsPath = 58 Uri dart2jsUri = dartUri.resolve('lib/compiler/implementation/dart2js.dart');
48 uri.resolve('../../lib/compiler/implementation/dart2js.dart').path; 59 String dart2jsPath = relativize(dartVmLocation, dart2jsUri);
49 String libraryRoot = uri.resolve('../../').path; 60 String libraryRoot = relativize(dartVmLocation, dartUri);
61 libraryRoot = uriPathToNative('/../$libraryRoot');
62
63 print('dartUri = $dartUri');
64 print('dartVmLocation = $dartVmLocation');
65 print('dart2jsUri = $dart2jsUri');
66 print('dart2jsPath = $dart2jsPath');
67 print('libraryRoot = $libraryRoot');
68
50 return """ 69 return """
70 #!${dartVmLocation.path}$options
51 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 71 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
52 // for details. All rights reserved. Use of this source code is governed by a 72 // for details. All rights reserved. Use of this source code is governed by a
53 // BSD-style license that can be found in the LICENSE file. 73 // BSD-style license that can be found in the LICENSE file.
54 74
55 #import('dart:io'); 75 #import('dart:io');
56 76
57 #import('$dart2jsPath'); 77 #import('$dart2jsPath');
58 78
59 class Helper { 79 void main() {
60 void run() { 80 try {
81 String libraryRoot = @'$libraryRoot';
82 String script = new Options().script;
83 List<String> argv = ['--library-root=\$script\$libraryRoot'];
84 argv.addAll(new Options().arguments);
85 compile(argv);
86 } catch (var exception, var trace) {
61 try { 87 try {
62 List<String> argv = ['--library-root=$libraryRoot']; 88 print('Internal error: \$exception');
63 argv.addAll(new Options().arguments); 89 } catch (var ignored) {
64 compile(argv); 90 print('Internal error: error while printing exception');
65 } catch (var exception, var trace) { 91 }
66 try { 92 try {
67 print('Internal error: \$exception'); 93 print(trace);
68 } catch (var ignored) { 94 } finally {
69 print('Internal error: error while printing exception'); 95 exit(253); // 253 is recognized as a crash by our test scripts.
70 }
71 try {
72 print(trace);
73 } finally {
74 exit(253); // 253 is recognized as a crash by our test scripts.
75 }
76 } 96 }
77 } 97 }
78 } 98 }
79
80 void main() {
81 new Helper().run();
82 }
83 """; 99 """;
84 } 100 }
OLDNEW
« no previous file with comments | « dart/lib/compiler/implementation/util/uri_extras.dart ('k') | dart/utils/compiler/compiler.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698