diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-06-30 15:07:11 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-06-30 15:07:11 +0200 |
commit | 9344cd6a9d437198bc6baf32d225d8a6c4a0c462 (patch) | |
tree | e9ed3dc94bc6d2d49837438e413937125ba0be68 /project/jni.scala | |
parent | 6fa2c93ca687e8900b00bb1403588107c7f63cbd (diff) | |
download | akka-serial-9344cd6a9d437198bc6baf32d225d8a6c4a0c462.tar.gz akka-serial-9344cd6a9d437198bc6baf32d225d8a6c4a0c462.tar.bz2 akka-serial-9344cd6a9d437198bc6baf32d225d8a6c4a0c462.zip |
remove plugin dependencies
Diffstat (limited to 'project/jni.scala')
-rw-r--r-- | project/jni.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/project/jni.scala b/project/jni.scala new file mode 100644 index 0000000..7cde93b --- /dev/null +++ b/project/jni.scala @@ -0,0 +1,41 @@ +import sbt._ +import Keys._ +import NativeKeys._ + +object JniKeys { + 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 javahClasspath = taskKey[Seq[File]]("Classpath to use in javah.") + val javah = taskKey[Seq[File]]("Generate JNI headers.") +} + +object JniDefaults { + import JniKeys._ + + val defaultSettings: Seq[Setting[_]] = Seq( + jdkHome := file(sys.env("JAVA_HOME")), + javahHeaderDirectory := (sourceManaged in Native).value / "javah", + 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 = javahClasspath.value + 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) + } + +} + |