Search code examples
scalasbtscala-2.10

Conditional scalacOptions with SBT


I am using a project with cross-build for Scala 2.8, 2.9 and (hopefully) 2.10, using SBT. I would like to add the -feature option when compiling with 2.10 only.

In other words, when I compile with a version smaller than 2.10.0, I would like to set the compiler options as:

scalacOptions ++= Seq( "-deprecation", "-unchecked" )

and when compiling with a version greater or equal than 2.10.0:

scalacOptions ++= Seq( "-deprecation", "-unchecked", "-feature" )

Is there a way to achieve this ?


Solution

  • When cross-building, scalaVersion reflects the version your project is currently built against. So depending on scalaVersion should do the trick:

    val scalaVersionRegex = "(\\d+)\\.(\\d+).*".r
    ...
    scalacOptions <++= scalaVersion { sv =>
      sv match {
        case scalaVersionRegex(major, minor) if major.toInt > 2 || (major == "2" && minor.toInt >= 10) =>
          Seq( "-deprecation", "-unchecked", "-feature" )
        case _ => Seq( "-deprecation", "-unchecked" )
    }