[Gradle] Use ProjectLayout in execution phase instead of Project.buildDir
It gives more flexibility during execution phase. Since `buildDir` is not sealed in cached task state. But instantiated during the execution phase. ^KT-43293
This commit is contained in:
+3
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.targets.native.internal
|
package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||||
|
|
||||||
import org.gradle.api.file.ConfigurableFileCollection
|
import org.gradle.api.file.ConfigurableFileCollection
|
||||||
|
import org.gradle.api.file.ProjectLayout
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.ListProperty
|
import org.gradle.api.provider.ListProperty
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
@@ -39,6 +40,7 @@ internal open class CInteropCommonizerTask
|
|||||||
@Inject constructor(
|
@Inject constructor(
|
||||||
private val objectFactory: ObjectFactory,
|
private val objectFactory: ObjectFactory,
|
||||||
private val execOperations: ExecOperations,
|
private val execOperations: ExecOperations,
|
||||||
|
private val projectLayout: ProjectLayout
|
||||||
) : AbstractCInteropCommonizerTask() {
|
) : AbstractCInteropCommonizerTask() {
|
||||||
|
|
||||||
internal class CInteropGist(
|
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
|
@get:Internal
|
||||||
internal val kotlinPluginVersion: Property<String> = objectFactory
|
internal val kotlinPluginVersion: Property<String> = objectFactory
|
||||||
|
|||||||
+6
-4
@@ -19,6 +19,7 @@ import org.gradle.api.file.ConfigurableFileCollection
|
|||||||
import org.gradle.api.file.DirectoryProperty
|
import org.gradle.api.file.DirectoryProperty
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.file.FileTree
|
import org.gradle.api.file.FileTree
|
||||||
|
import org.gradle.api.file.ProjectLayout
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
@@ -144,6 +145,10 @@ abstract class AbstractKotlinNativeCompile<
|
|||||||
@Inject constructor(
|
@Inject constructor(
|
||||||
private val objectFactory: ObjectFactory
|
private val objectFactory: ObjectFactory
|
||||||
): AbstractKotlinCompileTool<M>(objectFactory) {
|
): AbstractKotlinCompileTool<M>(objectFactory) {
|
||||||
|
|
||||||
|
@get:Inject
|
||||||
|
protected abstract val projectLayout: ProjectLayout
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
abstract val compilation: K
|
abstract val compilation: K
|
||||||
|
|
||||||
@@ -294,10 +299,7 @@ abstract class AbstractKotlinNativeCompile<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
internal val manifestFile: File by lazy {
|
internal val manifestFile: File get() = projectLayout.buildDirectory.asFile.get().resolve("tmp/$name/inputManifest")
|
||||||
val inputManifestFile = project.buildDir.resolve("tmp/$name/inputManifest")
|
|
||||||
inputManifestFile
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove it once actual K2NativeCompilerArguments will be available without 'kotlin.native.enabled = true' flag
|
// Remove it once actual K2NativeCompilerArguments will be available without 'kotlin.native.enabled = true' flag
|
||||||
|
|||||||
+4
-4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact
|
|||||||
import org.gradle.api.Action
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
|
import org.gradle.api.file.ProjectLayout
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.process.ExecOperations
|
import org.gradle.process.ExecOperations
|
||||||
@@ -28,19 +29,18 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
|
|||||||
@get:Input val konanTarget: KonanTarget,
|
@get:Input val konanTarget: KonanTarget,
|
||||||
@get:Input val outputKind: CompilerOutputKind,
|
@get:Input val outputKind: CompilerOutputKind,
|
||||||
private val objectFactory: ObjectFactory,
|
private val objectFactory: ObjectFactory,
|
||||||
private val execOperations: ExecOperations
|
private val execOperations: ExecOperations,
|
||||||
|
private val projectLayout: ProjectLayout
|
||||||
) : DefaultTask() {
|
) : DefaultTask() {
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
var baseName: String = project.name
|
var baseName: String = project.name
|
||||||
|
|
||||||
private val buildDir = project.buildDir
|
|
||||||
|
|
||||||
private val defaultDestinationDir: File get() {
|
private val defaultDestinationDir: File get() {
|
||||||
val kind = outputKind.visibleName
|
val kind = outputKind.visibleName
|
||||||
val target = konanTarget.visibleName
|
val target = konanTarget.visibleName
|
||||||
val type = if (debuggable) "debug" else "release"
|
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
|
private var customDestinationDir: File? = null
|
||||||
|
|||||||
+17
-4
@@ -9,6 +9,7 @@ import com.android.build.gradle.BaseExtension
|
|||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
|
import org.gradle.api.file.ProjectLayout
|
||||||
import org.gradle.api.internal.GeneratedSubclass
|
import org.gradle.api.internal.GeneratedSubclass
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||||
@@ -91,16 +92,28 @@ internal val GradleKpmModule.buildKotlinToolingMetadataTask: TaskProvider<BuildK
|
|||||||
abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||||
|
|
||||||
abstract class FromKpmModule
|
abstract class FromKpmModule
|
||||||
@Inject constructor (@get:Internal val module: GradleKpmModule) : BuildKotlinToolingMetadataTask() {
|
@Inject constructor (
|
||||||
|
@get:Internal
|
||||||
|
val module: GradleKpmModule,
|
||||||
|
private val projectLayout: ProjectLayout
|
||||||
|
) : BuildKotlinToolingMetadataTask() {
|
||||||
|
|
||||||
override val outputDirectory: File = project.buildDir.resolve("kotlinToolingMetadata").resolve(module.name)
|
override val outputDirectory: File get() = projectLayout
|
||||||
|
.buildDirectory
|
||||||
|
.get()
|
||||||
|
.asFile
|
||||||
|
.resolve("kotlinToolingMetadata")
|
||||||
|
.resolve(module.name)
|
||||||
|
|
||||||
override fun buildKotlinToolingMetadata() = module.getKotlinToolingMetadata()
|
override fun buildKotlinToolingMetadata() = module.getKotlinToolingMetadata()
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class FromKotlinExtension : BuildKotlinToolingMetadataTask() {
|
abstract class FromKotlinExtension
|
||||||
|
@Inject constructor(
|
||||||
|
private val projectLayout: ProjectLayout
|
||||||
|
) : BuildKotlinToolingMetadataTask() {
|
||||||
|
|
||||||
override val outputDirectory: File = project.buildDir.resolve("kotlinToolingMetadata")
|
override val outputDirectory: File get() = projectLayout.buildDirectory.get().asFile.resolve("kotlinToolingMetadata")
|
||||||
|
|
||||||
override fun buildKotlinToolingMetadata() = project.kotlinExtension.getKotlinToolingMetadata()
|
override fun buildKotlinToolingMetadata() = project.kotlinExtension.getKotlinToolingMetadata()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user