Remove libffi from target dependencies

Technically, it is a dependency of a compiler itself.
Thus, we can simplify konan.properties a little bit
by applying the same approach as we did for LLVM.
This commit is contained in:
Sergey Bogolepov
2021-03-22 18:58:37 +07:00
committed by TeamCityServer
parent e1c80ac75c
commit 579c1eb7db
2 changed files with 48 additions and 90 deletions
@@ -41,18 +41,30 @@ abstract class KonanPropertiesLoader(override val target: KonanTarget,
private val predefinedLlvmDistributions: Set<String> =
properties.propertyList("predefinedLlvmDistributions").toSet()
private fun llvmDependencies(): List<String> {
private val predefinedLibffiVersions: Set<String> =
properties.propertyList("predefinedLibffiVersions").toSet()
private fun getPredefinedDependencyOrNull(
dependencyName: String,
dependencyAccessor: () -> String?,
predefinedDependencies: Set<String>
): String? {
// Store into variable to avoid repeated resolve.
val llvmHome = llvmHome
?: error("Undefined LLVM home!")
return when (llvmHome) {
in predefinedLlvmDistributions -> llvmHome
val dependency = dependencyAccessor()
?: error("Undefined $dependencyName!")
return when (dependency) {
in predefinedDependencies -> dependency
else -> null
}.let(::listOfNotNull)
}
}
private fun compilerDependencies(): List<String> = listOfNotNull(
getPredefinedDependencyOrNull("LLVM home", this::llvmHome, predefinedLlvmDistributions),
getPredefinedDependencyOrNull("libffi version", this::libffiDir, predefinedLibffiVersions)
)
open val dependencies: List<String>
get() = hostTargetList("dependencies") + llvmDependencies()
get() = hostTargetList("dependencies") + compilerDependencies()
override fun downloadDependencies() {
dependencyProcessor!!.run()