summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Suereth <joshua.suereth@gmail.com>2009-05-12 12:35:26 +0000
committerJosh Suereth <joshua.suereth@gmail.com>2009-05-12 12:35:26 +0000
commit93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a (patch)
treee054d6bc8cc6ba551a4f322d5203de5c09f13029
parent99e44f21fef0b75791b7b08387bdcdfc8f6dfb65 (diff)
downloadscala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.tar.gz
scala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.tar.bz2
scala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.zip
Fixed Scalac ant tasks for windows when forking
-rw-r--r--src/compiler/scala/tools/ant/Scalac.scala31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/compiler/scala/tools/ant/Scalac.scala b/src/compiler/scala/tools/ant/Scalac.scala
index ecbe9aefb7..e9007c4238 100644
--- a/src/compiler/scala/tools/ant/Scalac.scala
+++ b/src/compiler/scala/tools/ant/Scalac.scala
@@ -10,7 +10,7 @@
package scala.tools.ant
-import java.io.File
+import java.io.{File,PrintWriter,BufferedWriter,FileWriter}
import org.apache.tools.ant.{BuildException, Project}
import org.apache.tools.ant.taskdefs.{MatchingTask,Java}
@@ -642,17 +642,26 @@ class Scalac extends MatchingTask {
//if (!timeout.isEmpty) java.setTimeout(timeout.get)
- //TODO - Determine when to pass args in file due to argument limits
- for ( setting <- settings.allSettings;
- arg <- setting.unparse
- ){
- java.createArg().setValue(arg)
+ //Write all settings to a temporary file
+ def writeSettings() : File = {
+ def escapeArgument(arg : String) = if(arg.matches(".*\\s.*")) ('"' + arg + '"') else arg
+ val file = File.createTempFile("scalac-ant-",".args")
+ file.deleteOnExit()
+ val out = new PrintWriter(new BufferedWriter(new FileWriter(file)))
+ try {
+ for ( setting <- settings.allSettings;
+ arg <- setting.unparse){
+ out.println(escapeArgument(arg))
+ }
+ for (file <- sourceFiles) {
+ out.println(file.getAbsolutePath)
+ }
+ } finally {
+ out.close();
+ }
+ file
}
-
-
-
- for (file <- sourceFiles)
- java.createArg().setFile(file)
+ java.createArg().setValue("@" + writeSettings.getCanonicalPath)
log(java.getCommandLine.getCommandline.mkString("", " ", ""), Project.MSG_VERBOSE)
val res = java.executeJava()