Rohan Sircar
7484570e40
Updated scala version to 2.13.4 Compiles to Java 11 now Updated sbt to 1.4.3 Updated scalafx version to 14 Removed unneeded dependencies Removed Akka code Added lint and fatal warnings scalac options Added parantheses to side effecting methods Added >> and << methods to observables
181 lines
5.5 KiB
Scala
181 lines
5.5 KiB
Scala
/* Note: This file is shared among many projects. Avoid putting project-specific things here. */
|
|
|
|
import sbt._
|
|
import sbt.Keys._
|
|
|
|
import Helpers._
|
|
|
|
object BasicSettings extends AutoPlugin with BasicSettings {
|
|
override def projectSettings = basicSettings
|
|
}
|
|
|
|
trait BasicSettings extends ProjectSettings { st: SettingTemplate =>
|
|
/* Overridable flags */
|
|
lazy val optimize = boolFlag("OPTIMIZE") orElse boolFlag("OPTIMISE") getOrElse defaultOptimize
|
|
lazy val optimizeGlobal = boolFlag("OPTIMIZE_GLOBAL") getOrElse defaultOptimizeGlobal
|
|
lazy val optimizeWarn = boolFlag("OPTIMIZE_WARNINGS") getOrElse false
|
|
lazy val disableAsserts = boolFlag("DISABLE_ASSERTIONS") getOrElse defaultDisableAssertions
|
|
lazy val noFatalWarn = boolFlag("NO_FATAL_WARNINGS") getOrElse false
|
|
lazy val deprecation = boolFlag("NO_DEPRECATION") map (!_) getOrElse true
|
|
lazy val inlineWarn = boolFlag("INLINE_WARNINGS") getOrElse defaultWarnInline
|
|
lazy val debug = boolFlag("DEBUGGER") getOrElse false
|
|
lazy val debugPort = intFlag("DEBUGGER_PORT", 5050)
|
|
lazy val debugSuspend = boolFlag("DEBUGGER_SUSPEND") getOrElse true
|
|
lazy val unusedWarn = boolFlag("UNUSED_WARNINGS") getOrElse defaultWarnUnused
|
|
lazy val importWarn = boolFlag("IMPORT_WARNINGS") getOrElse defaultWarnImport
|
|
lazy val findbugsHtml = boolFlag("FINDBUGS_HTML") getOrElse !isJenkins
|
|
lazy val newBackend = boolFlag("NEW_BCODE_BACKEND") getOrElse defaultNewBackend
|
|
lazy val noBuildDocs = boolFlag("NO_SBT_DOCS").getOrElse(false) && !isJenkins
|
|
|
|
lazy val basicSettings = new Def.SettingList(
|
|
buildMetadata ++
|
|
Seq (
|
|
organization := buildOrganization,
|
|
organizationName := buildOrganizationName,
|
|
organizationHomepage := buildOrganizationUrl.orElse(if (githubOrgPageFallback) Some(githubOrgPage) else None),
|
|
|
|
scalaVersion := buildScalaVersion,
|
|
crossScalaVersions := buildScalaVersions,
|
|
|
|
autoAPIMappings := true,
|
|
|
|
updateOptions := updateOptions.value.withCachedResolution(cachedResolution),
|
|
parallelExecution := parallelBuild,
|
|
|
|
evictionWarningOptions in update :=
|
|
EvictionWarningOptions.default.withWarnTransitiveEvictions(false).withWarnDirectEvictions(false).withWarnScalaVersionEviction(false)
|
|
) ++ (
|
|
if (noBuildDocs) {
|
|
Seq(sources in (Compile, doc) := Seq.empty)
|
|
} else {
|
|
Seq.empty
|
|
}
|
|
) ++ (
|
|
if (autoAddCompileOptions) {
|
|
addScalacOptions() ++ addJavacOptions()
|
|
} else {
|
|
Seq.empty
|
|
}
|
|
) ++ (
|
|
if (sonatypeResolver) {
|
|
/* Many OSS projects push here and then appear in Maven Central later */
|
|
Seq(resolvers += Resolver.sonatypeRepo("releases"))
|
|
} else {
|
|
Seq.empty
|
|
}
|
|
)
|
|
)
|
|
|
|
lazy val buildScalaVersions = buildScalaVersion +: extraScalaVersions
|
|
|
|
def basicScalacOptions = Def.derive {
|
|
scalacOptions ++= {
|
|
var options = Seq.empty[String]
|
|
val sv = sver.value
|
|
|
|
options :+= "-Xlint"
|
|
options :+= "-Xfatal-warnings"
|
|
options :+= "-unchecked"
|
|
options :+= "-feature"
|
|
if (deprecation) {
|
|
options :+= "-deprecation"
|
|
}
|
|
if (unusedWarn) {
|
|
options :+= "-Ywarn-unused"
|
|
}
|
|
if (importWarn) {
|
|
options :+= "-Ywarn-unused-import"
|
|
}
|
|
if (!sv.requireJava8) {
|
|
options :+= "-target:jvm-" + minimumJavaVersion
|
|
}
|
|
if (sv.backend == SupportsNewBackend && newBackend) {
|
|
options :+= "-Ybackend:GenBCode"
|
|
}
|
|
if (disableAsserts) {
|
|
options :+= "-Xdisable-assertions"
|
|
}
|
|
|
|
options
|
|
}
|
|
}
|
|
|
|
def optimizationScalacOptions(optim: Boolean = optimize) = Def.derive {
|
|
scalacOptions ++= {
|
|
var options = Seq.empty[String]
|
|
val sv = sver.value
|
|
val fos = forceOldInlineSyntax.value
|
|
|
|
if (optim) {
|
|
def doNewWarn(): Unit = {
|
|
if (optimizeWarn) {
|
|
options :+= "-opt-warnings:_"
|
|
}
|
|
}
|
|
|
|
if (sv.backend == NewBackend && !fos) {
|
|
options :+= "-opt:l:inline"
|
|
|
|
val inlineFrom = {
|
|
var patterns = Seq.empty[String]
|
|
if (optimizeGlobal) {
|
|
patterns :+= "**"
|
|
} else {
|
|
patterns :+= "<sources>"
|
|
}
|
|
patterns ++= inlinePatterns
|
|
patterns
|
|
}
|
|
|
|
options :+= inlineFrom.mkString("-opt-inline-from:", ":", "")
|
|
|
|
doNewWarn()
|
|
} else if (sv.backend == NewBackend && fos || sv.backend == SupportsNewBackend && newBackend) {
|
|
if (optimizeGlobal) {
|
|
options :+= "-opt:l:classpath"
|
|
} else {
|
|
options :+= "-opt:l:project"
|
|
}
|
|
doNewWarn()
|
|
} else {
|
|
options :+= "-optimize"
|
|
if (optimizeWarn) {
|
|
options :+= "-Yinline-warnings"
|
|
}
|
|
}
|
|
}
|
|
|
|
options
|
|
}
|
|
}
|
|
|
|
def addScalacOptions(optim: Boolean = optimize) = new Def.SettingList(Seq(
|
|
basicScalacOptions,
|
|
optimizationScalacOptions(optim),
|
|
scalacOptions ++= extraScalacOptions
|
|
))
|
|
|
|
def addJavacOptions() = Def.derive {
|
|
javacOptions ++= {
|
|
val sv = SVer(scalaBinaryVersion.value)
|
|
var options = Seq.empty[String]
|
|
|
|
if (sv.requireJava8) {
|
|
options ++= Seq[String](
|
|
"-target", "11",
|
|
"-source", "11"
|
|
)
|
|
} else {
|
|
options ++= Seq[String](
|
|
"-target", minimumJavaVersion,
|
|
"-source", minimumJavaVersion
|
|
)
|
|
}
|
|
|
|
options
|
|
}
|
|
}
|
|
|
|
private[this] lazy val githubOrgPage = url(s"https://github.com/${githubOrganization}")
|
|
}
|