Skip to content

Commit

Permalink
Fixed build for all kotlin versions
Browse files Browse the repository at this point in the history
  • Loading branch information
Mr3zee committed Jun 17, 2024
1 parent e8865bc commit f61a4d1
Show file tree
Hide file tree
Showing 27 changed files with 223 additions and 52 deletions.
17 changes: 8 additions & 9 deletions gradle-conventions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,15 @@ configurations.configureEach {

val kotlinVersion: String by extra

dependencies {
implementation(libs.kotlin.gradle.plugin)
implementation(libs.detekt.gradle.plugin)

if (kotlinVersion >= "1.8.0") {
implementation(libs.kover.gradle.plugin)
}
val kotlinVersionPluginProjectName = if (kotlinVersion <= "1.9.10") {
":kotlin-version-old"
} else {
":kotlin-version-new"
}

// https://stackoverflow.com/questions/76713758/use-version-catalog-inside-precompiled-gradle-plugin
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
dependencies {
implementation(project(kotlinVersionPluginProjectName))
implementation(project(":conventions-utils"))
}

gradlePlugin {
Expand Down
30 changes: 30 additions & 0 deletions gradle-conventions/conventions-utils/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

plugins {
alias(libs.plugins.gradle.kotlin.dsl)
}

configurations.configureEach {
resolutionStrategy {
force(libs.kotlin.reflect)
force(libs.kotlin.stdlib)
force(libs.kotlin.stdlib.jdk7)
force(libs.kotlin.stdlib.jdk8)
}
}

val kotlinVersion: String by extra

dependencies {
api(libs.kotlin.gradle.plugin)
api(libs.detekt.gradle.plugin)

if (kotlinVersion >= "1.8.0") {
api(libs.kover.gradle.plugin)
}

// https://stackoverflow.com/questions/76713758/use-version-catalog-inside-precompiled-gradle-plugin
api(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@

package util

import org.gradle.api.*
import org.gradle.kotlin.dsl.*
import java.io.*
import org.gradle.api.Project
import org.gradle.kotlin.dsl.getValue
import org.gradle.kotlin.dsl.getting
import org.gradle.kotlin.dsl.invoke
import java.io.File

internal fun Project.configureJs() {
fun Project.configureJs() {
configureJsTasks()

kotlin {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension

internal fun Project.kotlin(block: KotlinMultiplatformExtension.() -> Unit) {
fun Project.kotlin(block: KotlinMultiplatformExtension.() -> Unit) {
configure(block)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ package util

import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension

internal fun KotlinProjectExtension.optInForRPCApi() {
fun KotlinProjectExtension.optInForRPCApi() {
sourceSets.all {
languageSettings.optIn("kotlinx.rpc.internal.InternalRPCApi")
languageSettings.optIn("kotlinx.rpc.internal.ExperimentalRPCApi")
Expand Down
2 changes: 1 addition & 1 deletion gradle-conventions/gradle-publish-stub/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ gradlePlugin {
plugins {
named("conventions-gradle-publish") {
id = "conventions-gradle-publish"
version = libs.versions.rpc.core.get()
version = libs.versions.kotlinx.rpc.get()
}
}
}
36 changes: 36 additions & 0 deletions gradle-conventions/kotlin-version-new/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

plugins {
alias(libs.plugins.gradle.kotlin.dsl)
}

configurations.configureEach {
resolutionStrategy {
force(libs.kotlin.reflect)
force(libs.kotlin.stdlib)
force(libs.kotlin.stdlib.jdk7)
force(libs.kotlin.stdlib.jdk8)
}
}

dependencies {
implementation(project(":conventions-utils"))
}

gradlePlugin {
plugins {
named("conventions-kotlin-version-jvm") {
id = "conventions-kotlin-version-jvm"
version = libs.versions.kotlinx.rpc.get()
}
}

plugins {
named("conventions-kotlin-version-kmp") {
id = "conventions-kotlin-version-kmp"
version = libs.versions.kotlinx.rpc.get()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import util.projectLanguageVersion

configure<KotlinJvmProjectExtension> {
compilerOptions(projectLanguageVersion)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import util.projectLanguageVersion

@OptIn(ExperimentalKotlinGradlePluginApi::class)
configure<KotlinMultiplatformExtension> {
compilerOptions(projectLanguageVersion)
}
36 changes: 36 additions & 0 deletions gradle-conventions/kotlin-version-old/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

plugins {
alias(libs.plugins.gradle.kotlin.dsl)
}

configurations.configureEach {
resolutionStrategy {
force(libs.kotlin.reflect)
force(libs.kotlin.stdlib)
force(libs.kotlin.stdlib.jdk7)
force(libs.kotlin.stdlib.jdk8)
}
}

dependencies {
implementation(project(":conventions-utils"))
}

gradlePlugin {
plugins {
named("conventions-kotlin-version-jvm") {
id = "conventions-kotlin-version-jvm"
version = libs.versions.kotlinx.rpc.get()
}
}

plugins {
named("conventions-kotlin-version-kmp") {
id = "conventions-kotlin-version-kmp"
version = libs.versions.kotlinx.rpc.get()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import util.setLanguageVersion

setLanguageVersion()
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import util.setLanguageVersion

setLanguageVersion()
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

package util

import org.gradle.api.Project
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

fun Project.setLanguageVersion() {
tasks.withType<KotlinCompile>().all {
kotlinOptions {
freeCompilerArgs += "-language-version=1.7"
freeCompilerArgs += "-api-version=1.7"
}
}
}
8 changes: 8 additions & 0 deletions gradle-conventions/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ plugins {
}

include(":compiler-specific-module")
include(":conventions-utils")

val kotlinVersion: String by extra
val isLatestKotlinVersion: Boolean by extra

if (isLatestKotlinVersion) {
Expand All @@ -23,3 +25,9 @@ if (isLatestKotlinVersion) {
include(":kover-stub")
include(":gradle-publish-stub")
}

if (kotlinVersion <= "1.9.10") {
include(":kotlin-version-old")
} else {
include(":kotlin-version-new")
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/

import io.gitlab.arturbosch.detekt.Detekt
import util.libs

plugins {
id("io.gitlab.arturbosch.detekt")
Expand All @@ -16,6 +17,8 @@ val globalDetektDir = "$globalRootDir/detekt"

// https://detekt.dev/docs/gettingstarted/gradle#options-for-detekt-configuration-closure
detekt {
toolVersion = libs.versions.detekt.analyzer.get()

buildUponDefaultConfig = false

// TC will fail only on Detekt codestyle configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,14 @@

import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import util.optInForRPCApi
import util.projectLanguageVersion

plugins {
id("conventions-common")
id("org.jetbrains.kotlin.jvm")
id("conventions-kotlin-version-jvm")
}

configure<KotlinJvmProjectExtension> {
compilerOptions(projectLanguageVersion)

jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(8))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,18 @@
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
*/

import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import util.configureKotlin
import util.optInForRPCApi
import util.optionalProperty
import util.projectLanguageVersion

plugins {
id("conventions-common")
id("org.jetbrains.kotlin.multiplatform")
id("conventions-kotlin-version-kmp")
}

@OptIn(ExperimentalKotlinGradlePluginApi::class)
configure<KotlinMultiplatformExtension> {
compilerOptions(projectLanguageVersion)

optInForRPCApi()

explicitApi()
Expand Down
3 changes: 3 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ org.gradle.caching=true

# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply ksp and compiler plugins
kotlinx.rpc.plugin.internalDevelopment=true

# https://github.com/gradle/gradle/issues/20416
systemProp.org.gradle.kotlin.dsl.precompiled.accessors.strict=true
36 changes: 18 additions & 18 deletions gradle/kotlin-versions-lookup.csv
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
Kotlin,gradle-kotlin-dsl
1.9.24,4.1.0
1.9.23,4.1.0
1.9.22,4.1.0
1.9.21,4.1.0
1.9.20,4.1.0
1.9.10,4.1.0
1.9.0,4.1.0
1.8.22,4.0.6
1.8.21,4.0.6
1.8.20,4.0.6
1.8.10,4.0.6
1.8.0,4.0.0
1.7.22,2.3.3
1.7.21,2.3.3
1.7.20,2.3.3
1.7.10,2.3.3
1.7.0,2.3.3
Kotlin,ksp,atomicfu,serialization,detekt-gradle-plugin,gradle-kotlin-dsl,binary-compatibility-validator,kover
1.9.24,1.0.20,0.22.0,1.6.1,1.23.6,4.1.0,0.14.0,0.8.0
1.9.23,1.0.19,0.22.0,1.6.1,1.23.6,4.1.0,0.14.0,0.8.0
1.9.22,1.0.17,0.22.0,1.6.1,1.23.6,4.1.0,0.14.0,0.8.0
1.9.21,1.0.16,0.22.0,1.6.1,1.23.6,4.1.0,0.14.0,0.8.0
1.9.20,1.0.14,0.22.0,1.6.1,1.23.6,4.1.0,0.14.0,0.8.0
1.9.10,1.0.13,0.22.0,1.6.0,1.23.3,4.1.0,0.14.0,0.8.0
1.9.0,1.0.13,0.22.0,1.6.0,1.23.1,4.1.0,0.14.0,0.8.0
1.8.22,1.0.11,0.21.0,1.5.1,1.23.0,4.0.6,0.14.0,0.8.0
1.8.21,1.0.11,0.21.0,1.5.1,1.23.0,4.0.6,0.14.0,0.8.0
1.8.20,1.0.11,0.21.0,1.5.0,1.23.0,4.0.6,0.14.0,0.8.0
1.8.10,1.0.9,0.20.0,1.5.0,1.23.0,4.0.6,0.12.1,0.8.0
1.8.0,1.0.9,0.20.0,1.4.1,1.23.0,4.0.0,0.12.0,0.8.0
1.7.22,1.0.8,0.18.5,1.4.1,1.22.0,2.3.3,0.12.0,0.0.0
1.7.21,1.0.8,0.18.5,1.4.1,1.22.0,2.3.3,0.12.0,0.0.0
1.7.20,1.0.8,0.18.5,1.4.1,1.22.0,2.3.3,0.12.0,0.0.0
1.7.10,1.0.6,0.18.0,1.4.0,1.22.0,2.3.3,0.12.0,0.0.0
1.7.0,1.0.6,0.18.0,1.4.0,1.22.0,2.3.3,0.12.0,0.0.0
Loading

0 comments on commit f61a4d1

Please sign in to comment.