Skip to content

Instantly share code, notes, and snippets.

@er1c
Last active May 13, 2020 21:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save er1c/3e7c1b007ae18514b62eb491541a7c45 to your computer and use it in GitHub Desktop.
Save er1c/3e7c1b007ae18514b62eb491541a7c45 to your computer and use it in GitHub Desktop.
lazy val `core` = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Full)
.in(file(".")).
settings((FMPublic ++ setCrossDirs(Compile) ++ setCrossDirs(Test) ++ Seq( // Note: FMPublic needs to be here for sbt-release to work
...
// Adds a `src/main/scala-2.13+` source directory for Scala 2.13 and newer
// and a `src/main/scala-2.12-` source directory for Scala version older than 2.13
def setCrossDirs(config: Configuration): Seq[Setting[_]] = {
Seq(
unmanagedSourceDirectories in config := {
val baseDir = baseDirectory.value
val platform = crossProjectPlatform.value.identifier
val configPath: String = config match {
case Compile => "main"
case Test => "test"
case _ => return Nil
}
val javaSources = if (platform != "js") Seq(
baseDir / "src" / configPath / "java",
) else Nil
javaSources ++ (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, n)) if n < 13 => Seq(
baseDir / "src" / configPath / s"scala-2.$n",
baseDir / ".." / "shared" / "src" / configPath / s"scala-2.$n",
baseDir / "src" / configPath / "scala-2.12-",
baseDir / ".." / "shared" / "src" / configPath / "scala-2.12-",
baseDir / "src" / configPath / "scala",
baseDir / ".." / "shared" / "src" / configPath / "scala",
)
case Some((m, n)) => Seq(
baseDir / "src" / configPath / s"scala-$m.$n",
baseDir / ".." / "shared" / "src" / configPath / s"scala-$m.$n",
baseDir / "src" / configPath / "scala-2.13+",
baseDir / ".." / "shared" / "src" / configPath / "scala-2.13+",
baseDir / "src" / configPath / "scala",
baseDir / ".." / "shared" / "src" / configPath / "scala",
)
})
}
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment