7 sourceCompatibility = JavaVersion.VERSION_11
8 targetCompatibility = JavaVersion.VERSION_11
10 mainClassName = "org.asamk.signal.Main"
14 compileJava.options.encoding = "UTF-8"
22 implementation("com.google.protobuf:protobuf-javalite:3.10.0")
23 implementation("com.github.turasa:signal-service-java:2.15.3_unofficial_18")
24 implementation("org.bouncycastle:bcprov-jdk15on:1.68")
25 implementation("net.sourceforge.argparse4j:argparse4j:0.8.1")
26 implementation("com.github.hypfvieh:dbus-java:3.2.4")
27 implementation("org.slf4j:slf4j-simple:1.7.30")
33 "Implementation-Title": project.name,
34 "Implementation-Version": project.version,
35 "Main-Class": project.mainClassName,
41 if (project.hasProperty("appArgs")) {
42 // allow passing command-line arguments to the main application e.g.:
43 // $ gradle run -PappArgs="['-u', '+...', 'daemon', '--json']"
44 args(Eval.me(appArgs))
48 // Find any 3rd party libraries which have released new versions
49 // to the central Maven repo since we last upgraded.
50 task checkLibVersions {
54 configurations.each { configuration ->
55 configuration.allDependencies.each { dependency ->
56 def version = dependency.version
57 if (!checked[dependency]) {
58 def group = dependency.group
59 def path = group.replace(".", "/")
60 def name = dependency.name
61 def url = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
63 def metadata = new XmlSlurper().parseText(url.toURL().text)
64 def newest = metadata.versioning.latest;
65 if ("$version" != "$newest") {
66 println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
68 } catch (FileNotFoundException e) {
69 logger.debug("Unable to download $url: $e.message")
70 } catch (org.xml.sax.SAXParseException e) {
71 logger.debug("Unable to parse $url: $e.message")
73 checked[dependency] = true
81 task assembleNativeImage {
84 def graalVMHome = System.getenv("GRAALVM_HOME")
86 throw new GradleException("Required GRAALVM_HOME environment variable not set.")
88 def nativeBinaryOutputPath = "$buildDir/native-image"
89 def nativeBinaryName = "signal-cli"
91 mkdir(nativeBinaryOutputPath)
95 commandLine("$graalVMHome/bin/native-image",
96 "-H:Path=$nativeBinaryOutputPath",
97 "-H:Name=$nativeBinaryName",
98 "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json",
99 "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json",
100 "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json",
101 "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json",
103 "--allow-incomplete-classpath",
104 "--report-unsupported-elements-at-runtime",
105 "--enable-url-protocols=http,https",
107 "--enable-all-security-services",
109 sourceSets.main.runtimeClasspath.asPath,
110 project.mainClassName)