[Gradle] Use explicit factory methods instead of constructor override

In KotlinNativeToolRunner Settings classes

^KT-43293
This commit is contained in:
Anton Lakotka
2022-08-02 19:20:23 +02:00
committed by Space
parent 51034e4e46
commit d8fd282b39
5 changed files with 30 additions and 25 deletions
@@ -67,14 +67,15 @@ internal abstract class KotlinNativeToolRunner(
val jvmArgs: List<String>, val jvmArgs: List<String>,
val classpath: FileCollection val classpath: FileCollection
) { ) {
companion object {
constructor(project: Project) : this( fun fromProject(project: Project) = Settings(
konanVersion = project.konanVersion, konanVersion = project.konanVersion,
konanHome = project.konanHome, konanHome = project.konanHome,
konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"), konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"),
jvmArgs = project.jvmArgs, jvmArgs = project.jvmArgs,
classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar") classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar")
) )
}
} }
final override val displayName get() = toolName final override val displayName get() = toolName
@@ -191,10 +192,12 @@ internal class KotlinNativeCompilerRunner(
val parent: KotlinNativeToolRunner.Settings, val parent: KotlinNativeToolRunner.Settings,
val disableKonanDaemon: Boolean, val disableKonanDaemon: Boolean,
) { ) {
constructor(project: Project) : this( companion object {
parent = KotlinNativeToolRunner.Settings(project), fun fromProject(project: Project) = Settings(
disableKonanDaemon = project.disableKonanDaemon, parent = KotlinNativeToolRunner.Settings.fromProject(project),
) disableKonanDaemon = project.disableKonanDaemon,
)
}
} }
private val useArgFile get() = settings.disableKonanDaemon private val useArgFile get() = settings.disableKonanDaemon
@@ -225,10 +228,12 @@ internal class KotlinNativeLibraryGenerationRunner(
) : ) :
AbstractKotlinNativeCInteropRunner("generatePlatformLibraries", settings, executionContext) { AbstractKotlinNativeCInteropRunner("generatePlatformLibraries", settings, executionContext) {
constructor(project: Project): this( companion object {
settings = Settings(project), fun fromProject(project: Project) = KotlinNativeLibraryGenerationRunner(
executionContext = GradleExecutionContext.fromProject(project) settings = Settings.fromProject(project),
) executionContext = GradleExecutionContext.fromProject(project)
)
}
// The library generator works for a long time so enabling C2 can improve performance. // The library generator works for a long time so enabling C2 can improve performance.
override val disableC2: Boolean = false override val disableC2: Boolean = false
@@ -169,7 +169,7 @@ class NativeCompilerDownloader(
fun downloadIfNeeded() { fun downloadIfNeeded() {
val classpath = KotlinNativeToolRunner.Settings(project).classpath val classpath = KotlinNativeToolRunner.Settings.fromProject(project).classpath
if (classpath.isEmpty() || classpath.any { !it.exists() }) { if (classpath.isEmpty() || classpath.any { !it.exists() }) {
downloadAndExtract() downloadAndExtract()
} }
@@ -131,7 +131,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
args.addArg("-mode", it) args.addArg("-mode", it)
} }
KotlinNativeLibraryGenerationRunner(this).run(args) KotlinNativeLibraryGenerationRunner.fromProject(this).run(args)
} }
fun generatePlatformLibsIfNeeded(): Unit = with(project) { fun generatePlatformLibsIfNeeded(): Unit = with(project) {
@@ -389,7 +389,7 @@ constructor(
kotlinOptions.freeCompilerArgs + ((languageSettings as? DefaultLanguageSettingsBuilder)?.freeCompilerArgs ?: emptyList()) kotlinOptions.freeCompilerArgs + ((languageSettings as? DefaultLanguageSettingsBuilder)?.freeCompilerArgs ?: emptyList())
} }
private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
private val isAllowCommonizer: Boolean by lazy { project.isAllowCommonizer() } private val isAllowCommonizer: Boolean by lazy { project.isAllowCommonizer() }
override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) { override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) {
@@ -482,7 +482,7 @@ constructor(
final override val compilation: KotlinNativeCompilation final override val compilation: KotlinNativeCompilation
get() = binary.compilation get() = binary.compilation
private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
init { init {
dependsOn(project.provider { compilation.compileKotlinTaskProvider }) dependsOn(project.provider { compilation.compileKotlinTaskProvider })
@@ -591,7 +591,7 @@ constructor(
private val externalDependenciesArgs by lazy { ExternalDependenciesBuilder(project, compilation).buildCompilerArgs() } private val externalDependenciesArgs by lazy { ExternalDependenciesBuilder(project, compilation).buildCompilerArgs() }
private val cacheBuilderSettings by lazy { private val cacheBuilderSettings by lazy {
CacheBuilder.Settings(project, binary, konanTarget, localKotlinOptions, externalDependenciesArgs) CacheBuilder.Settings.createWithProject(project, binary, konanTarget, localKotlinOptions, externalDependenciesArgs)
} }
override fun createCompilerArgs(): StubK2NativeCompilerArguments = StubK2NativeCompilerArguments() override fun createCompilerArgs(): StubK2NativeCompilerArguments = StubK2NativeCompilerArguments()
@@ -890,7 +890,7 @@ internal class CacheBuilder(
) )
companion object { companion object {
operator fun invoke( fun createWithProject(
project: Project, project: Project,
binary: NativeBinary, binary: NativeBinary,
konanTarget: KonanTarget, konanTarget: KonanTarget,
@@ -899,7 +899,7 @@ internal class CacheBuilder(
): Settings { ): Settings {
val konanCacheKind = project.getKonanCacheKind(konanTarget) val konanCacheKind = project.getKonanCacheKind(konanTarget)
return Settings( return Settings(
runnerSettings = KotlinNativeCompilerRunner.Settings(project), runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project),
konanCacheKind = konanCacheKind, konanCacheKind = konanCacheKind,
libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project), libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project),
gradleUserHomeDir = project.gradle.gradleUserHomeDir, gradleUserHomeDir = project.gradle.gradleUserHomeDir,
@@ -1181,7 +1181,7 @@ open class CInteropProcess
val outputFile: File val outputFile: File
get() = outputFileProvider.get() get() = outputFileProvider.get()
private val runnerSettings = KotlinNativeToolRunner.Settings(project) private val runnerSettings = KotlinNativeToolRunner.Settings.fromProject(project)
// Inputs and outputs. // Inputs and outputs.
@@ -151,7 +151,7 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
return destinationDir.resolve(outFileName) return destinationDir.resolve(outFileName)
} }
private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
@TaskAction @TaskAction
fun link() { fun link() {