diff options
author | Jakob Odersky <jodersky@gmail.com> | 2016-01-11 23:11:28 -0800 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2016-01-11 23:11:28 -0800 |
commit | 1cdbc2d2e04c7ab34d2e5af07567b37c60be571f (patch) | |
tree | 6692fcaf7ec11cbcf1a80b941b9b40094e83db3b /jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala | |
parent | c85463d30f73a43eb5275c504657a5117c126ca4 (diff) | |
download | sbt-jni-1cdbc2d2e04c7ab34d2e5af07567b37c60be571f.tar.gz sbt-jni-1cdbc2d2e04c7ab34d2e5af07567b37c60be571f.tar.bz2 sbt-jni-1cdbc2d2e04c7ab34d2e5af07567b37c60be571f.zip |
WIP divide plugin
Diffstat (limited to 'jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala')
-rw-r--r-- | jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala b/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala index 292e1fa..789eabf 100644 --- a/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala +++ b/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala @@ -24,8 +24,9 @@ object JniJvm extends AutoPlugin { lazy val mainSettings: Seq[Setting[_]] = Seq( javahClasses in javah := { - val classFiles: Set[File] = compile.value.relations.allProducts.toSet - val nativeClasses = classFiles.flatMap { file => + val compiled: inc.Analysis = (compile in Compile).value + val classFiles: Set[File] = compiled.relations.allProducts.toSet + val nativeClasses = classFiles flatMap { file => ByteCode.natives(file) } nativeClasses @@ -33,11 +34,17 @@ object JniJvm extends AutoPlugin { target in javah := target.value / "include", - fullClasspath in javah := (fullClasspath in Compile).value, - javah := { val out = (target in javah).value - val jcp: Seq[File] = (fullClasspath in javah).value.map(_.data) + val jcp: Seq[File] = { + (compile in Compile).value + //FIXME: a cleaner approach that would also call compile would + //be to use `fullClasspath`, this however results in generating resources + //which in turn might require header files generated by javah. Hence + //to avoid a cyclic dependency `compile` is called first and the + //class directory returned. + Seq((classDirectory in Compile).value) + } val cp = jcp.mkString(sys.props("path.separator")) val log = streams.value.log @@ -62,9 +69,9 @@ object JniJvm extends AutoPlugin { lazy val clientSettings = Seq( //enable enhanced native library extraction libraryDependencies += "ch.jodersky" %% "jni-library" % Version.PluginVersion, - fork in run := true //fork new JVM as native libraries can only be loaded once + fork in run := true //fork new JVM, since native libraries can only be loaded once ) - override lazy val projectSettings = inConfig(Compile)(mainSettings) ++ clientSettings + override lazy val projectSettings = mainSettings ++ clientSettings } |