mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-14 14:28:29 +02:00
* bindings.java : enable copyLibs task [no ci] This commit adds a dependency on the copyLibs task to the sourcesJar and jar tasks. This ensures that the libwhisper.so file is copied to the correct location before the jar is built. It also sets the executable bit on the gradlew file. * bindings.java : add copyLibs dep for processResources [no ci] This will otherwise cause builds to fail after doing an initial build. * bindings.java : pass structs by value to native code This commit refactors the code to pass the structs by value to the native code. This is done by creating a ByValue class for each struct and using it in the Java code. The motivation for this change is that without this application crashes due to what I believe was memory mis-alignement. When the structs were passed to the native code they would be att different memory locations. Passing by value overcomes this issue and considering that the structs hold parementers (context and full params) it might be alright do to this. These changes allow all the tests to pass. * bindings.java : fix javadoc warnings [no ci] * bindings.java : fix libwhisper.dylib path in build.gradle [no ci] This commit fixes the copyLibwhisperDynlib task in the build.gradle file to copy the correct libwhisper.dylib file from build/src.
142 lines
3.7 KiB
Groovy
142 lines
3.7 KiB
Groovy
plugins {
|
|
id 'java'
|
|
id 'java-library'
|
|
id 'maven-publish'
|
|
id 'signing'
|
|
}
|
|
|
|
archivesBaseName = 'whispercpp'
|
|
group = 'io.github.ggerganov'
|
|
version = '1.4.0'
|
|
|
|
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
sourceSets {
|
|
main {
|
|
resources {
|
|
srcDirs = ['src/main/resources', 'build/generated/resources/main']
|
|
}
|
|
}
|
|
test {
|
|
runtimeClasspath += files('build/generated/resources/main')
|
|
}
|
|
}
|
|
|
|
tasks.register('copyLibwhisperDynlib', Copy) {
|
|
from '../../build/src'
|
|
include 'libwhisper.dylib'
|
|
into 'build/generated/resources/main/darwin'
|
|
}
|
|
|
|
tasks.register('copyLibwhisperSo', Copy) {
|
|
from '../../build/src'
|
|
include 'libwhisper.so'
|
|
into 'build/generated/resources/main/linux-x86-64'
|
|
}
|
|
|
|
tasks.register('copyWhisperDll', Copy) {
|
|
from '../../build/Release'
|
|
include 'whisper.dll'
|
|
into 'build/generated/resources/main/windows-x86-64'
|
|
}
|
|
|
|
tasks.register('copyLibs') {
|
|
dependsOn copyLibwhisperDynlib, copyLibwhisperSo, copyWhisperDll
|
|
}
|
|
|
|
test {
|
|
systemProperty 'jna.library.path', project.file('build/generated/resources/main').absolutePath
|
|
}
|
|
|
|
java {
|
|
withSourcesJar()
|
|
withJavadocJar()
|
|
}
|
|
|
|
sourcesJar() {
|
|
dependsOn copyLibs
|
|
}
|
|
|
|
jar {
|
|
dependsOn copyLibs
|
|
exclude '**/whisper_java.exp', '**/whisper_java.lib'
|
|
}
|
|
|
|
javadoc {
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
test.dependsOn copyLibs
|
|
processResources.dependsOn copyLibs
|
|
|
|
dependencies {
|
|
implementation "net.java.dev.jna:jna:5.13.0"
|
|
testImplementation "org.junit.jupiter:junit-jupiter:5.9.2"
|
|
testImplementation "org.assertj:assertj-core:3.24.2"
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
artifactId = 'whispercpp'
|
|
from components.java
|
|
pom {
|
|
name = 'whispercpp'
|
|
description = "Java JNA bindings for OpenAI's Whisper model, implemented in C/C++"
|
|
url = 'https://github.com/ggerganov/whisper.cpp'
|
|
licenses {
|
|
license {
|
|
name = 'MIT licence'
|
|
url = 'https://raw.githubusercontent.com/ggerganov/whisper.cpp/master/LICENSE'
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id = 'ggerganov'
|
|
name = 'Georgi Gerganov'
|
|
email = 'ggerganov@gmail.com'
|
|
}
|
|
developer {
|
|
id = 'nalbion'
|
|
name = 'Nicholas Albion'
|
|
email = 'nalbion@yahoo.com'
|
|
}
|
|
}
|
|
scm {
|
|
connection = 'scm:git:git://github.com/ggerganov/whisper.cpp.git'
|
|
url = 'https://github.com/ggerganov/whisper.cpp'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
def releasesRepoUrl = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
|
|
def snapshotsRepoUrl = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
|
|
url = version.endsWith('-SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
|
|
credentials {
|
|
username = System.getenv("MAVEN_USERNAME")
|
|
password = System.getenv("MAVEN_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
signing {
|
|
def signingKey = System.getenv("PGP_SECRET")
|
|
def signingPassword = System.getenv("PGP_PASSPHRASE")
|
|
useInMemoryPgpKeys(signingKey, signingPassword)
|
|
sign publishing.publications.mavenJava
|
|
}
|