From 9bd0b744effbc7e34b5ae4eb864c6c6c934c14c8 Mon Sep 17 00:00:00 2001
From: Philippe Suter <philippe.suter@gmail.com>
Date: Mon, 21 Jun 2010 14:03:30 +0000
Subject: [PATCH] improved SBT script

---
 project/build/funcheck.scala               | 34 +++++++++++++++++-----
 resources/{ => funcheck}/scalac-plugin.xml |  0
 2 files changed, 26 insertions(+), 8 deletions(-)
 rename resources/{ => funcheck}/scalac-plugin.xml (100%)

diff --git a/project/build/funcheck.scala b/project/build/funcheck.scala
index b2de809e1..ea79831c4 100644
--- a/project/build/funcheck.scala
+++ b/project/build/funcheck.scala
@@ -1,15 +1,33 @@
 import sbt._
 
-class FunCheckProject(info: ProjectInfo) extends DefaultProject(info) {
+class FunCheckProject(info: ProjectInfo) extends ParentProject(info) {
   override def outputDirectoryName = "bin"
-  override def mainScalaSourcePath = "src"
-  override def mainResourcesPath   = "resources"
   override def dependencyPath      = "lib"
+  override def shouldCheckOutputDirectories = false
+  lazy val purescala = project(".", "PureScala Definitions", new PureScalaProject(_))
+  lazy val plugin    = project(".", "FunCheck Plugin", new PluginProject(_), purescala)
+  lazy val multisets = project(".", "Multiset Solver", new MultisetsProject(_), plugin, purescala)
 
-  override def compileOptions = super.compileOptions ++ Seq(Unchecked)
+  sealed abstract class PersonalizedProject(info: ProjectInfo) extends DefaultProject(info) {
+    override def dependencyPath = "lib"
+    override def outputDirectoryName = "bin" 
+    override def compileOptions = super.compileOptions ++ Seq(Unchecked)
+  }  
 
-  lazy val scalac = task {
-    println("Running scalac...")
-    None
-  } dependsOn(`package`) describedAs("Runs scalac with the FunCheck plugin.")
+  class PureScalaProject(info: ProjectInfo) extends PersonalizedProject(info) {
+    override def outputPath = "bin" / "purescala"
+    override def mainScalaSourcePath = "src" / "purescala"
+
+  }
+  class PluginProject(info: ProjectInfo) extends PersonalizedProject(info) {
+    override def outputPath = "bin" / "funcheck"
+    override def mainScalaSourcePath = "src" / "funcheck"
+    override def unmanagedClasspath = super.unmanagedClasspath +++ purescala.jarPath
+    override def mainResourcesPath   = "resources" / "funcheck"
+  }
+  class MultisetsProject(info: ProjectInfo) extends PersonalizedProject(info) {
+    override def outputPath = "bin" / "multisets"
+    override def mainScalaSourcePath = "src" / "multisets"
+    override def unmanagedClasspath = super.unmanagedClasspath +++ purescala.jarPath
+  }
 }
diff --git a/resources/scalac-plugin.xml b/resources/funcheck/scalac-plugin.xml
similarity index 100%
rename from resources/scalac-plugin.xml
rename to resources/funcheck/scalac-plugin.xml
-- 
GitLab