6 id("org.graalvm.buildtools.native") version "0.10.4"
12 sourceCompatibility = JavaVersion.VERSION_21
13 targetCompatibility = JavaVersion.VERSION_21
15 if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) {
17 languageVersion.set(JavaLanguageVersion.of(targetCompatibility.majorVersion))
23 mainClass.set("org.asamk.signal.Main")
29 buildArgs.add("--install-exit-handlers")
30 buildArgs.add("-Dfile.encoding=UTF-8")
31 buildArgs.add("-J-Dfile.encoding=UTF-8")
32 resources.autodetect()
33 configurationFileDirectories.from(file("graalvm-config-dir"))
34 if (System.getenv("GRAALVM_HOME") == null) {
35 toolchainDetection.set(true)
36 javaLauncher.set(javaToolchains.launcherFor {
37 languageVersion.set(JavaLanguageVersion.of(21))
40 toolchainDetection.set(false)
47 implementation(libs.bouncycastle)
48 implementation(libs.jackson.databind)
49 implementation(libs.argparse4j)
50 implementation(libs.dbusjava)
51 implementation(libs.slf4j.api)
52 implementation(libs.slf4j.jul)
53 implementation(libs.logback)
54 implementation(project(":lib"))
59 resolutionStrategy.failOnVersionConflict()
64 tasks.withType<AbstractArchiveTask>().configureEach {
65 isPreserveFileTimestamps = false
66 isReproducibleFileOrder = true
69 tasks.withType<JavaCompile> {
70 options.encoding = "UTF-8"
76 "Implementation-Title" to project.name,
77 "Implementation-Version" to project.version,
78 "Main-Class" to application.mainClass.get()
83 task("fatJar", type = Jar::class) {
84 archiveBaseName.set("${project.name}-fat")
91 "META-INF/INDEX.LIST",
92 "**/module-info.class"
94 duplicatesStrategy = DuplicatesStrategy.WARN
95 from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })