summaryrefslogtreecommitdiff
path: root/scalajslib/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-18 10:35:57 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-18 10:35:57 -0700
commit3715c7bfb88de8daa86cd663d22057ec776cedcc (patch)
tree0a85083bcdb27867110e33c05c15ac13ae2865a9 /scalajslib/src
parent350a3115afca590bee6311dbed4a657fe9cca375 (diff)
parent0063444b422e317b9ee68c789f9b3224dcf28825 (diff)
downloadmill-3715c7bfb88de8daa86cd663d22057ec776cedcc.tar.gz
mill-3715c7bfb88de8daa86cd663d22057ec776cedcc.tar.bz2
mill-3715c7bfb88de8daa86cd663d22057ec776cedcc.zip
Merge branch 'master' of github.com:lihaoyi/mill
Diffstat (limited to 'scalajslib/src')
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSBridge.scala19
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala17
2 files changed, 26 insertions, 10 deletions
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
index 20e6542c..507d8af7 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
@@ -12,6 +12,12 @@ sealed trait OptimizeMode
object FastOpt extends OptimizeMode
object FullOpt extends OptimizeMode
+sealed trait ModuleKind
+object ModuleKind{
+ object NoModule extends ModuleKind
+ object CommonJSModule extends ModuleKind
+}
+
class ScalaJSWorker {
private var scalaInstanceCache = Option.empty[(Long, ScalaJSBridge)]
@@ -21,8 +27,8 @@ class ScalaJSWorker {
scalaInstanceCache match {
case Some((sig, bridge)) if sig == classloaderSig => bridge
case _ =>
- val cl = new URLClassLoader(
- toolsClasspath.map(_.toIO.toURI.toURL).toArray,
+ val cl = mill.util.ClassLoader.create(
+ toolsClasspath.map(_.toIO.toURI.toURL).toVector,
getClass.getClassLoader
)
val bridge = cl
@@ -40,13 +46,15 @@ class ScalaJSWorker {
libraries: Agg[Path],
dest: File,
main: Option[String],
- fullOpt: Boolean): Unit = {
+ fullOpt: Boolean,
+ moduleKind: ModuleKind): Unit = {
bridge(toolsClasspath).link(
sources.items.map(_.toIO).toArray,
libraries.items.map(_.toIO).toArray,
dest,
main.orNull,
- fullOpt
+ fullOpt,
+ moduleKind
)
}
@@ -68,7 +76,8 @@ trait ScalaJSBridge {
libraries: Array[File],
dest: File,
main: String,
- fullOpt: Boolean): Unit
+ fullOpt: Boolean,
+ moduleKind: ModuleKind): Unit
def run(config: NodeJSConfig, linkedFile: File): Unit
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index 948b13df..92c071c2 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -72,7 +72,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
toolsClasspath(),
runClasspath(),
finalMainClassOpt().toOption,
- FastOpt
+ FastOpt,
+ moduleKind()
)
}
@@ -82,7 +83,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
toolsClasspath(),
runClasspath(),
finalMainClassOpt().toOption,
- FullOpt
+ FullOpt,
+ moduleKind()
)
}
@@ -114,7 +116,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
toolsClasspath: Agg[PathRef],
runClasspath: Agg[PathRef],
mainClass: Option[String],
- mode: OptimizeMode)(implicit ctx: Ctx.Dest): PathRef = {
+ mode: OptimizeMode,
+ moduleKind: ModuleKind)(implicit ctx: Ctx.Dest): PathRef = {
val outputPath = ctx.dest / "out.js"
mkdir(ctx.dest)
@@ -132,7 +135,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
libraries,
outputPath.toIO,
mainClass,
- mode == FullOpt
+ mode == FullOpt,
+ moduleKind
)
PathRef(outputPath)
}
@@ -159,6 +163,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
override def platformSuffix = s"_sjs${artifactScalaJSVersion()}"
def nodeJSConfig = T { NodeJSConfig() }
+
+ def moduleKind: T[ModuleKind] = T { ModuleKind.NoModule }
}
trait TestScalaJSModule extends ScalaJSModule with TestModule {
@@ -177,7 +183,8 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule {
toolsClasspath(),
scalaJSTestDeps() ++ runClasspath(),
None,
- FastOpt
+ FastOpt,
+ moduleKind()
)
}