diff options
author | Josh Suereth <joshua.suereth@gmail.com> | 2009-05-12 12:35:26 +0000 |
---|---|---|
committer | Josh Suereth <joshua.suereth@gmail.com> | 2009-05-12 12:35:26 +0000 |
commit | 93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a (patch) | |
tree | e054d6bc8cc6ba551a4f322d5203de5c09f13029 /src/compiler/scala/tools/ant/Scalac.scala | |
parent | 99e44f21fef0b75791b7b08387bdcdfc8f6dfb65 (diff) | |
download | scala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.tar.gz scala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.tar.bz2 scala-93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a.zip |
Fixed Scalac ant tasks for windows when forking
Diffstat (limited to 'src/compiler/scala/tools/ant/Scalac.scala')
-rw-r--r-- | src/compiler/scala/tools/ant/Scalac.scala | 31 |
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() |