Daniel Pitts
10/05/2024, 1:23 AMDaniel Pitts
10/05/2024, 1:24 AMplugins {
`cpp-library`
}
group = "com.stochastictinkr"
version = "1.0-SNAPSHOT"
val jdkHome = System.getenv("JAVA_HOME") ?: System.getenv("JDK_HOME")
library {
baseName = "niko-pty"
targetMachines.addAll(
machines.macOS.x86_64,
machines.linux.x86_64,
)
binaries.configureEach {
if (targetPlatform.targetMachine.operatingSystemFamily.isMacOs) {
// Add JNI library to macOS binaries
compileTask.get().compilerArgs.addAll(
"-I$jdkHome/include",
"-I$jdkHome/include/darwin",
)
}
}
}
Daniel Pitts
10/05/2024, 1:28 AMplugins {
alias(libs.plugins.kotlin.jvm)
}
group = "com.stochastictinkr"
version = "1.0-SNAPSHOT"
dependencies {
implementation(project(":niko-pty:native"))
}
repositories {
mavenCentral()
}
Daniel Pitts
10/05/2024, 1:28 AMNo matching variant of project :niko-pty:native was found. The consumer was configured to find a library for use during compile-time, compatible with Java 21, preferably in the form of class files, preferably optimized for standard JVMs, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
with a bunch of variants.Vampire
10/05/2024, 2:58 AMDaniel Pitts
10/05/2024, 2:59 AMimplementation(project(":niko-pty:native")) {
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.NATIVE_LINK))
attribute(CppBinary.OPTIMIZED_ATTRIBUTE, false)
}
}
Though it doesn't seem to package the lib into the jar file.Daniel Pitts
10/05/2024, 3:02 AMRuntime.getRuntime().load(PseudoTerminal::class.java.classLoader.getResource("libniko-pty.dylib")!!.path)
Daniel Pitts
10/05/2024, 3:04 AM/Users/pittsd/.sdkman/candidates/java/21.0.1-open/bin/java --add-opens=java.base/java.io=ALL-UNNAMED -javaagent:/Users/pittsd/Applications/IntelliJ IDEA <http://Ultimate.app/Contents/lib/idea_rt.jar=64373:/Users/pittsd/Applications/IntelliJ|Ultimate.app/Contents/lib/idea_rt.jar=64373:/Users/pittsd/Applications/IntelliJ> IDEA <http://Ultimate.app/Contents/bin|Ultimate.app/Contents/bin> -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath /Users/pittsd/dev/niko/niko-nikoterm/build/classes/kotlin/main:/Users/pittsd/dev/niko/niko-ecma48/build/classes/kotlin/main:/Users/pittsd/dev/niko/niko-telnet/build/classes/kotlin/main:/Users/pittsd/dev/niko/niko-pty/build/classes/kotlin/main:/Users/pittsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.0/b48df2c4aede9586cc931ead433bc02d6fd7879e/kotlin-stdlib-2.0.0.jar:/Users/pittsd/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.14.0/28934d48aed814f11e4c584da55c49fa7032b31b/jna-platform-5.14.0.jar:/Users/pittsd/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/jna/5.14.0/67bf3eaea4f0718cb376a181a629e5f88fa1c9dd/jna-5.14.0.jar:/Users/pittsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.8.1/bb0e192bd7c2b6b8217440d36e9758e377e450/kotlinx-coroutines-core-jvm-1.8.1.jar:/Users/pittsd/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/23.0.0/8cc20c07506ec18e0834947b84a864bfc094484e/annotations-23.0.0.jar:/Users/pittsd/dev/niko/niko-io/build/classes/kotlin/main:/Users/pittsd/dev/niko/niko-pty/native/build/lib/main/debug/macos/libniko-pty.dylib com.stochastictinkr.niko.term.NikoTermKt
Vampire
10/05/2024, 3:19 AMDaniel Pitts
10/05/2024, 3:20 AMVampire
10/05/2024, 3:20 AMDaniel Pitts
10/05/2024, 3:21 AMVampire
10/05/2024, 3:21 AMRuntime.getRuntime().load(PseudoTerminal::class.java.classLoader.getResource("libniko-pty.dylib")!!.path)
would work. You would probably need to unpack it to some location and load it from there I guessDaniel Pitts
10/05/2024, 3:22 AMVampire
10/05/2024, 3:24 AMlayout.buildDirectory
, and then use that task as srcDir
for the resources
source directory set of the main
source set.Daniel Pitts
10/05/2024, 3:25 AMDaniel Pitts
10/05/2024, 3:26 AMVampire
10/05/2024, 3:31 AMDaniel Pitts
10/05/2024, 3:31 AMfork
which doesn't work properly with JNA.Daniel Pitts
10/05/2024, 3:32 AM