Rework usage of Choice options
This commit is contained in:
committed by
Stanislav Erokhin
parent
cb642bca69
commit
f88d38314e
+13
-11
@@ -19,9 +19,8 @@ import org.jetbrains.kotlin.konan.target.customerDistribution
|
||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
||||
import org.jetbrains.kotlin.konan.util.PlatformLibsInfo
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
import org.jetbrains.kotlin.native.interop.gen.jvm.GenerationMode
|
||||
import org.jetbrains.kotlin.native.interop.tool.CommonInteropArguments.Companion.DEFAULT_MODE
|
||||
import org.jetbrains.kotlin.native.interop.tool.CommonInteropArguments.Companion.MODE_METADATA
|
||||
import org.jetbrains.kotlin.native.interop.tool.CommonInteropArguments.Companion.MODE_SOURCECODE
|
||||
import org.jetbrains.kotlin.native.interop.tool.SHORT_MODULE_NAME
|
||||
import java.io.PrintWriter
|
||||
import java.io.StringWriter
|
||||
@@ -64,6 +63,11 @@ private fun Logger.logStackTrace(error: Throwable) {
|
||||
verbose(stringWriter.toString())
|
||||
}
|
||||
|
||||
private enum class CacheKind(val outputKind: CompilerOutputKind) {
|
||||
DYNAMIC_CACHE(CompilerOutputKind.DYNAMIC_CACHE),
|
||||
STATIC_CACHE(CompilerOutputKind.STATIC_CACHE)
|
||||
}
|
||||
|
||||
// TODO: Use Distribution's paths after compiler update.
|
||||
fun generatePlatformLibraries(args: Array<String>) {
|
||||
// IMPORTANT! These command line keys are used by the Gradle plugin to configure platform libraries generation,
|
||||
@@ -90,17 +94,15 @@ fun generatePlatformLibraries(args: Array<String>) {
|
||||
"Place where stdlib is located. Default value is <dist>/klib/common/stdlib"
|
||||
)
|
||||
|
||||
val dynamicCacheKind = CompilerOutputKind.DYNAMIC_CACHE.visibleName
|
||||
val staticCacheKind = CompilerOutputKind.STATIC_CACHE.visibleName
|
||||
val cacheKind by argParser.option(
|
||||
ArgType.Choice(listOf(dynamicCacheKind, staticCacheKind)), "cache-kind", "k", "Type of cache."
|
||||
).default(dynamicCacheKind)
|
||||
ArgType.Choice<CacheKind>(toString = { it.outputKind.visibleName }), "cache-kind", "k", "Type of cache."
|
||||
).default(CacheKind.DYNAMIC_CACHE)
|
||||
|
||||
val cacheDirectoryPath by argParser.option(
|
||||
ArgType.String, "cache-directory", "c", "Cache output directory")
|
||||
|
||||
val mode by argParser.option(
|
||||
ArgType.Choice(listOf(MODE_METADATA, MODE_SOURCECODE)),
|
||||
ArgType.Choice<GenerationMode>(),
|
||||
fullName = "mode",
|
||||
shortName = "m",
|
||||
description = "The way interop library is generated."
|
||||
@@ -146,7 +148,7 @@ fun generatePlatformLibraries(args: Array<String>) {
|
||||
|
||||
val logger = Logger(if (verbose) Logger.Level.VERBOSE else Logger.Level.NORMAL)
|
||||
|
||||
val cacheInfo = cacheDirectory?.let { CacheInfo(it, cacheKind, cacheArgs) }
|
||||
val cacheInfo = cacheDirectory?.let { CacheInfo(it, cacheKind.outputKind.visibleName, cacheArgs) }
|
||||
|
||||
generatePlatformLibraries(
|
||||
target, mode,
|
||||
@@ -217,7 +219,7 @@ private fun topoSort(defFiles: List<DefFile>): List<DefFile> {
|
||||
|
||||
private fun generateLibrary(
|
||||
target: KonanTarget,
|
||||
mode: String,
|
||||
mode: GenerationMode,
|
||||
def: DefFile,
|
||||
directories: DirectoriesInfo,
|
||||
tmpDirectory: File,
|
||||
@@ -242,7 +244,7 @@ private fun generateLibrary(
|
||||
"-compiler-option", "-fmodules-cache-path=${tmpDirectory.child("clangModulesCache").absolutePath}",
|
||||
"-repo", outputDirectory.absolutePath,
|
||||
"-no-default-libs", "-no-endorsed-libs", "-Xpurge-user-libs", "-nopack",
|
||||
"-mode", mode,
|
||||
"-mode", mode.modeName,
|
||||
"-$SHORT_MODULE_NAME", def.shortLibraryName,
|
||||
*def.depends.flatMap { listOf("-l", "$outputDirectory/${it.libraryName}") }.toTypedArray()
|
||||
)
|
||||
@@ -327,7 +329,7 @@ private fun buildStdlibCache(
|
||||
K2Native.mainNoExit(compilerArgs)
|
||||
}
|
||||
|
||||
private fun generatePlatformLibraries(target: KonanTarget, mode: String,
|
||||
private fun generatePlatformLibraries(target: KonanTarget, mode: GenerationMode,
|
||||
directories: DirectoriesInfo, cacheInfo: CacheInfo?,
|
||||
rebuild: Boolean, saveTemps: Boolean, logger: Logger) = with(directories) {
|
||||
if (cacheInfo != null) {
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
|
||||
val libraries = arguments.library
|
||||
val repos = arguments.repo
|
||||
val targetRequest = if (arguments is CInteropArguments) arguments.target
|
||||
else (arguments as JSInteropArguments).target
|
||||
else (arguments as JSInteropArguments).target.toString()
|
||||
val target = PlatformManager(KonanHomeProvider.determineKonanHome()).targetManager(targetRequest).target
|
||||
|
||||
val cinteropArgsToCompiler = interop(flavor, args,
|
||||
|
||||
Reference in New Issue
Block a user