aboutsummaryrefslogtreecommitdiff
path: root/plugins/scalajs/ScalaJsLib.scala
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-11-07 02:21:50 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2016-11-07 02:21:50 -0500
commitc6b9a480879c101028b20b9cc8716b8ffa773630 (patch)
treefff15c1d6595455f6994f5793b63b08c5bf24d4a /plugins/scalajs/ScalaJsLib.scala
parentc89f87c9c9a0c7b256f225e37c55cb34f060aa6c (diff)
parentfd849d293448d55c6bcb6f8440f44838b51fc860 (diff)
downloadcbt-c6b9a480879c101028b20b9cc8716b8ffa773630.tar.gz
cbt-c6b9a480879c101028b20b9cc8716b8ffa773630.tar.bz2
cbt-c6b9a480879c101028b20b9cc8716b8ffa773630.zip
Merge remote-tracking branch 'origin/master' into integrate-eval
Diffstat (limited to 'plugins/scalajs/ScalaJsLib.scala')
-rw-r--r--plugins/scalajs/ScalaJsLib.scala51
1 files changed, 51 insertions, 0 deletions
diff --git a/plugins/scalajs/ScalaJsLib.scala b/plugins/scalajs/ScalaJsLib.scala
new file mode 100644
index 0000000..0355850
--- /dev/null
+++ b/plugins/scalajs/ScalaJsLib.scala
@@ -0,0 +1,51 @@
+package cbt
+import java.io.File
+
+case class ScalaJsLib(
+ scalaJsVersion: String, scalaVersion: String,
+ cbtHasChanged: Boolean, classLoaderCache: ClassLoaderCache, mavenCache: File
+)(implicit logger: Logger){
+ sealed trait ScalaJsOutputMode {
+ def option: String
+ def fileSuffix: String
+ }
+ case object FastOptJS extends ScalaJsOutputMode{
+ override val option = "--fastOpt"
+ override val fileSuffix = "fastopt"
+ }
+ case object FullOptJS extends ScalaJsOutputMode{
+ override val option = "--fullOpt"
+ override val fileSuffix = "fullopt"
+ }
+
+ val lib = new Lib(logger)
+ def dep(artifactId: String) = MavenResolver( cbtHasChanged, mavenCache, mavenCentral ).bindOne(
+ MavenDependency("org.scala-js", artifactId, scalaJsVersion)
+ )
+
+ def link(
+ mode: ScalaJsOutputMode, outputPath: File,
+ scalaJsOptions: Seq[String], entriesToLink: Seq[File]
+ ) = {
+ val scalaJsCliDep = dep( "scalajs-cli_"++lib.libMajorVersion(scalaVersion) )
+ lib.runMain(
+ "org.scalajs.cli.Scalajsld",
+ Seq(
+ mode.option,
+ "--sourceMap",
+ "--stdlib", s"${scalaJsLibraryDependency.jar.getAbsolutePath}",
+ "--output", outputPath.string
+ ) ++ scalaJsOptions ++ entriesToLink.map(_.getAbsolutePath),
+ scalaJsCliDep.classLoader(classLoaderCache)
+ )
+ }
+
+ val scalaJsLibraryDependency = dep( "scalajs-library_"++lib.libMajorVersion(scalaVersion) )
+
+ // Has to be full Scala version because the compiler is incompatible between versions
+ val scalaJsCompilerDependency = dep( "scalajs-compiler_"++scalaVersion )
+ val scalacOptions = Seq(
+ "-Xplugin:" ++ scalaJsCompilerDependency.jar.string,
+ "-Xplugin-require:scalajs"
+ )
+}