Skip to content
Snippets Groups Projects
Commit efbca75c authored by Philippe Suter's avatar Philippe Suter
Browse files

now creates the script properly.

parent 9bd0b744
Branches
Tags
No related merge requests found
import sbt._ import sbt._
class FunCheckProject(info: ProjectInfo) extends ParentProject(info) { class FunCheckProject(info: ProjectInfo) extends ParentProject(info) with FileTasks {
override def outputDirectoryName = "bin" override def outputDirectoryName = "bin"
override def dependencyPath = "lib" override def dependencyPath = "lib"
override def shouldCheckOutputDirectories = false override def shouldCheckOutputDirectories = false
lazy val purescala = project(".", "PureScala Definitions", new PureScalaProject(_)) lazy val purescala = project(".", "PureScala Definitions", new PureScalaProject(_))
lazy val plugin = project(".", "FunCheck Plugin", new PluginProject(_), purescala) lazy val plugin = project(".", "FunCheck Plugin", new PluginProject(_), purescala)
lazy val multisets = project(".", "Multiset Solver", new MultisetsProject(_), plugin, purescala) lazy val multisets = project(".", "Multiset Solver", new MultisetsProject(_), plugin, purescala)
val scriptPath: Path = "." / "scalac-funcheck"
lazy val all = fileTask(scriptPath :: Nil)(allActions) dependsOn(plugin.`package`) describedAs("Compile everything and produce a script file.")
def allActions: Option[String] = {
val nl = System.getProperty("line.separator")
val f = scriptPath.asFile
val fw = new java.io.FileWriter(f)
fw.write("#!/bin/sh" + nl)
fw.write("LD_LIBRARY_PATH=" + ("." / "lib-bin").absolutePath + " \\" + nl)
fw.write("java \\" + nl)
val libStr = (buildLibraryJar.absolutePath).toString
fw.write(" -Dscala.home=" + libStr.substring(0, libStr.length-21) + " \\" + nl)
fw.write(" -classpath \\" + nl)
fw.write(" " + buildLibraryJar.absolutePath + ":")
fw.write(buildCompilerJar.absolutePath + ":")
fw.write(purescala.jarPath.absolutePath + ":")
fw.write(plugin.jarPath.absolutePath + ":")
fw.write(("lib" / "z3.jar").absolutePath + " \\" + nl)
fw.write(" scala.tools.nsc.Main -Xplugin:" + plugin.jarPath.absolutePath + " $@" + nl)
fw.close
f.setExecutable(true)
None
}
sealed abstract class PersonalizedProject(info: ProjectInfo) extends DefaultProject(info) { sealed abstract class PersonalizedProject(info: ProjectInfo) extends DefaultProject(info) {
override def dependencyPath = "lib" override def dependencyPath = "lib"
override def outputDirectoryName = "bin" override def outputDirectoryName = "bin"
...@@ -24,6 +50,8 @@ class FunCheckProject(info: ProjectInfo) extends ParentProject(info) { ...@@ -24,6 +50,8 @@ class FunCheckProject(info: ProjectInfo) extends ParentProject(info) {
override def mainScalaSourcePath = "src" / "funcheck" override def mainScalaSourcePath = "src" / "funcheck"
override def unmanagedClasspath = super.unmanagedClasspath +++ purescala.jarPath override def unmanagedClasspath = super.unmanagedClasspath +++ purescala.jarPath
override def mainResourcesPath = "resources" / "funcheck" override def mainResourcesPath = "resources" / "funcheck"
} }
class MultisetsProject(info: ProjectInfo) extends PersonalizedProject(info) { class MultisetsProject(info: ProjectInfo) extends PersonalizedProject(info) {
override def outputPath = "bin" / "multisets" override def outputPath = "bin" / "multisets"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment