New CLI tool (#3085)

This commit is contained in:
LepilkinaElena
2019-07-22 15:55:38 +03:00
committed by GitHub
parent e881ebdf38
commit 3c2a5b0392
42 changed files with 1852 additions and 614 deletions
@@ -9,24 +9,19 @@ import org.jetbrains.kotlin.konan.target.PlatformManager
import org.jetbrains.kotlin.konan.library.*
import org.jetbrains.kotlin.konan.target.Distribution
import org.jetbrains.kotlin.native.interop.gen.jvm.interop
import org.jetbrains.kliopt.ArgParser
import org.jetbrains.kotlin.konan.CURRENT
import org.jetbrains.kotlin.konan.KonanVersion
import org.jetbrains.kotlin.library.toUnresolvedLibraries
import org.jetbrains.kotlin.native.interop.tool.*
// TODO: this function should eventually be eliminated from 'utilities'.
// The interaction of interop and the compler should be streamlined.
// The interaction of interop and the compiler should be streamlined.
fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
val argParser = ArgParser(if (flavor == "native") getCInteropArguments() else getJSInteropArguments(),
useDefaultHelpShortName = false)
if (!argParser.parse(args))
return null
val outputFileName = argParser.get<String>("output")!!
val noDefaultLibs = argParser.get<Boolean>(NODEFAULTLIBS)!!
val purgeUserLibs = argParser.get<Boolean>(PURGE_USER_LIBS)!!
val temporaryFilesDir = argParser.get<String>(TEMP_DIR)
fun invokeInterop(flavor: String, args: Array<String>): Array<String> {
val arguments = if (flavor == "native") CInteropArguments() else JSInteropArguments()
arguments.argParser.parse(args)
val outputFileName = arguments.output
val noDefaultLibs = arguments.nodefaultlibs
val purgeUserLibs = arguments.purgeUserLibs
val temporaryFilesDir = arguments.tempDir
val buildDir = File("$outputFileName-build")
val generatedDir = File(buildDir, "kotlin")
@@ -40,9 +35,10 @@ fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
val additionalProperties = mutableMapOf<String, Any>(
"manifest" to manifest.path)
val cstubsName ="cstubs"
val libraries = argParser.getAll<String>("library") ?: listOf<String>()
val repos = argParser.getAll<String>("repo") ?: listOf<String>()
val targetRequest = argParser.get<String>("target")!!
val libraries = arguments.library
val repos = arguments.repo
val targetRequest = if (arguments is CInteropArguments) arguments.target
else (arguments as JSInteropArguments).target
val target = PlatformManager().targetManager(targetRequest).target
if (flavor == "native") {
@@ -66,7 +62,7 @@ fun invokeInterop(flavor: String, args: Array<String>): Array<String>? {
additionalProperties.putAll(mapOf("cstubsname" to cstubsName, "import" to imports))
}
val cinteropArgsToCompiler = interop(flavor, args + additionalArgs, additionalProperties) ?: return null
val cinteropArgsToCompiler = interop(flavor, args + additionalArgs, additionalProperties)
val nativeStubs =
if (flavor == "wasm")