Added property for overriding konan distribution location
#KT-50463 Fixed Merge-request: KT-MR-10310 Merged-by: Dmitrii Krasnov <Dmitrii.Krasnov@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
2f7f69ed4f
commit
f2816a5531
+1
-1
@@ -44,9 +44,9 @@ private fun makeDependencyAssigner(targets: List<String>, defFiles: List<File>,
|
||||
CompositeDependencyAssigner(targets.map { makeDependencyAssignerForTarget(it, defFiles, runFromDaemon) })
|
||||
|
||||
private fun makeDependencyAssignerForTarget(target: String, defFiles: List<File>, runFromDaemon: Boolean): SingleTargetDependencyAssigner {
|
||||
val tool = prepareTool(target, KotlinPlatform.NATIVE, runFromDaemon)
|
||||
val cinteropArguments = CInteropArguments()
|
||||
cinteropArguments.argParser.parse(arrayOf())
|
||||
val tool = prepareTool(target, KotlinPlatform.NATIVE, runFromDaemon, konanDataDir = cinteropArguments.konanDataDir)
|
||||
val libraries = defFiles.parallelStream().map {
|
||||
it to buildNativeLibrary(
|
||||
tool,
|
||||
|
||||
+3
-3
@@ -16,10 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.native.interop.tool
|
||||
|
||||
import kotlinx.cli.ArgParser
|
||||
import kotlinx.cli.ArgType
|
||||
import kotlinx.cli.*
|
||||
import org.jetbrains.kotlin.native.interop.gen.jvm.GenerationMode
|
||||
|
||||
const val HEADER_FILTER_ADDITIONAL_SEARCH_PREFIX = "headerFilterAdditionalSearchPrefix"
|
||||
const val NODEFAULTLIBS_DEPRECATED = "nodefaultlibs"
|
||||
@@ -35,6 +32,7 @@ const val FOREIGN_EXCEPTION_MODE = "Xforeign-exception-mode"
|
||||
const val DUMP_BRIDGES = "Xdump-bridges"
|
||||
const val DISABLE_EXCEPTION_PRETTIFIER = "Xdisable-exception-prettifier"
|
||||
const val USER_SETUP_HINT = "Xuser-setup-hint"
|
||||
const val KONAN_DATA_DIR = "Xkonan-data-dir"
|
||||
|
||||
// TODO: unify camel and snake cases.
|
||||
// Possible solution is to accept both cases
|
||||
@@ -74,6 +72,8 @@ open class CommonInteropArguments(val argParser: ArgParser) {
|
||||
fullName = "Xoverride-konan-properties",
|
||||
description = "Override konan.properties.values"
|
||||
).multiple().delimiter(";")
|
||||
val konanDataDir by argParser.option(ArgType.String, KONAN_DATA_DIR,
|
||||
description = "Path to konan and dependencies root folder")
|
||||
}
|
||||
|
||||
open class CInteropArguments(argParser: ArgParser =
|
||||
|
||||
+2
-2
@@ -22,8 +22,8 @@ import org.jetbrains.kotlin.konan.target.AbstractToolConfig
|
||||
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
||||
import org.jetbrains.kotlin.native.interop.indexer.Language
|
||||
|
||||
class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform, propertyOverrides: Map<String, String>)
|
||||
: AbstractToolConfig(KonanHomeProvider.determineKonanHome(), userProvidedTargetName, propertyOverrides) {
|
||||
class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform, propertyOverrides: Map<String, String>, konanDataDir: String? = null)
|
||||
: AbstractToolConfig(KonanHomeProvider.determineKonanHome(), userProvidedTargetName, propertyOverrides, konanDataDir) {
|
||||
|
||||
val clang = when (flavor) {
|
||||
KotlinPlatform.JVM -> platform.clangForJni
|
||||
|
||||
+4
-4
@@ -259,7 +259,7 @@ private fun processCLib(
|
||||
cinteropArguments.argParser.printError("-def or -pkg should be provided!")
|
||||
}
|
||||
|
||||
val tool = prepareTool(cinteropArguments.target, flavor, runFromDaemon, parseKeyValuePairs(cinteropArguments.overrideKonanProperties))
|
||||
val tool = prepareTool(cinteropArguments.target, flavor, runFromDaemon, parseKeyValuePairs(cinteropArguments.overrideKonanProperties), konanDataDir = cinteropArguments.konanDataDir)
|
||||
|
||||
val def = DefFile(defFile, tool.substitutions)
|
||||
val isLinkerOptsSetByUser = (cinteropArguments.linkerOpts.valueOrigin == ArgParser.ValueOrigin.SET_BY_USER) ||
|
||||
@@ -480,7 +480,7 @@ private fun getLibraryResolver(
|
||||
repos,
|
||||
libraries.filter { it.contains(org.jetbrains.kotlin.konan.file.File.separator) },
|
||||
target,
|
||||
Distribution(KonanHomeProvider.determineKonanHome())
|
||||
Distribution(KonanHomeProvider.determineKonanHome(), konanDataDir = cinteropArguments.konanDataDir)
|
||||
).libraryResolver()
|
||||
}
|
||||
|
||||
@@ -498,8 +498,8 @@ private fun resolveDependencies(
|
||||
).getFullList(TopologicalLibraryOrder)
|
||||
}
|
||||
|
||||
internal fun prepareTool(target: String?, flavor: KotlinPlatform, runFromDaemon: Boolean, propertyOverrides: Map<String, String> = emptyMap()) =
|
||||
ToolConfig(target, flavor, propertyOverrides).also {
|
||||
internal fun prepareTool(target: String?, flavor: KotlinPlatform, runFromDaemon: Boolean, propertyOverrides: Map<String, String> = emptyMap(), konanDataDir: String? = null) =
|
||||
ToolConfig(target, flavor, propertyOverrides, konanDataDir).also {
|
||||
if (!runFromDaemon) it.prepare() // Daemon prepares the tool himself. (See KonanToolRunner.kt)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user