Compare commits
2 Commits
v0.2k2.0.2
...
master/k2.
Author | SHA1 | Date | |
---|---|---|---|
4d80bc0e6a | |||
5bbaa5d834 |
impl/src/jvmMain/kotlin/ru/landgrafhomyak/kotlin/kmp_gradle_build_helper
versions.properties@ -6,37 +6,65 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.configureAllCompilations(action: KotlinCompilation<*>.() -> Unit) {
|
public fun KotlinMultiplatformExtension.configureAllCompilationsOnAllTargets(action: KotlinCompilation<*>.() -> Unit) {
|
||||||
this.targets.configureEach { t ->
|
this.targets.configureEach { t ->
|
||||||
t.compilations.configureEach(action)
|
t.compilations.configureEach(action)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.configureAllCompilersOptions(action: KotlinCommonCompilerOptions.() -> Unit) {
|
@Deprecated(
|
||||||
|
message = "New name avoids confusions when function called on wrong scope",
|
||||||
|
replaceWith = ReplaceWith(
|
||||||
|
"this.configureAllCompilationsOnAllTargets",
|
||||||
|
"ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.configureAllCompilationsOnAllTargets"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
public fun KotlinMultiplatformExtension.configureAllCompilations(action: KotlinCompilation<*>.() -> Unit): Unit =
|
||||||
|
this.configureAllCompilationsOnAllTargets(action)
|
||||||
|
|
||||||
|
public fun KotlinMultiplatformExtension.configureAllCompilersOptionsOnAllTargets(action: KotlinCommonCompilerOptions.() -> Unit) {
|
||||||
this.targets.configureEach { t ->
|
this.targets.configureEach { t ->
|
||||||
t.compilations.configureEach { c ->
|
t.configureAllCompilersOptionsOnAllCompilations(action)
|
||||||
c.compileTaskProvider.configure { t ->
|
}
|
||||||
t.compilerOptions(action)
|
}
|
||||||
}
|
|
||||||
|
@Deprecated(
|
||||||
|
message = "New name avoids confusions when function called on wrong scope",
|
||||||
|
replaceWith = ReplaceWith(
|
||||||
|
"this.configureAllCompilersOptionsOnAllTargets",
|
||||||
|
"ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.configureAllCompilersOptionsOnAllTargets"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
public fun KotlinMultiplatformExtension.configureAllCompilersOptions(action: KotlinCommonCompilerOptions.() -> Unit): Unit =
|
||||||
|
this.configureAllCompilersOptionsOnAllTargets(action)
|
||||||
|
|
||||||
|
public fun KotlinTarget.configureAllCompilersOptionsOnAllCompilations(action: KotlinCommonCompilerOptions.() -> Unit) {
|
||||||
|
this.compilations.configureEach { c ->
|
||||||
|
c.compileTaskProvider.configure { t ->
|
||||||
|
t.compilerOptions(action)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.noWarnExpectActual(): Unit =
|
public fun KotlinMultiplatformExtension.noWarnExpectActual(): Unit =
|
||||||
this.configureAllCompilersOptions { this@configureAllCompilersOptions.freeCompilerArgs.add("-Xexpect-actual-classes") }
|
this.configureAllCompilersOptionsOnAllTargets { this@configureAllCompilersOptionsOnAllTargets.freeCompilerArgs.add("-Xexpect-actual-classes") }
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.warningsAsErrors(): Unit =
|
public fun KotlinMultiplatformExtension.warningsAsErrors(): Unit =
|
||||||
this.configureAllCompilersOptions { this@configureAllCompilersOptions.allWarningsAsErrors.set(true) }
|
this.configureAllCompilersOptionsOnAllTargets { this@configureAllCompilersOptionsOnAllTargets.allWarningsAsErrors.set(true) }
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.optIn(classQualname: String): Unit =
|
public fun KotlinMultiplatformExtension.optIn(classQualname: String): Unit =
|
||||||
this.configureAllCompilersOptions { this@configureAllCompilersOptions.optIn.add(classQualname) }
|
this.configureAllCompilersOptionsOnAllTargets { this@configureAllCompilersOptionsOnAllTargets.optIn.add(classQualname) }
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.optInContracts(): Unit =
|
public fun KotlinMultiplatformExtension.optInContracts(): Unit =
|
||||||
this.optIn("kotlin.contracts.ExperimentalContracts")
|
this.optIn("kotlin.contracts.ExperimentalContracts")
|
||||||
|
|
||||||
|
public fun KotlinMultiplatformExtension.optInUnsignedArrayTypes(): Unit =
|
||||||
|
this.optIn("kotlin.ExperimentalUnsignedTypes")
|
||||||
|
|
||||||
public fun KotlinMultiplatformExtension.setCompatibilityWithKotlin(version: KotlinVersion): Unit =
|
public fun KotlinMultiplatformExtension.setCompatibilityWithKotlin(version: KotlinVersion): Unit =
|
||||||
this.configureAllCompilersOptions {
|
this.configureAllCompilersOptionsOnAllTargets {
|
||||||
this@configureAllCompilersOptions.apiVersion.set(version)
|
this@configureAllCompilersOptionsOnAllTargets.apiVersion.set(version)
|
||||||
this@configureAllCompilersOptions.languageVersion.set(version)
|
this@configureAllCompilersOptionsOnAllTargets.languageVersion.set(version)
|
||||||
}
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package ru.landgrafhomyak.kotlin.kmp_gradle_build_helper
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
|
|
||||||
|
|
||||||
|
public enum class Improvements {
|
||||||
|
JAVA_INTERFACES_DEFAULT_METHODS {
|
||||||
|
// since kotlin 1.4
|
||||||
|
override fun fix(target: KotlinMultiplatformExtension) {
|
||||||
|
target.configureAllCompilersOptions { freeCompilerArgs.add("-Xjvm-default=all") }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
internal abstract fun fix(target: KotlinMultiplatformExtension)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public fun KotlinMultiplatformExtension.fixAllStrangeBehavioursExcept(vararg except: Improvements) {
|
||||||
|
(Improvements.values().toSet() - except.toSet()).forEach { f -> f.fix(this) }
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun KotlinMultiplatformExtension.fixAllStrangeBehaviours(): Unit = this.fixAllStrangeBehavioursExcept()
|
@ -1,3 +1,3 @@
|
|||||||
this=0.2
|
this=0.3
|
||||||
kotlin=2.0.20
|
kotlin=2.0.20
|
||||||
gradle=7.5.1
|
gradle=7.5.1
|
Loading…
Reference in New Issue
Block a user