From d7c1f6765e7f2055dec04cf8266823019dd4e187 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Thu, 18 Aug 2022 03:25:23 +0200 Subject: [PATCH] [Gradle, K/N] Compute binaries output dir lazily #KT-52303 Fixed --- .../kotlin/gradle/targets/native/NativeBinaries.kt | 10 ++++++++-- .../gradle/targets/native/tasks/KotlinNativeTasks.kt | 4 +--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt index cac1caee8ca..cfacf67fcd4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt @@ -13,6 +13,8 @@ import org.gradle.api.Project import org.gradle.api.artifacts.Dependency import org.gradle.api.attributes.Attribute import org.gradle.api.attributes.HasAttributes +import org.gradle.api.file.Directory +import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Provider import org.gradle.api.tasks.AbstractExecTask import org.gradle.api.tasks.TaskProvider @@ -97,9 +99,13 @@ sealed class NativeBinary( // Output access. // TODO: Provide output configurations and integrate them with Gradle Native. - var outputDirectory: File = with(project) { + var outputDirectory: File + get() = outputDirectoryProperty.get().asFile + set(value) = outputDirectoryProperty.set(value) + + val outputDirectoryProperty: DirectoryProperty = with(project) { val targetSubDirectory = target.disambiguationClassifier?.let { "$it/" }.orEmpty() - buildDir.resolve("bin/$targetSubDirectory${this@NativeBinary.name}") + objects.directoryProperty().convention(layout.buildDirectory.dir("bin/$targetSubDirectory${this@NativeBinary.name}")) } val outputFile: File by lazy { 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 b7ea5f1c313..a76eeecbe61 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 @@ -501,9 +501,7 @@ constructor( disallowSourceChanges() } - override val destinationDirectory: DirectoryProperty = objectFactory.directoryProperty().apply { - set(binary.outputDirectory) - } + override val destinationDirectory: DirectoryProperty = binary.outputDirectoryProperty override val outputKind: CompilerOutputKind @Input get() = binary.outputKind.compilerOutputKind