diff options
Diffstat (limited to 'plugin/src/sbt-test/sbt-jni/simple')
8 files changed, 70 insertions, 0 deletions
diff --git a/plugin/src/sbt-test/sbt-jni/simple/README.md b/plugin/src/sbt-test/sbt-jni/simple/README.md new file mode 100644 index 0000000..54179b2 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/README.md @@ -0,0 +1 @@ +Very basic test. diff --git a/plugin/src/sbt-test/sbt-jni/simple/build.sbt b/plugin/src/sbt-test/sbt-jni/simple/build.sbt new file mode 100644 index 0000000..e324d5a --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/build.sbt @@ -0,0 +1,12 @@ +ivyLoggingLevel := UpdateLogging.Quiet + +lazy val root = (project in file(".")). + aggregate(core, native) + +lazy val core = (project in file("core")). + settings(target in javah := (sourceDirectory in nativeCompile in native).value / "include"). + dependsOn(native % Runtime) + +lazy val native = (project in file("native")). + settings(sourceDirectory in nativeCompile := sourceDirectory.value). + enablePlugins(JniNative) diff --git a/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Library.scala b/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Library.scala new file mode 100644 index 0000000..785f8dd --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Library.scala @@ -0,0 +1,10 @@ +package simple + +import ch.jodersky.jni.nativeLoader + +@nativeLoader("demo0") +object Library { + + @native def say(message: String): Int + +} diff --git a/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Main.scala b/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Main.scala new file mode 100644 index 0000000..c54d6e0 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/core/src/main/scala/simple/Main.scala @@ -0,0 +1,10 @@ +package simple + +object Main { + + def main(args: Array[String]): Unit = { + val result = Library.say("hello world") + assert(result == 42) + } + +} diff --git a/plugin/src/sbt-test/sbt-jni/simple/native/src/library.c b/plugin/src/sbt-test/sbt-jni/simple/native/src/library.c new file mode 100644 index 0000000..4fa15b1 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/native/src/library.c @@ -0,0 +1,16 @@ +#include <stdio.h> +#include "simple_Library__.h" + +/* + * Class: simple_Library__ + * Method: say + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_simple_Library_00024_say +(JNIEnv *env, jobject clazz, jstring message) { + const char* msg = (*env)->GetStringUTFChars(env, message, 0); + fprintf(stdout, "Printing from native library: %s\n", msg); + fflush(stdout); + (*env)->ReleaseStringUTFChars(env, message, msg); + return 42; +} diff --git a/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala b/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala new file mode 100644 index 0000000..cd63c89 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala @@ -0,0 +1,14 @@ +import sbt._ +import sbt.Keys._ + +object ScriptedHelper extends AutoPlugin { + + override def requires = empty + override def trigger = allRequirements + + override def projectSettings = Seq( + crossScalaVersions := Seq("2.11.8", "2.12.0-M4"), + scalaVersion := crossScalaVersions.value.head + ) + +} diff --git a/plugin/src/sbt-test/sbt-jni/simple/project/plugins.sbt b/plugin/src/sbt-test/sbt-jni/simple/project/plugins.sbt new file mode 100644 index 0000000..b8fc7ed --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/project/plugins.sbt @@ -0,0 +1,3 @@ +ivyLoggingLevel := UpdateLogging.Quiet + +addSbtPlugin("ch.jodersky" % "sbt-jni" % System.getProperty("plugin.version")) diff --git a/plugin/src/sbt-test/sbt-jni/simple/test b/plugin/src/sbt-test/sbt-jni/simple/test new file mode 100644 index 0000000..dd9e5bf --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/simple/test @@ -0,0 +1,4 @@ +> javah +$ exists native/src/include/simple_Library__.h +> nativeInit cmake demo +> core/run
\ No newline at end of file |