Index: dart/utils/compiler/build_helper.dart |
diff --git a/dart/utils/compiler/build_helper.dart b/dart/utils/compiler/build_helper.dart |
index de54347e2a4418b8fc196a78bd2d32b24c7a43dc..ef0a3c7c3c029cfb3139ea21dae897f4e8a22bd0 100644 |
--- a/dart/utils/compiler/build_helper.dart |
+++ b/dart/utils/compiler/build_helper.dart |
@@ -23,24 +23,32 @@ main() { |
Uri dartVmUri = productUri.resolve(dartVmPath); |
Uri productionUri = productUri.resolve(arguments[2]); |
Uri developerUri = productUri.resolve(arguments[3]); |
- String productionScript = buildScript(dartUri, dartVmUri, ''); |
- String developerScript = buildScript(dartUri, dartVmUri, |
- ' --enable_checked_mode'); |
+ List<String> productionScript = buildScript(dartUri, dartVmUri, ''); |
+ List<String> developerScript = buildScript(dartUri, dartVmUri, |
+ ' --enable_checked_mode'); |
writeScript(productionUri, productionScript); |
writeScript(developerUri, developerScript); |
} |
-writeScript(Uri uri, String script) { |
+writeScript(Uri uri, List<String> scripts) { |
+ String unixScript = scripts[0]; |
+ String batFile = scripts[1]; |
var f = new File(uriPathToNative(uri.path)); |
var stream = f.openSync(FileMode.WRITE); |
try { |
- stream.writeStringSync(script); |
+ stream.writeStringSync(unixScript); |
} finally { |
stream.closeSync(); |
} |
- // TODO(ahe): Also make a .bat file for Windows. |
+ f = new File('${uriPathToNative(uri.path)}.bat'); |
+ stream = f.openSync(FileMode.WRITE); |
+ try { |
+ stream.writeStringSync(batFile); |
+ } finally { |
+ stream.closeSync(); |
+ } |
if (Platform.operatingSystem() != 'windows') { |
onExit(int exitCode, String stdout, String stderr) { |
@@ -54,7 +62,7 @@ writeScript(Uri uri, String script) { |
} |
} |
-buildScript(Uri dartUri, Uri dartVmLocation, String options) { |
+List<String> buildScript(Uri dartUri, Uri dartVmLocation, String options) { |
Uri dart2jsUri = dartUri.resolve('lib/compiler/implementation/dart2js.dart'); |
String dart2jsPath = relativize(dartVmLocation, dart2jsUri); |
String libraryRoot = relativize(dartVmLocation, dartUri); |
@@ -66,7 +74,8 @@ buildScript(Uri dartUri, Uri dartVmLocation, String options) { |
print('dart2jsPath = $dart2jsPath'); |
print('libraryRoot = $libraryRoot'); |
- return """ |
+ return [ |
+""" |
#!${dartVmLocation.path}$options |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
// for details. All rights reserved. Use of this source code is governed by a |
@@ -96,5 +105,20 @@ void main() { |
} |
} |
} |
-"""; |
+""", |
+''' |
+@echo off |
+REM Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+REM for details. All rights reserved. Use of this source code is governed by a |
+REM BSD-style license that can be found in the LICENSE file. |
+ |
+set SCRIPTPATH=%~dp0 |
+ |
+REM Does the path have a trailing slash? If so, remove it. |
+if %SCRIPTPATH:~-1%==\ set SCRIPTPATH=%SCRIPTPATH:~0,-1% |
+ |
+set arguments=%* |
+ |
+"%SCRIPTPATH%\dart.exe"$options "%SCRIPTPATH%\dart2js" %arguments% |
+'''.replaceAll('\n', '\r\n')]; |
} |