diff options
Diffstat (limited to 'scalanativelib')
5 files changed, 66 insertions, 61 deletions
diff --git a/scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala b/scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala new file mode 100644 index 00000000..e1fee0da --- /dev/null +++ b/scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala @@ -0,0 +1,60 @@ +package mill.scalanativelib.api + +import upickle.default.{macroRW, ReadWriter => RW} +import java.io.File +import sbt.testing.Framework + +trait ScalaNativeWorkerApi { + def discoverClang: os.Path + def discoverClangPP: os.Path + def discoverTarget(clang: os.Path, workDir: os.Path): String + def discoverCompileOptions: Seq[String] + def discoverLinkingOptions: Seq[String] + + def config(nativeLibJar: os.Path, + mainClass: String, + classpath: Seq[os.Path], + nativeWorkdir: os.Path, + nativeClang: os.Path, + nativeClangPP: os.Path, + nativeTarget: String, + nativeCompileOptions: Seq[String], + nativeLinkingOptions: Seq[String], + nativeGC: String, + nativeLinkStubs: Boolean, + releaseMode: ReleaseMode, + logLevel: NativeLogLevel): NativeConfig + + def defaultGarbageCollector: String + def nativeLink(nativeConfig: NativeConfig, outPath: os.Path): os.Path + + def newScalaNativeFrameWork(framework: Framework, id: Int, testBinary: File, + logLevel: NativeLogLevel, envVars: Map[String, String]): Framework +} + + +sealed abstract class NativeLogLevel(val level: Int) extends Ordered[NativeLogLevel] { + def compare(that: NativeLogLevel) = this.level - that.level +} + +object NativeLogLevel { + case object Error extends NativeLogLevel(200) + case object Warn extends NativeLogLevel(300) + case object Info extends NativeLogLevel(400) + case object Debug extends NativeLogLevel(500) + case object Trace extends NativeLogLevel(600) + + implicit def rw: RW[NativeLogLevel] = macroRW +} + +sealed abstract class ReleaseMode(val name: String) + +object ReleaseMode { + case object Debug extends ReleaseMode("debug") + case object Release extends ReleaseMode("release") + + implicit def rw: RW[ReleaseMode] = macroRW +} + +// result wrapper to preserve some type safety +case class NativeConfig(config: Any)
\ No newline at end of file diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala index d8a282de..a7a2b96b 100644 --- a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala +++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala @@ -6,37 +6,14 @@ import java.net.URLClassLoader import coursier.Cache import coursier.maven.MavenRepository import mill.define.{Target, Task} -import mill.eval.Result +import mill.api.Result import mill.modules.Jvm import mill.scalalib.{Dep, DepSyntax, Lib, SbtModule, ScalaModule, TestModule, TestRunner} import mill.util.Loose.Agg import sbt.testing.{AnnotatedFingerprint, SubclassFingerprint} import sbt.testing.Fingerprint import upickle.default.{ReadWriter => RW, macroRW} - - -sealed abstract class NativeLogLevel(val level: Int) extends Ordered[NativeLogLevel] { - def compare(that: NativeLogLevel) = this.level - that.level -} - -object NativeLogLevel { - case object Error extends NativeLogLevel(200) - case object Warn extends NativeLogLevel(300) - case object Info extends NativeLogLevel(400) - case object Debug extends NativeLogLevel(500) - case object Trace extends NativeLogLevel(600) - - implicit def rw: RW[NativeLogLevel] = macroRW -} - -sealed abstract class ReleaseMode(val name: String) - -object ReleaseMode { - case object Debug extends ReleaseMode("debug") - case object Release extends ReleaseMode("release") - - implicit def rw: RW[ReleaseMode] = macroRW -} +import mill.scalanativelib.api._ trait ScalaNativeModule extends ScalaModule { outer => diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala index be834e89..80325f1e 100644 --- a/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala +++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala @@ -5,7 +5,7 @@ import java.net.URLClassLoader import mill.define.{Discover, Worker} import mill.{Agg, T} -import sbt.testing.Framework +import mill.scalanativelib.api._ class ScalaNativeWorker { @@ -38,38 +38,6 @@ class ScalaNativeWorker { } } - -// result wrapper to preserve some type safety -case class NativeConfig(config: Any) - -trait ScalaNativeWorkerApi { - def discoverClang: os.Path - def discoverClangPP: os.Path - def discoverTarget(clang: os.Path, workDir: os.Path): String - def discoverCompileOptions: Seq[String] - def discoverLinkingOptions: Seq[String] - - def config(nativeLibJar: os.Path, - mainClass: String, - classpath: Seq[os.Path], - nativeWorkdir: os.Path, - nativeClang: os.Path, - nativeClangPP: os.Path, - nativeTarget: String, - nativeCompileOptions: Seq[String], - nativeLinkingOptions: Seq[String], - nativeGC: String, - nativeLinkStubs: Boolean, - releaseMode: ReleaseMode, - logLevel: NativeLogLevel): NativeConfig - - def defaultGarbageCollector: String - def nativeLink(nativeConfig: NativeConfig, outPath: os.Path): os.Path - - def newScalaNativeFrameWork(framework: Framework, id: Int, testBinary: File, - logLevel: NativeLogLevel, envVars: Map[String, String]): Framework -} - object ScalaNativeWorkerApi extends mill.define.ExternalModule { def scalaNativeWorker: Worker[ScalaNativeWorker] = T.worker { new ScalaNativeWorker() } lazy val millDiscover = Discover[this.type] diff --git a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala b/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala index 37fbfc80..74d4238a 100644 --- a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala +++ b/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala @@ -12,7 +12,7 @@ import utest._ import scala.collection.JavaConverters._ - +import mill.scalanativelib.api._ object HelloNativeWorldTests extends TestSuite { val workspacePath = TestUtil.getOutPathStatic() / "hello-native-world" diff --git a/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala b/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala index 8c24a39e..b32e84ff 100644 --- a/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala +++ b/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala @@ -4,13 +4,13 @@ import java.io.File import java.lang.System.{err, out} import scala.scalanative.build.{Build, Config, Discover, GC, Logger, Mode} -import mill.scalanativelib.{NativeConfig, NativeLogLevel, ReleaseMode} +import mill.scalanativelib.api.{NativeConfig, NativeLogLevel, ReleaseMode} import sbt.testing.Framework import scala.scalanative.testinterface.ScalaNativeFramework -class ScalaNativeWorkerImpl extends mill.scalanativelib.ScalaNativeWorkerApi { +class ScalaNativeWorkerImpl extends mill.scalanativelib.api.ScalaNativeWorkerApi { def logger(level: NativeLogLevel) = Logger( debugFn = msg => if (level >= NativeLogLevel.Debug) out.println(msg), |