diff --git a/adapters/primitive-adapters/build.gradle b/adapters/primitive-adapters/build.gradle index 1ee13887e58..c9492d79c9b 100644 --- a/adapters/primitive-adapters/build.gradle +++ b/adapters/primitive-adapters/build.gradle @@ -4,10 +4,9 @@ plugins { alias(libs.plugins.publish) alias(libs.plugins.dokka) id("app.cash.sqldelight.multiplatform") + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-primitive-adapters' kotlin { diff --git a/buildLogic/settings.gradle b/buildLogic/settings.gradle index 38a3ecf5d7d..fe8777dc7d8 100644 --- a/buildLogic/settings.gradle +++ b/buildLogic/settings.gradle @@ -18,4 +18,5 @@ dependencyResolutionManagement { } } -include(":multiplatform-convention") \ No newline at end of file +include(":multiplatform-convention") +include(":toolchain-convention") diff --git a/buildLogic/toolchain-convention/build.gradle b/buildLogic/toolchain-convention/build.gradle new file mode 100644 index 00000000000..049de9edc3a --- /dev/null +++ b/buildLogic/toolchain-convention/build.gradle @@ -0,0 +1,21 @@ +plugins { + alias(libs.plugins.kotlin.jvm) + id("java-gradle-plugin") +} + +gradlePlugin { + plugins { + runtime { + id = "app.cash.sqldelight.toolchain.runtime" + implementationClass = "app.cash.sqldelight.toolchain.RuntimeToolchainConventions" + } + compiler { + id = "app.cash.sqldelight.toolchain.compiler" + implementationClass = "app.cash.sqldelight.toolchain.CompilerToolchainConventions" + } + } +} + +dependencies { + compileOnly libs.kotlin.plugin +} diff --git a/buildLogic/toolchain-convention/src/main/kotlin/app/cash/sqldelight/toolchain/ToolchainConventions.kt b/buildLogic/toolchain-convention/src/main/kotlin/app/cash/sqldelight/toolchain/ToolchainConventions.kt new file mode 100644 index 00000000000..813a49ca57e --- /dev/null +++ b/buildLogic/toolchain-convention/src/main/kotlin/app/cash/sqldelight/toolchain/ToolchainConventions.kt @@ -0,0 +1,20 @@ +package app.cash.sqldelight.toolchain + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.jvm.toolchain.JavaLanguageVersion +import org.gradle.jvm.toolchain.JvmVendorSpec +import org.jetbrains.kotlin.gradle.dsl.kotlinExtension + +abstract class ToolchainConventions(private val jdkVersion: Int) : Plugin { + override fun apply(project: Project) { + project.kotlinExtension.jvmToolchain { spec -> + spec.languageVersion.set(JavaLanguageVersion.of(jdkVersion)) + spec.vendor.set(JvmVendorSpec.AZUL) + } + } +} + +class RuntimeToolchainConventions : ToolchainConventions(8) + +class CompilerToolchainConventions : ToolchainConventions(11) diff --git a/dialects/hsql/build.gradle b/dialects/hsql/build.gradle index 787550a6a9a..710ff837414 100644 --- a/dialects/hsql/build.gradle +++ b/dialects/hsql/build.gradle @@ -3,14 +3,13 @@ plugins { alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':sqldelight-compiler:dialect') diff --git a/dialects/mysql/build.gradle b/dialects/mysql/build.gradle index ac0d61811e5..1e8f63a95bf 100644 --- a/dialects/mysql/build.gradle +++ b/dialects/mysql/build.gradle @@ -4,14 +4,13 @@ plugins { alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { ksp libs.moshiCodegen diff --git a/dialects/postgresql/build.gradle b/dialects/postgresql/build.gradle index 708c068e62c..5c58dc433a2 100644 --- a/dialects/postgresql/build.gradle +++ b/dialects/postgresql/build.gradle @@ -4,14 +4,13 @@ plugins { alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { ksp libs.moshiCodegen diff --git a/dialects/sqlite-3-18/build.gradle b/dialects/sqlite-3-18/build.gradle index 805d20a3992..cc2af5e82d7 100644 --- a/dialects/sqlite-3-18/build.gradle +++ b/dialects/sqlite-3-18/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':sqldelight-compiler:dialect') diff --git a/dialects/sqlite-3-24/build.gradle b/dialects/sqlite-3-24/build.gradle index ce10a07e3c8..3fc03def5a7 100644 --- a/dialects/sqlite-3-24/build.gradle +++ b/dialects/sqlite-3-24/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-18') diff --git a/dialects/sqlite-3-25/build.gradle b/dialects/sqlite-3-25/build.gradle index 1cfced6f28c..2bb0ae9efa3 100644 --- a/dialects/sqlite-3-25/build.gradle +++ b/dialects/sqlite-3-25/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-24') diff --git a/dialects/sqlite-3-30/build.gradle b/dialects/sqlite-3-30/build.gradle index 592f6c58c53..ccd38868284 100644 --- a/dialects/sqlite-3-30/build.gradle +++ b/dialects/sqlite-3-30/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-25') diff --git a/dialects/sqlite-3-33/build.gradle b/dialects/sqlite-3-33/build.gradle index 47c27029a98..757e089a0c0 100644 --- a/dialects/sqlite-3-33/build.gradle +++ b/dialects/sqlite-3-33/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-30') diff --git a/dialects/sqlite-3-35/build.gradle b/dialects/sqlite-3-35/build.gradle index 46914f4c566..88d63372f29 100644 --- a/dialects/sqlite-3-35/build.gradle +++ b/dialects/sqlite-3-35/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-33') diff --git a/dialects/sqlite-3-38/build.gradle b/dialects/sqlite-3-38/build.gradle index 9b388e9246a..a9965c14c52 100644 --- a/dialects/sqlite-3-38/build.gradle +++ b/dialects/sqlite-3-38/build.gradle @@ -2,14 +2,13 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':dialects:sqlite-3-35') diff --git a/dialects/sqlite/json-module/build.gradle b/dialects/sqlite/json-module/build.gradle index 3d08c5e8cfd..9fdc733582b 100644 --- a/dialects/sqlite/json-module/build.gradle +++ b/dialects/sqlite/json-module/build.gradle @@ -3,14 +3,13 @@ plugins { alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } grammarKit { intellijRelease.set(libs.versions.idea) } -kotlin.jvmToolchain(11) - dependencies { api project(':sqldelight-compiler:dialect') diff --git a/drivers/android-driver/build.gradle b/drivers/android-driver/build.gradle index b17a1c66491..5845d577eac 100644 --- a/drivers/android-driver/build.gradle +++ b/drivers/android-driver/build.gradle @@ -3,10 +3,9 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-android-driver' android { diff --git a/drivers/driver-test/build.gradle b/drivers/driver-test/build.gradle index bf73c26d406..814ed263c4f 100644 --- a/drivers/driver-test/build.gradle +++ b/drivers/driver-test/build.gradle @@ -1,5 +1,6 @@ plugins { id("app.cash.sqldelight.multiplatform") + id("app.cash.sqldelight.toolchain.runtime") } // https://youtrack.jetbrains.com/issue/KTIJ-14471 @@ -8,8 +9,6 @@ sourceSets { } kotlin { - jvmToolchain(8) - mingwX86() sourceSets { diff --git a/drivers/jdbc-driver/build.gradle b/drivers/jdbc-driver/build.gradle index aca30023a4c..f6c91f154c9 100644 --- a/drivers/jdbc-driver/build.gradle +++ b/drivers/jdbc-driver/build.gradle @@ -1,13 +1,10 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-jdbc-driver' dependencies { diff --git a/drivers/r2dbc-driver/build.gradle b/drivers/r2dbc-driver/build.gradle index 753d382a909..0ccb76fd172 100644 --- a/drivers/r2dbc-driver/build.gradle +++ b/drivers/r2dbc-driver/build.gradle @@ -4,10 +4,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-r2dbc-driver' dependencies { diff --git a/drivers/sqlite-driver/build.gradle b/drivers/sqlite-driver/build.gradle index 92917b55c66..2a31f4eead5 100644 --- a/drivers/sqlite-driver/build.gradle +++ b/drivers/sqlite-driver/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-sqlite-driver' dependencies { diff --git a/extensions/androidx-paging3/build.gradle b/extensions/androidx-paging3/build.gradle index 3cbbac9d5c0..efa443e5112 100755 --- a/extensions/androidx-paging3/build.gradle +++ b/extensions/androidx-paging3/build.gradle @@ -2,12 +2,11 @@ plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } archivesBaseName = 'sqldelight-androidx-paging3' -kotlin.jvmToolchain(8) - kotlin { ios() jvm() diff --git a/extensions/async-extensions/build.gradle b/extensions/async-extensions/build.gradle index 99ecde08101..0fe6766a383 100644 --- a/extensions/async-extensions/build.gradle +++ b/extensions/async-extensions/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.publish) alias(libs.plugins.dokka) id("app.cash.sqldelight.multiplatform") + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-async-extensions' kotlin { diff --git a/extensions/coroutines-extensions/build.gradle b/extensions/coroutines-extensions/build.gradle index c88b9f64c4a..8b70bf748b5 100644 --- a/extensions/coroutines-extensions/build.gradle +++ b/extensions/coroutines-extensions/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.publish) alias(libs.plugins.dokka) id("app.cash.sqldelight.multiplatform") + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-coroutines-extensions' kotlin { diff --git a/extensions/rxjava2-extensions/build.gradle b/extensions/rxjava2-extensions/build.gradle index 227274b2de0..560bd1c32ca 100644 --- a/extensions/rxjava2-extensions/build.gradle +++ b/extensions/rxjava2-extensions/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-rxjava2-extensions' dependencies { diff --git a/extensions/rxjava3-extensions/build.gradle b/extensions/rxjava3-extensions/build.gradle index 784b03466f7..f0de9ab52c8 100644 --- a/extensions/rxjava3-extensions/build.gradle +++ b/extensions/rxjava3-extensions/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.runtime") } -kotlin.jvmToolchain(8) - archivesBaseName = 'sqldelight-rxjava3-extensions' dependencies { diff --git a/runtime/build.gradle b/runtime/build.gradle index fc97e99df13..d14ce51f71a 100644 --- a/runtime/build.gradle +++ b/runtime/build.gradle @@ -2,6 +2,7 @@ plugins { alias(libs.plugins.publish) alias(libs.plugins.dokka) id("app.cash.sqldelight.multiplatform") + id("app.cash.sqldelight.toolchain.runtime") } // https://youtrack.jetbrains.com/issue/KTIJ-14471 @@ -9,8 +10,6 @@ sourceSets { main } -kotlin.jvmToolchain(8) - kotlin { mingwX86() diff --git a/sample/android/build.gradle b/sample/android/build.gradle index 9fc00e8dbe8..c32bf48ee3d 100644 --- a/sample/android/build.gradle +++ b/sample/android/build.gradle @@ -3,7 +3,10 @@ plugins { alias(libs.plugins.kotlin.android) } -kotlin.jvmToolchain(8) +kotlin.jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(8)) + vendor.set(JvmVendorSpec.AZUL) +} android { compileSdk libs.versions.compileSdk.get() as int diff --git a/settings.gradle b/settings.gradle index 3cf5edfcd4a..fbe14275ad8 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,6 +10,7 @@ pluginManagement { plugins { id "com.gradle.enterprise" version "3.12.3" + id "org.gradle.toolchains.foojay-resolver-convention" version "0.4.0" } gradleEnterprise { diff --git a/sqldelight-compiler/build.gradle b/sqldelight-compiler/build.gradle index 5e392eae524..bf697e1d347 100644 --- a/sqldelight-compiler/build.gradle +++ b/sqldelight-compiler/build.gradle @@ -3,6 +3,7 @@ plugins { alias(libs.plugins.grammarKitComposer) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } tasks.named('test') { @@ -15,8 +16,6 @@ tasks.named('test') { } } -kotlin.jvmToolchain(11) - sourceSets { main.java.srcDir "gen" } diff --git a/sqldelight-compiler/dialect/build.gradle b/sqldelight-compiler/dialect/build.gradle index ca080c0070c..211777667a6 100644 --- a/sqldelight-compiler/dialect/build.gradle +++ b/sqldelight-compiler/dialect/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - dependencies { api libs.sqlPsi api libs.kotlinPoet diff --git a/sqldelight-compiler/integration-tests/build.gradle b/sqldelight-compiler/integration-tests/build.gradle index 1fe85343220..adedb23088b 100644 --- a/sqldelight-compiler/integration-tests/build.gradle +++ b/sqldelight-compiler/integration-tests/build.gradle @@ -1,9 +1,8 @@ plugins { alias(libs.plugins.kotlin.jvm) + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - dependencies { testImplementation project(':runtime') testImplementation project(':drivers:sqlite-driver') diff --git a/sqldelight-gradle-plugin/build.gradle b/sqldelight-gradle-plugin/build.gradle index 5dfc7a29a9d..3cf93acc33c 100644 --- a/sqldelight-gradle-plugin/build.gradle +++ b/sqldelight-gradle-plugin/build.gradle @@ -7,10 +7,9 @@ plugins { alias(libs.plugins.dokka) id("java-gradle-plugin") id("jvm-test-suite") + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - testing { suites { dockerTest(JvmTestSuite) { diff --git a/sqldelight-idea-plugin/build.gradle b/sqldelight-idea-plugin/build.gradle index 4b75ed1c881..b6a3586e71f 100644 --- a/sqldelight-idea-plugin/build.gradle +++ b/sqldelight-idea-plugin/build.gradle @@ -5,10 +5,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.changelog) alias(libs.plugins.ksp) + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - intellij { updateSinceUntilBuild = false diff --git a/sqlite-migrations/build.gradle b/sqlite-migrations/build.gradle index 2a3f63ff869..dcc262672cd 100644 --- a/sqlite-migrations/build.gradle +++ b/sqlite-migrations/build.gradle @@ -2,10 +2,9 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.publish) alias(libs.plugins.dokka) + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - dependencies { // These dependencies will not be shadowed by sqldelight-gradle-plugin compileOnly libs.sqliteJdbc diff --git a/test-util/build.gradle b/test-util/build.gradle index 5430cf1a673..a7c9ef9535c 100644 --- a/test-util/build.gradle +++ b/test-util/build.gradle @@ -1,9 +1,8 @@ plugins { alias(libs.plugins.kotlin.jvm) + id("app.cash.sqldelight.toolchain.compiler") } -kotlin.jvmToolchain(11) - dependencies { api project(':sqldelight-compiler') api project(':dialects:sqlite-3-18')