[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 classpath: FileCollection
) {
constructor(project: Project) : this(
konanVersion = project.konanVersion,
konanHome = project.konanHome,
konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"),
jvmArgs = project.jvmArgs,
classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar")
)
companion object {
fun fromProject(project: Project) = Settings(
konanVersion = project.konanVersion,
konanHome = project.konanHome,
konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"),
jvmArgs = project.jvmArgs,
classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar")
)
}
}
final override val displayName get() = toolName
@@ -191,10 +192,12 @@ internal class KotlinNativeCompilerRunner(
val parent: KotlinNativeToolRunner.Settings,
val disableKonanDaemon: Boolean,
) {
constructor(project: Project) : this(
parent = KotlinNativeToolRunner.Settings(project),
disableKonanDaemon = project.disableKonanDaemon,
)
companion object {
fun fromProject(project: Project) = Settings(
parent = KotlinNativeToolRunner.Settings.fromProject(project),
disableKonanDaemon = project.disableKonanDaemon,
)
}
}
private val useArgFile get() = settings.disableKonanDaemon
@@ -225,10 +228,12 @@ internal class KotlinNativeLibraryGenerationRunner(
) :
AbstractKotlinNativeCInteropRunner("generatePlatformLibraries", settings, executionContext) {
constructor(project: Project): this(
settings = Settings(project),
executionContext = GradleExecutionContext.fromProject(project)
)
companion object {
fun fromProject(project: Project) = KotlinNativeLibraryGenerationRunner(
settings = Settings.fromProject(project),
executionContext = GradleExecutionContext.fromProject(project)
)
}
// The library generator works for a long time so enabling C2 can improve performance.
override val disableC2: Boolean = false
@@ -169,7 +169,7 @@ class NativeCompilerDownloader(
fun downloadIfNeeded() {
val classpath = KotlinNativeToolRunner.Settings(project).classpath
val classpath = KotlinNativeToolRunner.Settings.fromProject(project).classpath
if (classpath.isEmpty() || classpath.any { !it.exists() }) {
downloadAndExtract()
}
@@ -131,7 +131,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
args.addArg("-mode", it)
}
KotlinNativeLibraryGenerationRunner(this).run(args)
KotlinNativeLibraryGenerationRunner.fromProject(this).run(args)
}
fun generatePlatformLibsIfNeeded(): Unit = with(project) {
@@ -389,7 +389,7 @@ constructor(
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() }
override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) {
@@ -482,7 +482,7 @@ constructor(
final override val compilation: KotlinNativeCompilation
get() = binary.compilation
private val runnerSettings = KotlinNativeCompilerRunner.Settings(project)
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
init {
dependsOn(project.provider { compilation.compileKotlinTaskProvider })
@@ -591,7 +591,7 @@ constructor(
private val externalDependenciesArgs by lazy { ExternalDependenciesBuilder(project, compilation).buildCompilerArgs() }
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()
@@ -890,7 +890,7 @@ internal class CacheBuilder(
)
companion object {
operator fun invoke(
fun createWithProject(
project: Project,
binary: NativeBinary,
konanTarget: KonanTarget,
@@ -899,7 +899,7 @@ internal class CacheBuilder(
): Settings {
val konanCacheKind = project.getKonanCacheKind(konanTarget)
return Settings(
runnerSettings = KotlinNativeCompilerRunner.Settings(project),
runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project),
konanCacheKind = konanCacheKind,
libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project),
gradleUserHomeDir = project.gradle.gradleUserHomeDir,
@@ -1181,7 +1181,7 @@ open class CInteropProcess
val outputFile: File
get() = outputFileProvider.get()
private val runnerSettings = KotlinNativeToolRunner.Settings(project)
private val runnerSettings = KotlinNativeToolRunner.Settings.fromProject(project)
// Inputs and outputs.
@@ -151,7 +151,7 @@ open class KotlinNativeLinkArtifactTask @Inject constructor(
return destinationDir.resolve(outFileName)
}
private val runnerSettings = KotlinNativeCompilerRunner.Settings(project)
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
@TaskAction
fun link() {