[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
|
||||
|
||||
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<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.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<M>(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
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+17
-4
@@ -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<BuildK
|
||||
abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user