diff options
Diffstat (limited to 'project/Jni.scala')
-rw-r--r-- | project/Jni.scala | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/project/Jni.scala b/project/Jni.scala index 8aacf3b..d597269 100644 --- a/project/Jni.scala +++ b/project/Jni.scala @@ -11,27 +11,25 @@ object Jni { val defaultSettings: Seq[Setting[_]] = Seq( jdkHome := file(sys.env("JAVA_HOME")), javahHeaderDirectory := (sourceManaged in Native).value / "javah", - javah := { - - val cp = (classDirectory in Compile).value - for (clazz <- javahClasses.value) { - val parts = Seq( - "javah", - "-d", javahHeaderDirectory.value, - "-classpath", cp, - clazz) - val cmd = parts.mkString(" ") - val ev = Process(cmd) ! streams.value.log - if (ev != 0) throw new RuntimeException("Error occured running javah.") - } - IO.listFiles(javahHeaderDirectory.value) - }, - sourceGenerators in Native <+= javah map {headers => - headers - }, - includeDirectories in Native += javahHeaderDirectory.value, - javah <<= (javah dependsOn (compile in Compile)), - includeDirectories in Native += jdkHome.value / "include" - ) + javah := javahImpl.value, + sourceGenerators in Native <+= javah map { headers => headers}, + includeDirectories in Native += javahHeaderDirectory.value, + includeDirectories in Native += jdkHome.value / "include") + + def javahImpl = Def.task { + val cps = (internalDependencyClasspath in Compile).value.map(_.data).map(_.getAbsolutePath) + val cp = cps.mkString(":") + for (clazz <- javahClasses.value) { + val parts = Seq( + "javah", + "-d", javahHeaderDirectory.value, + "-classpath", cp, + clazz) + val cmd = parts.mkString(" ") + val ev = Process(cmd) ! streams.value.log + if (ev != 0) throw new RuntimeException("Error occured running javah.") + } + IO.listFiles(javahHeaderDirectory.value) + } } |