|
| 1 | +val scalaNativeVersion = |
| 2 | + settingKey[String]("Version of Scala Native for which to build to CLI") |
| 3 | + |
| 4 | +val cliAssemblyJarName = settingKey[String]("Name of created assembly jar") |
| 5 | + |
| 6 | +inThisBuild( |
| 7 | + Def.settings( |
| 8 | + organization := "org.scala-native", |
| 9 | + scalaVersion := "2.12.15", |
| 10 | + scalaNativeVersion := "0.4.0", |
| 11 | + version := scalaNativeVersion.value |
| 12 | + ) |
| 13 | +) |
| 14 | + |
| 15 | +lazy val cli = project |
| 16 | + .in(file("cli")) |
| 17 | + .enablePlugins(BuildInfoPlugin, ScriptedPlugin) |
| 18 | + .settings( |
| 19 | + name := "scala-native-cli", |
| 20 | + scalacOptions += "-Ywarn-unused:imports", |
| 21 | + libraryDependencies ++= Seq( |
| 22 | + "org.scala-native" %% "tools" % scalaNativeVersion.value, |
| 23 | + "com.github.alexarchambault" %% "case-app" % "2.1.0-M10", |
| 24 | + "org.scalatest" %% "scalatest" % "3.1.1" % Test |
| 25 | + ), |
| 26 | + patchSourcesSettings, |
| 27 | + buildInfoKeys := Seq[BuildInfoKey]( |
| 28 | + "nativeVersion" -> scalaNativeVersion.value |
| 29 | + ), |
| 30 | + buildInfoPackage := "scala.scalanative.cli.options", |
| 31 | + cliAssemblyJarName := s"${normalizedName.value}-assembly_${scalaBinaryVersion.value}-${scalaNativeVersion.value}.jar", |
| 32 | + assembly / assemblyJarName := cliAssemblyJarName.value, |
| 33 | + scriptedLaunchOpts ++= { |
| 34 | + val jarName = cliAssemblyJarName.value |
| 35 | + val cliPath = (Compile / crossTarget).value / jarName |
| 36 | + Seq( |
| 37 | + "-Xmx1024M", |
| 38 | + "-Dplugin.version=" + scalaNativeVersion.value, |
| 39 | + "-Dscala-native-cli=" + cliPath |
| 40 | + ) |
| 41 | + }, |
| 42 | + scriptedBufferLog := false, |
| 43 | + scriptedDependencies := { |
| 44 | + scriptedDependencies |
| 45 | + .dependsOn(assembly) |
| 46 | + .value |
| 47 | + } |
| 48 | + ) |
| 49 | + |
| 50 | +// To be removed since 0.4.2 |
| 51 | +lazy val patchSourcesSettings = { |
| 52 | + def patchSources(base: File, version: String, subdir: String) = { |
| 53 | + val directory = version match { |
| 54 | + case v @ "0.4.0" => v |
| 55 | + case _ => "current" |
| 56 | + } |
| 57 | + base / "patches" / directory / "src" / subdir / "scala" |
| 58 | + } |
| 59 | + |
| 60 | + Def.settings( |
| 61 | + Compile / unmanagedSourceDirectories += patchSources( |
| 62 | + sourceDirectory.value, |
| 63 | + scalaNativeVersion.value, |
| 64 | + "main" |
| 65 | + ), |
| 66 | + Test / unmanagedSourceDirectories += patchSources( |
| 67 | + sourceDirectory.value, |
| 68 | + scalaNativeVersion.value, |
| 69 | + "test" |
| 70 | + ) |
| 71 | + ) |
| 72 | +} |
0 commit comments