KLIB reader: separate library reading from dependency resolving (#1925)
This commit is contained in:
@@ -16,17 +16,18 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.utilities
|
||||
|
||||
import org.jetbrains.kotlin.backend.konan.library.resolveLibrariesRecursive
|
||||
import org.jetbrains.kotlin.backend.konan.library.KLIB_CURRENT_ABI_VERSION
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.library.defaultResolver
|
||||
import org.jetbrains.kotlin.konan.library.includedHeaders
|
||||
import org.jetbrains.kotlin.konan.library.libraryResolver
|
||||
import org.jetbrains.kotlin.konan.library.packageFqName
|
||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||
import org.jetbrains.kotlin.native.interop.gen.jvm.interop
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
private val NODEFAULTLIBS = "-nodefaultlibs"
|
||||
private val PURGE_USER_LIBS = "--purge_user_libs"
|
||||
private const val NODEFAULTLIBS = "-nodefaultlibs"
|
||||
private const val PURGE_USER_LIBS = "--purge_user_libs"
|
||||
|
||||
// TODO: this function should eventually be eliminated from 'utilities'.
|
||||
// The interaction of interop and the compler should be streamlined.
|
||||
@@ -68,15 +69,15 @@ fun invokeInterop(flavor: String, args: Array<String>): Array<String> {
|
||||
val manifest = File(buildDir, "manifest.properties")
|
||||
|
||||
val target = PlatformManager().targetManager(targetRequest).target
|
||||
val resolver = defaultResolver(repos, target)
|
||||
val allLibraries = resolver.resolveLibrariesRecursive(
|
||||
libraries, target, noStdLib = true, noDefaultLibs = noDefaultLibs
|
||||
)
|
||||
val resolver = defaultResolver(repos, target).libraryResolver(KLIB_CURRENT_ABI_VERSION)
|
||||
val allLibraries = resolver.resolveWithDependencies(
|
||||
libraries, noStdLib = true, noDefaultLibs = noDefaultLibs
|
||||
).getFullList()
|
||||
|
||||
val importArgs = allLibraries.flatMap {libraryReader ->
|
||||
val importArgs = allLibraries.flatMap { library ->
|
||||
// TODO: handle missing properties?
|
||||
libraryReader.packageFqName?.asString()?.let { packageFqName ->
|
||||
val headerIds = libraryReader.includedHeaders
|
||||
library.packageFqName?.asString()?.let { packageFqName ->
|
||||
val headerIds = library.includedHeaders
|
||||
val arg = "$packageFqName:${headerIds.joinToString(";")}"
|
||||
listOf("-import", arg)
|
||||
} ?: emptyList()
|
||||
|
||||
Reference in New Issue
Block a user