[K/N][gradle][interop] Refactored ToolConfig

Added possibility to create different strategies for loading libclang
This commit is contained in:
Igor Chevdar
2021-11-18 19:32:05 +05:00
parent 650d4c78e9
commit bd6ea71ead
9 changed files with 96 additions and 57 deletions
@@ -0,0 +1,38 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.konan.target
import org.jetbrains.kotlin.konan.util.defaultTargetSubstitutions
abstract class AbstractToolConfig(konanHome: String, userProvidedTargetName: String?, propertyOverrides: Map<String, String>) {
private val distribution = Distribution(konanHome, propertyOverrides = propertyOverrides)
private val platformManager = PlatformManager(distribution)
private val targetManager = platformManager.targetManager(userProvidedTargetName)
private val host = HostManager.host
val target = targetManager.target
protected val platform = platformManager.platform(target)
val substitutions = defaultTargetSubstitutions(target)
fun downloadDependencies() = platform.downloadDependencies()
val llvmHome = platform.absoluteLlvmHome
val sysRoot = platform.absoluteTargetSysRoot
val libclang = when (host) {
KonanTarget.MINGW_X64 -> "$llvmHome/bin/libclang.dll"
else -> "$llvmHome/lib/${System.mapLibraryName("clang")}"
}
abstract fun loadLibclang()
fun prepare() {
downloadDependencies()
loadLibclang()
}
}