diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-06-18 18:05:20 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-06-18 18:05:20 +0200 |
commit | b0c32f5325702dd7f7ef3d5ccc0eb9a2b972cf7a (patch) | |
tree | 7030bd58c071fecb0ca737c08c295849d1460e45 /project/Jni.scala | |
parent | df6a79639dfb5241c57d9af4c6e2274de68166e0 (diff) | |
download | akka-serial-b0c32f5325702dd7f7ef3d5ccc0eb9a2b972cf7a.tar.gz akka-serial-b0c32f5325702dd7f7ef3d5ccc0eb9a2b972cf7a.tar.bz2 akka-serial-b0c32f5325702dd7f7ef3d5ccc0eb9a2b972cf7a.zip |
use sbt-native and jni plugin
Diffstat (limited to 'project/Jni.scala')
-rw-r--r-- | project/Jni.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/project/Jni.scala b/project/Jni.scala new file mode 100644 index 0000000..0263786 --- /dev/null +++ b/project/Jni.scala @@ -0,0 +1,37 @@ +import sbt._ +import Keys._ +import com.github.jodersky.build.NativeKeys._ + +object Jni { + val jdkHome = settingKey[File]("Home of JDK.") + val javahHeaderDirectory = settingKey[File]("Directory where generated javah header files are placed.") + val javahClasses = settingKey[Seq[String]]("Fully qualified names of classes containing native declarations.") + val javah = taskKey[Seq[File]]("Generate JNI headers.") + + val defaultSettings: Seq[Setting[_]] = Seq( + jdkHome := file(sys.env("JAVA_HOME")), + javahHeaderDirectory := (sourceManaged in Native).value / "javah", + javah := { + + val cp = (fullClasspath in Compile).value.map(_.data.getAbsolutePath).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) + }, + sourceGenerators in Native <+= javah map {headers => + headers + }, + includeDirectories in Native += javahHeaderDirectory.value, + javah <<= (javah dependsOn (compile in Compile)), + includeDirectories in Native += jdkHome.value / "include" + ) +} + |