|
|
@ -15,14 +15,19 @@ sealed trait Basics { |
|
|
|
final val githubProject = "scalafx-utils" |
|
|
|
final val projectDescription = "ScalaFX Utilities" |
|
|
|
final val projectStartYear = 2015 |
|
|
|
final val projectHomepage = None |
|
|
|
|
|
|
|
final val buildScalaVersion = "2.12.3" |
|
|
|
final val extraScalaVersions = Seq("2.11.11") |
|
|
|
final val minimumJavaVersion = "1.8" |
|
|
|
final val defaultOptimize = false |
|
|
|
final val defaultOptimize = true |
|
|
|
final val defaultOptimizeGlobal = false |
|
|
|
final val inlinePatterns = Seq("!akka.**,!slick.**") |
|
|
|
final val autoAddCompileOptions = true |
|
|
|
|
|
|
|
final val parallelBuild = false |
|
|
|
final val parallelBuild = true |
|
|
|
final val cachedResolution = true |
|
|
|
final val sonatypeResolver = true |
|
|
|
|
|
|
|
final val defaultNewBackend = false |
|
|
|
|
|
|
@ -30,7 +35,7 @@ sealed trait Basics { |
|
|
|
lazy val githubPage = url(s"https://github.com/${githubOrganization}/${githubProject}") |
|
|
|
lazy val buildMetadata = Vector( |
|
|
|
licenses := Seq("Apache License, Version 2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt")), |
|
|
|
homepage := Some(githubPage), |
|
|
|
homepage := Some(projectHomepage.getOrElse(githubPage)), |
|
|
|
description := projectDescription, |
|
|
|
startYear := Some(projectStartYear), |
|
|
|
scmInfo := Some(ScmInfo(githubPage, s"scm:git:git@github.com:${githubOrganization}/${githubProject}.git")) |
|
|
@ -62,8 +67,6 @@ object BasicSettings extends AutoPlugin with Basics { |
|
|
|
scalaVersion := buildScalaVersion, |
|
|
|
crossScalaVersions := buildScalaVersions, |
|
|
|
|
|
|
|
addScalacOptions(), |
|
|
|
addJavacOptions(), |
|
|
|
autoAPIMappings := true, |
|
|
|
|
|
|
|
updateOptions := updateOptions.value.withCachedResolution(cachedResolution), |
|
|
@ -71,36 +74,49 @@ object BasicSettings extends AutoPlugin with Basics { |
|
|
|
|
|
|
|
evictionWarningOptions in update := |
|
|
|
EvictionWarningOptions.default.withWarnTransitiveEvictions(false).withWarnDirectEvictions(false).withWarnScalaVersionEviction(false) |
|
|
|
) ++ ( |
|
|
|
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 |
|
|
|
} |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
/* Overridable flags */ |
|
|
|
lazy val optimize = boolFlag("OPTIMIZE") orElse boolFlag("OPTIMISE") getOrElse defaultOptimize |
|
|
|
lazy val deprecation = boolFlag("NO_DEPRECATION") map (!_) getOrElse true |
|
|
|
lazy val inlineWarn = boolFlag("INLINE_WARNINGS") getOrElse false |
|
|
|
lazy val debug = boolFlag("DEBUGGER") getOrElse false |
|
|
|
lazy val debugPort = envOrNone("DEBUGGER_PORT") map { _.toInt } getOrElse 5050 |
|
|
|
lazy val debugSuspend = boolFlag("DEBUGGER_SUSPEND") getOrElse true |
|
|
|
lazy val unusedWarn = boolFlag("UNUSED_WARNINGS") getOrElse false |
|
|
|
lazy val importWarn = boolFlag("IMPORT_WARNINGS") getOrElse false |
|
|
|
lazy val java8Flag = boolFlag("BUILD_JAVA_8") getOrElse false |
|
|
|
lazy val newBackend = boolFlag("NEW_BCODE_BACKEND") getOrElse defaultNewBackend |
|
|
|
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 noFatalWarn = boolFlag("NO_FATAL_WARNINGS") getOrElse false |
|
|
|
lazy val deprecation = boolFlag("NO_DEPRECATION") map (!_) getOrElse true |
|
|
|
lazy val inlineWarn = boolFlag("INLINE_WARNINGS") getOrElse false |
|
|
|
lazy val debug = boolFlag("DEBUGGER") getOrElse false |
|
|
|
lazy val debugPort = envOrNone("DEBUGGER_PORT") map { _.toInt } getOrElse 5050 |
|
|
|
lazy val debugSuspend = boolFlag("DEBUGGER_SUSPEND") getOrElse true |
|
|
|
lazy val unusedWarn = boolFlag("UNUSED_WARNINGS") getOrElse false |
|
|
|
lazy val importWarn = boolFlag("IMPORT_WARNINGS") getOrElse false |
|
|
|
lazy val java8Flag = boolFlag("BUILD_JAVA_8") getOrElse false |
|
|
|
lazy val newBackend = boolFlag("NEW_BCODE_BACKEND") getOrElse defaultNewBackend |
|
|
|
|
|
|
|
lazy val buildScalaVersions = buildScalaVersion +: extraScalaVersions |
|
|
|
|
|
|
|
def addScalacOptions(optim: Boolean = optimize) = Def.derive { |
|
|
|
def basicScalacOptions = Def.derive { |
|
|
|
scalacOptions ++= { |
|
|
|
val sv = SVer(scalaBinaryVersion.value) |
|
|
|
var options = Seq.empty[String] |
|
|
|
val sv = sver.value |
|
|
|
|
|
|
|
options :+= "-unchecked" |
|
|
|
options :+= "-feature" |
|
|
|
if (deprecation) { |
|
|
|
options :+= "-deprecation" |
|
|
|
} |
|
|
|
if (inlineWarn) { |
|
|
|
options :+= "-Yinline-warnings" |
|
|
|
} |
|
|
|
if (unusedWarn) { |
|
|
|
options :+= "-Ywarn-unused" |
|
|
|
} |
|
|
@ -110,21 +126,68 @@ object BasicSettings extends AutoPlugin with Basics { |
|
|
|
if (!sv.requireJava8) { |
|
|
|
options :+= "-target:jvm-" + minimumJavaVersion |
|
|
|
} |
|
|
|
if (sv.backend == SupportsNewBackend && newBackend) { |
|
|
|
options :+= "-Ybackend:GenBCode" |
|
|
|
} |
|
|
|
|
|
|
|
options |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
def optimizationScalacOptions(optim: Boolean = optimize) = Def.derive { |
|
|
|
scalacOptions ++= { |
|
|
|
var options = Seq.empty[String] |
|
|
|
val sv = sver.value |
|
|
|
val fos = forceOldInlineSyntax.value |
|
|
|
|
|
|
|
if (optim) { |
|
|
|
if (sv.newOptimize || sv.supportsNewBackend && newBackend) { |
|
|
|
options :+= "-opt:l:project" |
|
|
|
} else if (!sv.requireJava8) { |
|
|
|
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" |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (sv.supportsNewBackend && newBackend && !sv.requireJava8) { |
|
|
|
options :+= "-Ybackend:GenBCode" |
|
|
|
} |
|
|
|
|
|
|
|
options |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
def addScalacOptions(optim: Boolean = optimize) = new Def.SettingList(Seq( |
|
|
|
basicScalacOptions, |
|
|
|
optimizationScalacOptions(optim) |
|
|
|
)) |
|
|
|
|
|
|
|
def addJavacOptions() = Def.derive { |
|
|
|
javacOptions ++= { |
|
|
|
val sv = SVer(scalaBinaryVersion.value) |
|
|
@ -145,5 +208,14 @@ object BasicSettings extends AutoPlugin with Basics { |
|
|
|
options |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
def basicSiteSettings = Def.derive { |
|
|
|
scalacOptions in (Compile,doc) ++= Seq( |
|
|
|
"-groups", |
|
|
|
"-implicits", |
|
|
|
"-diagrams", |
|
|
|
"-sourcepath", (baseDirectory in ThisBuild).value.getAbsolutePath, |
|
|
|
"-doc-source-url", s"https://github.com/${githubOrganization}/${githubProject}/blob/master€{FILE_PATH}.scala" |
|
|
|
) |
|
|
|
} |
|
|
|
} |