Skip to content

Commit

Permalink
Improve Gradle Configuration (Suwayomi#478)
Browse files Browse the repository at this point in the history
* Improve gradle configuration

* Formatting fix

Co-authored-by: Aria Moradi <aria.moradi007@gmail.com>

* Improve asm version lock description

Co-authored-by: Aria Moradi <aria.moradi007@gmail.com>

* Improve image decoder description

Co-authored-by: Aria Moradi <aria.moradi007@gmail.com>

Co-authored-by: Aria Moradi <aria.moradi007@gmail.com>
  • Loading branch information
Syer10 and AriaMoradi authored Jan 7, 2023
1 parent deecab3 commit ee8ec46
Show file tree
Hide file tree
Showing 7 changed files with 299 additions and 139 deletions.
12 changes: 12 additions & 0 deletions AndroidCompat/Config/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id(libs.plugins.kotlin.jvm.get().pluginId)
id(libs.plugins.kotlin.serialization.get().pluginId)
id(libs.plugins.kotlinter.get().pluginId)
}

dependencies {
// Shared
implementation(libs.bundles.shared)
testImplementation(libs.bundles.sharedTest)
}
38 changes: 20 additions & 18 deletions AndroidCompat/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,37 +1,39 @@
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id(libs.plugins.kotlin.jvm.get().pluginId)
id(libs.plugins.kotlin.serialization.get().pluginId)
id(libs.plugins.kotlinter.get().pluginId)
}

dependencies {
// Shared
implementation(libs.bundles.shared)
testImplementation(libs.bundles.sharedTest)

// Android stub library
implementation("com.github.Suwayomi:android-jar:1.0.0")
implementation(libs.android.stubs)

// XML
compileOnly("xmlpull:xmlpull:1.1.3.4a")
compileOnly(libs.xmlpull)

// Config API
implementation(project(":AndroidCompat:Config"))
implementation(projects.androidCompat.config)

// APK sig verifier
compileOnly("com.android.tools.build:apksig:7.2.1")
compileOnly(libs.apksig)

// AndroidX annotations
compileOnly("androidx.annotation:annotation:1.5.0")
compileOnly(libs.android.annotations)

// substitute for duktape-android
implementation("org.mozilla:rhino-runtime:1.7.14") // slimmer version of 'org.mozilla:rhino'
implementation("org.mozilla:rhino-engine:1.7.14") // provides the same interface as 'javax.script' a.k.a Nashorn
implementation(libs.bundles.rhino)

// Kotlin wrapper around Java Preferences, makes certain things easier
val multiplatformSettingsVersion = "1.0.0-RC"
implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion")
implementation("com.russhwolf:multiplatform-settings-serialization-jvm:$multiplatformSettingsVersion")
implementation(libs.bundles.settings)

// Android version of SimpleDateFormat
implementation("com.ibm.icu:icu4j:72.1")
implementation(libs.icu4j)

// OpenJDK lacks native JPEG encoder and native WEBP decoder
implementation("com.twelvemonkeys.common:common-lang:3.9.4")
implementation("com.twelvemonkeys.common:common-io:3.9.4")
implementation("com.twelvemonkeys.common:common-image:3.9.4")
implementation("com.twelvemonkeys.imageio:imageio-core:3.9.4")
implementation("com.twelvemonkeys.imageio:imageio-metadata:3.9.4")
implementation("com.twelvemonkeys.imageio:imageio-jpeg:3.4.1")
implementation("com.twelvemonkeys.imageio:imageio-webp:3.9.4")
implementation(libs.bundles.twelvemonkeys)
}
91 changes: 15 additions & 76 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
import org.jmailen.gradle.kotlinter.tasks.FormatTask
import org.jmailen.gradle.kotlinter.tasks.LintTask

@Suppress("DSL_SCOPE_VIOLATION")
plugins {
kotlin("jvm") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion
id("org.jmailen.kotlinter") version "3.12.0"
id("com.github.gmazzo.buildconfig") version "3.1.0" apply false
id("de.undercouch.download") version "5.3.0"
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlinter)
alias(libs.plugins.buildconfig) apply false
alias(libs.plugins.download)
}

allprojects {
Expand All @@ -23,25 +24,17 @@ allprojects {
}
}

val projects = listOf(
project(":AndroidCompat"),
project(":AndroidCompat:Config"),
project(":server")
)

configure(projects) {
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "org.jetbrains.kotlin.plugin.serialization")
apply(plugin = "org.jmailen.kotlinter")

java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
subprojects {
plugins.withType<JavaPlugin> {
extensions.configure<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}

tasks {
withType<KotlinCompile> {
dependsOn(formatKotlin)
withType<KotlinJvmCompile> {
dependsOn("formatKotlin")
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
Expand All @@ -55,58 +48,4 @@ configure(projects) {
source(files("src/kotlin"))
}
}


dependencies {
// Kotlin
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
testImplementation(kotlin("test-junit5"))

// coroutines
val coroutinesVersion = "1.6.4"
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$coroutinesVersion")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion")

val kotlinSerializationVersion = "1.4.1"
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlinSerializationVersion")

// Dependency Injection
implementation("org.kodein.di:kodein-di-conf-jvm:7.15.0")

// Logging
// Stuck on old versions since
// 1. Logback 1.3.0+ requires Java 9
// 2. Slf4j 2.0.0+ doesn't register older versions of Logback
// 3. Kotlin-logging 3.0.2+ requires Java 11, but this is probably a bug
implementation("org.slf4j:slf4j-api:1.7.32")
implementation("ch.qos.logback:logback-classic:1.2.6")
implementation("io.github.microutils:kotlin-logging:2.1.21")

// ReactiveX
implementation("io.reactivex:rxjava:1.3.8")

// dependency both in AndroidCompat and extensions, version locked by Tachiyomi app/extensions
implementation("org.jsoup:jsoup:1.15.3")

// dependency of :AndroidCompat:Config
implementation("com.typesafe:config:1.4.2")
implementation("io.github.config4k:config4k:0.5.0")

// to get application content root
implementation("net.harawata:appdirs:1.2.1")

// dex2jar
val dex2jarVersion = "v56"
implementation("com.github.ThexXTURBOXx.dex2jar:dex-translator:$dex2jarVersion")
implementation("com.github.ThexXTURBOXx.dex2jar:dex-tools:$dex2jarVersion")

// APK parser
implementation("net.dongliu:apk-parser:2.6.10")

// dependency both in AndroidCompat and server, version locked by javalin
implementation("com.fasterxml.jackson.core:jackson-annotations:2.12.4")
}
}
2 changes: 0 additions & 2 deletions buildSrc/src/main/kotlin/Constants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import java.io.BufferedReader
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

const val kotlinVersion = "1.7.20"

const val MainClass = "suwayomi.tachidesk.MainKt"

// should be bumped with each stable release
Expand Down
Loading

0 comments on commit ee8ec46

Please sign in to comment.