Skip to content

Commit

Permalink
build: cross compile Scala 3 & Scala Native
Browse files Browse the repository at this point in the history
Drop 3.0.x and pretend it never existed, use 3.1.x for JVM, JS and Native platforms
  • Loading branch information
Kamil Podsiadlo committed Apr 8, 2022
1 parent 63cdf60 commit df9e214
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
12 changes: 9 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def previousVersion = "0.7.0"
def scala213 = "2.13.6"
def scala212 = "2.12.15"
def scala211 = "2.11.12"
def scala3 = "3.0.1"
def scala3 = "3.1.1"
def junitVersion = "4.13.2"
def gcp = "com.google.cloud" % "google-cloud-storage" % "2.1.7"
inThisBuild(
Expand Down Expand Up @@ -49,8 +49,10 @@ addCommandAlias(
)
val isPreScala213 = Set[Option[(Long, Long)]](Some((2, 11)), Some((2, 12)))
val scala2Versions = List(scala213, scala212, scala211)

val scala3Versions = List(scala3)
val allScalaVersions = scala2Versions ++ scala3Versions

def isNotScala211(v: Option[(Long, Long)]): Boolean = !v.contains((2, 11))
def isScala2(v: Option[(Long, Long)]): Boolean = v.exists(_._1 == 2)
val isScala3Setting = Def.setting {
Expand Down Expand Up @@ -126,18 +128,21 @@ lazy val mimaEnable: List[Def.Setting[_]] = List(
else Set("org.scalameta" % moduleName.value % previousVersion)
}
)

val sharedJVMSettings: List[Def.Setting[_]] = List(
crossScalaVersions := allScalaVersions
) ++ mimaEnable

val sharedJSSettings: List[Def.Setting[_]] = List(
skipIdeaSettings,
crossScalaVersions := allScalaVersions.filterNot(_.startsWith("0."))
)
val sharedJSConfigure: Project => Project =
_.disablePlugins(MimaPlugin)

val sharedNativeSettings: List[Def.Setting[_]] = List(
skipIdeaSettings,
crossScalaVersions := scala2Versions
crossScalaVersions := allScalaVersions
)
val sharedNativeConfigure: Project => Project =
_.disablePlugins(ScalafixPlugin, MimaPlugin)
Expand Down Expand Up @@ -273,7 +278,7 @@ lazy val munitScalacheck = crossProject(JSPlatform, JVMPlatform, NativePlatform)
libraryDependencies += {
val partialVersion = CrossVersion.partialVersion(scalaVersion.value)
if (isNotScala211(partialVersion))
"org.scalacheck" %%% "scalacheck" % "1.15.4"
"org.scalacheck" %%% "scalacheck" % "1.16.0"
else
"org.scalacheck" %%% "scalacheck" % "1.15.2"
}
Expand All @@ -287,6 +292,7 @@ lazy val munitScalacheck = crossProject(JSPlatform, JVMPlatform, NativePlatform)
)
.jsConfigure(sharedJSConfigure)
.jsSettings(sharedJSSettings)

lazy val munitScalacheckJVM = munitScalacheck.jvm
lazy val munitScalacheckJS = munitScalacheck.js
lazy val munitScalacheckNative = munitScalacheck.native
Expand Down
11 changes: 7 additions & 4 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.23")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3")
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.31")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.1.0")
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.1.0")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.6.0")

addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.9.0")

addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.2.0")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.4")

addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.0.1")
addSbtPlugin("com.lightbend.sbt" % "sbt-java-formatter" % "0.6.1")

Expand Down

0 comments on commit df9e214

Please sign in to comment.