diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index 216cec7429f..f776d77473a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.ProjectLayout import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property @@ -39,6 +40,7 @@ internal open class CInteropCommonizerTask @Inject constructor( private val objectFactory: ObjectFactory, private val execOperations: ExecOperations, + private val projectLayout: ProjectLayout ) : AbstractCInteropCommonizerTask() { internal class CInteropGist( @@ -80,7 +82,7 @@ internal open class CInteropCommonizerTask } - override val outputDirectory: File = project.buildDir.resolve("classes/kotlin/commonizer") + override val outputDirectory: File get() = projectLayout.buildDirectory.get().asFile.resolve("classes/kotlin/commonizer") @get:Internal internal val kotlinPluginVersion: Property = objectFactory diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 8c843845527..d19d7bd4b03 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -19,6 +19,7 @@ import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileCollection import org.gradle.api.file.FileTree +import org.gradle.api.file.ProjectLayout import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.Provider @@ -144,6 +145,10 @@ abstract class AbstractKotlinNativeCompile< @Inject constructor( private val objectFactory: ObjectFactory ): AbstractKotlinCompileTool(objectFactory) { + + @get:Inject + protected abstract val projectLayout: ProjectLayout + @get:Internal abstract val compilation: K @@ -294,10 +299,7 @@ abstract class AbstractKotlinNativeCompile< } @get:Internal - internal val manifestFile: File by lazy { - val inputManifestFile = project.buildDir.resolve("tmp/$name/inputManifest") - inputManifestFile - } + internal val manifestFile: File get() = projectLayout.buildDirectory.asFile.get().resolve("tmp/$name/inputManifest") } // Remove it once actual K2NativeCompilerArguments will be available without 'kotlin.native.enabled = true' flag diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt index d245bdc1519..2463e966d15 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact import org.gradle.api.Action import org.gradle.api.DefaultTask import org.gradle.api.file.FileCollection +import org.gradle.api.file.ProjectLayout import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.* import org.gradle.process.ExecOperations @@ -28,19 +29,18 @@ open class KotlinNativeLinkArtifactTask @Inject constructor( @get:Input val konanTarget: KonanTarget, @get:Input val outputKind: CompilerOutputKind, private val objectFactory: ObjectFactory, - private val execOperations: ExecOperations + private val execOperations: ExecOperations, + private val projectLayout: ProjectLayout ) : DefaultTask() { @get:Input var baseName: String = project.name - private val buildDir = project.buildDir - private val defaultDestinationDir: File get() { val kind = outputKind.visibleName val target = konanTarget.visibleName val type = if (debuggable) "debug" else "release" - return buildDir.resolve("out/$kind/$target/$type") + return projectLayout.buildDirectory.get().asFile.resolve("out/$kind/$target/$type") } private var customDestinationDir: File? = null diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt index 05cf2fb453c..7775904529d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt @@ -9,6 +9,7 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.api.file.ProjectLayout import org.gradle.api.internal.GeneratedSubclass import org.gradle.api.tasks.* import org.jetbrains.kotlin.compilerRunner.konanVersion @@ -91,16 +92,28 @@ internal val GradleKpmModule.buildKotlinToolingMetadataTask: TaskProvider