summaryrefslogblamecommitdiff
path: root/project/build/CompilationStep.scala
blob: 02d76b9a54cd140ddc7a179fae69d7771c4457b9 (plain) (tree)





































                                                                                                                                  
import sbt._
import BasicLayer._
trait  Step extends Dag[Step] {
  def dependencies:Iterable[Step]
}

class WrapperStep(contents:List[Step]) extends Step{
  def dependencies = contents
}

abstract class CompilationStep(val name:String, val pathConfig:PathConfig, logger:Logger) extends CompileConfiguration with Step {
  def this(name:String, layout:PathLayout,logger:Logger) = this(name, layout / name, logger)

  // Utility methods (for quick access, ...)
  def srcDir = pathConfig.sources

  // Methods required for the compilation
  def log: Logger = logger
  def sourceRoots : PathFinder = pathConfig.sources
  def sources: PathFinder  = sourceRoots.descendentsExcept("*.java" | "*.scala", ".svn")
  def projectPath: Path  = pathConfig.projectRoot
  def analysisPath: Path = pathConfig.analysis
  def outputDirectory: Path = pathConfig.output
  def classpath = {
    def addDependenciesOutputTo(list:List[Step],acc:PathFinder):PathFinder =  list match{
      case Nil => acc
      case x::xs => x match{
        case c:CompilationStep => addDependenciesOutputTo(xs,acc +++ c.outputDirectory)
        case w:WrapperStep => addDependenciesOutputTo(xs, addDependenciesOutputTo(dependencies.toList,acc))
      }
    }
    addDependenciesOutputTo(dependencies.toList,outputDirectory)
  }
  def javaOptions: Seq[String] = Seq ("-target","1.5","-source","1.5","-g:none")
  def maxErrors: Int = 100
  def compileOrder =  CompileOrder.JavaThenScala
  def fingerprints = Fingerprints(Nil,Nil)
}