]> nmode's Git Repositories - signal-cli/blobdiff - build.gradle.kts
Add missing field handling in account record processor
[signal-cli] / build.gradle.kts
index f708423c0cbcfa07c1dc564e4978be6f21c8255a..f07d250b526e7939a95e950706d650cfb84bd0f4 100644 (file)
@@ -3,29 +3,52 @@ plugins {
     application
     eclipse
     `check-lib-versions`
+    id("org.graalvm.buildtools.native") version "0.10.1"
 }
 
-version = "0.8.4"
+version = "0.13.1-SNAPSHOT"
 
 java {
-    sourceCompatibility = JavaVersion.VERSION_11
-    targetCompatibility = JavaVersion.VERSION_11
+    sourceCompatibility = JavaVersion.VERSION_21
+    targetCompatibility = JavaVersion.VERSION_21
+
+    toolchain {
+        languageVersion.set(JavaLanguageVersion.of(21))
+    }
 }
 
 application {
     mainClass.set("org.asamk.signal.Main")
 }
 
-repositories {
-    mavenLocal()
-    mavenCentral()
+graalvmNative {
+    binaries {
+        this["main"].run {
+            buildArgs.add("--install-exit-handlers")
+            buildArgs.add("-Dfile.encoding=UTF-8")
+            buildArgs.add("-J-Dfile.encoding=UTF-8")
+            resources.autodetect()
+            configurationFileDirectories.from(file("graalvm-config-dir"))
+            if (System.getenv("GRAALVM_HOME") == null) {
+                toolchainDetection.set(true)
+                javaLauncher.set(javaToolchains.launcherFor {
+                    languageVersion.set(JavaLanguageVersion.of(21))
+                })
+            } else {
+                toolchainDetection.set(false)
+            }
+        }
+    }
 }
 
 dependencies {
-    implementation("org.bouncycastle:bcprov-jdk15on:1.68")
-    implementation("net.sourceforge.argparse4j:argparse4j:0.9.0")
-    implementation("com.github.hypfvieh:dbus-java:3.3.0")
-    implementation("org.slf4j:slf4j-simple:1.7.30")
+    implementation(libs.bouncycastle)
+    implementation(libs.jackson.databind)
+    implementation(libs.argparse4j)
+    implementation(libs.dbusjava)
+    implementation(libs.slf4j.api)
+    implementation(libs.slf4j.jul)
+    implementation(libs.logback)
     implementation(project(":lib"))
 }
 
@@ -55,50 +78,18 @@ tasks.withType<Jar> {
     }
 }
 
-tasks.withType<JavaExec> {
-    val appArgs: String? by project
-    if (appArgs != null) {
-        // allow passing command-line arguments to the main application e.g.:
-        // $ gradle run -PappArgs="['-u', '+...', 'daemon', '--json']"
-        args = groovy.util.Eval.me(appArgs) as MutableList<String>
-    }
-}
-
-val assembleNativeImage by tasks.registering {
-    dependsOn("assemble")
-
-    var graalVMHome = ""
-    doFirst {
-        graalVMHome = System.getenv("GRAALVM_HOME")
-            ?: throw GradleException("Required GRAALVM_HOME environment variable not set.")
-    }
-
-    doLast {
-        val nativeBinaryOutputPath = "$buildDir/native-image"
-        val nativeBinaryName = "signal-cli"
-
-        mkdir(nativeBinaryOutputPath)
-
-        exec {
-            workingDir = File(".")
-            commandLine(
-                "$graalVMHome/bin/native-image",
-                "-H:Path=$nativeBinaryOutputPath",
-                "-H:Name=$nativeBinaryName",
-                "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json",
-                "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json",
-                "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json",
-                "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json",
-                "--no-fallback",
-                "--allow-incomplete-classpath",
-                "--report-unsupported-elements-at-runtime",
-                "--enable-url-protocols=http,https",
-                "--enable-https",
-                "--enable-all-security-services",
-                "-cp",
-                sourceSets.main.get().runtimeClasspath.asPath,
-                application.mainClass.get()
-            )
-        }
-    }
+task("fatJar", type = Jar::class) {
+    archiveBaseName.set("${project.name}-fat")
+    exclude(
+        "META-INF/*.SF",
+        "META-INF/*.DSA",
+        "META-INF/*.RSA",
+        "META-INF/NOTICE*",
+        "META-INF/LICENSE*",
+        "META-INF/INDEX.LIST",
+        "**/module-info.class"
+    )
+    duplicatesStrategy = DuplicatesStrategy.WARN
+    from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
+    with(tasks.jar.get())
 }