diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt index a7cf43d17c6..c40a68537d6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension.kt @@ -6,8 +6,10 @@ package org.jetbrains.kotlin.gradle.dsl import org.gradle.api.Action +import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Project +import org.gradle.api.UnknownDomainObjectException import org.gradle.api.internal.plugins.DslObject import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.jvm.toolchain.JavaToolchainSpec @@ -28,6 +30,7 @@ import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAwar import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.statistics.metrics.StringMetrics +import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject import kotlin.reflect.KClass @@ -111,6 +114,15 @@ abstract class KotlinTopLevelExtension(internal val project: Project) : KotlinTo override fun explicitApiWarning() { explicitApi = ExplicitApiMode.Warning } + + @ExperimentalKotlinGradlePluginApi + fun NamedDomainObjectContainer.invokeWhenCreated(name: String, configure: T.() -> Unit) { + val invoked = AtomicBoolean(false) + matching { it.name == name }.all { value -> if (!invoked.getAndSet(true)) value.configure() } + project.whenEvaluated { + if (!invoked.getAndSet(true)) named(name).configure(configure) + } + } } open class KotlinProjectExtension @Inject constructor(project: Project) : KotlinTopLevelExtension(project), KotlinSourceSetContainer { @@ -217,11 +229,13 @@ abstract class KotlinJsProjectExtension(project: Project) : it.irPreset = null } .createTarget("js") + KotlinJsCompilerType.IR -> irPreset .also { it.mixedMode = false } .createTarget("js") + KotlinJsCompilerType.BOTH -> legacyPreset .also { irPreset.mixedMode = true diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ArchiveReproducibilityTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ArchiveReproducibilityTest.kt index e30f5dc09f0..c8c9c203b64 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ArchiveReproducibilityTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ArchiveReproducibilityTest.kt @@ -9,8 +9,6 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.Project import org.gradle.api.tasks.bundling.AbstractArchiveTask -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithMPP -import org.jetbrains.kotlin.gradle.mpp.kotlin import org.junit.Test import kotlin.test.assertFalse import kotlin.test.assertTrue diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt index f370817997b..1b54edd4d63 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt @@ -11,9 +11,6 @@ import org.gradle.api.attributes.Category import org.gradle.api.attributes.Usage import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.kotlinExtension -import org.jetbrains.kotlin.gradle.mpp.androidLibrary -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithMPP -import org.jetbrains.kotlin.gradle.mpp.kotlin import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/EnforcedPlatformTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/EnforcedPlatformTest.kt index c0c3e35a04d..c8c27795a71 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/EnforcedPlatformTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/EnforcedPlatformTest.kt @@ -5,8 +5,6 @@ package org.jetbrains.kotlin.gradle -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithMPP -import org.jetbrains.kotlin.gradle.mpp.kotlin import kotlin.test.Test import kotlin.test.assertTrue diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KaptApiTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KaptApiTest.kt index 7ae3ed848e6..488fc781c23 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KaptApiTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KaptApiTest.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.internal.project.ProjectInternal import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin import org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask -import org.jetbrains.kotlin.gradle.mpp.buildProject import org.jetbrains.kotlin.gradle.plugin.KotlinBaseApiPlugin import org.jetbrains.kotlin.gradle.plugin.KotlinJvmFactory import org.jetbrains.kotlin.gradle.tasks.Kapt diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinCompileApiTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinCompileApiTest.kt index a85324c7188..c9cfd981d50 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinCompileApiTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinCompileApiTest.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.internal.project.ProjectInternal import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode -import org.jetbrains.kotlin.gradle.mpp.buildProject import org.jetbrains.kotlin.gradle.plugin.KotlinBaseApiPlugin import org.jetbrains.kotlin.gradle.plugin.KotlinJvmFactory import org.jetbrains.kotlin.gradle.tasks.KotlinCompile diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheckTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheckTest.kt index 6f021a764e5..d8039ea6d71 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheckTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheckTest.kt @@ -9,9 +9,6 @@ package org.jetbrains.kotlin.gradle import com.android.build.gradle.LibraryPlugin import org.gradle.testfixtures.ProjectBuilder -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithKPM -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithMPP -import org.jetbrains.kotlin.gradle.mpp.kotlin import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheck.AndroidGradlePluginStringProvider import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheck.AndroidGradlePluginVersion import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheck.AndroidGradlePluginVersionParser diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/Util.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/buildProject.kt similarity index 94% rename from libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/Util.kt rename to libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/buildProject.kt index 147f47edbe6..b889b631c1c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/Util.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/buildProject.kt @@ -3,13 +3,12 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.gradle.mpp +package org.jetbrains.kotlin.gradle import com.android.build.gradle.LibraryExtension import org.gradle.api.Project import org.gradle.api.internal.project.ProjectInternal import org.gradle.testfixtures.ProjectBuilder -import org.jetbrains.kotlin.gradle.addBuildEventsListenerRegistryMock import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt index c057e222135..d78afbcf0ac 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/CompilationSpecificPluginPath.kt @@ -10,6 +10,9 @@ import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.gradle.api.plugins.ExtraPropertiesExtension import org.gradle.api.provider.Provider +import org.jetbrains.kotlin.gradle.buildProject +import org.jetbrains.kotlin.gradle.buildProjectWithMPP +import org.jetbrains.kotlin.gradle.kotlin import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.tasks.* import kotlin.test.* diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt index 7042381bc95..0cd43f02f6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/KpmCompilerPluginTest.kt @@ -8,9 +8,11 @@ package org.jetbrains.kotlin.gradle.mpp import org.gradle.api.Project import org.gradle.api.artifacts.Configuration +import org.jetbrains.kotlin.gradle.buildProjectWithKPM import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmCompilerPlugin import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmLinuxX64Variant import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm +import org.jetbrains.kotlin.gradle.projectModel import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinNativeCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerPluginData diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/android/KotlinAndroidSourceSetLayoutExtensionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/android/KotlinAndroidSourceSetLayoutExtensionTest.kt index c2d278bac91..fa24304e59b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/android/KotlinAndroidSourceSetLayoutExtensionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/android/KotlinAndroidSourceSetLayoutExtensionTest.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.sources.android import org.gradle.testfixtures.ProjectBuilder -import org.jetbrains.kotlin.gradle.mpp.buildProjectWithMPP +import org.jetbrains.kotlin.gradle.buildProjectWithMPP import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper import org.jetbrains.kotlin.gradle.plugin.sources.android.kotlinAndroidSourceSetLayout import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV1