aboutsummaryrefslogtreecommitdiff
path: root/jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2016-01-11 23:11:28 -0800
committerJakob Odersky <jodersky@gmail.com>2016-01-11 23:11:28 -0800
commit1cdbc2d2e04c7ab34d2e5af07567b37c60be571f (patch)
tree6692fcaf7ec11cbcf1a80b941b9b40094e83db3b /jni-plugin/src/main/scala/ch/jodersky/sbt/jni/JniJvm.scala
parentc85463d30f73a43eb5275c504657a5117c126ca4 (diff)
downloadsbt-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.scala21
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
}