[KLIB] Adapt new klib io API in K/N
(cherry picked from commit 70fabb6a9db83db5f5b26b54f2656655316ea31c)
This commit is contained in:
committed by
Vasily Levchenko
parent
04ee3e37e7
commit
fde107b181
+9
-6
@@ -5,15 +5,17 @@
|
||||
package org.jetbrains.kotlin.native.interop.gen.jvm
|
||||
|
||||
import kotlinx.metadata.*
|
||||
import kotlinx.metadata.KmModuleFragment
|
||||
import kotlinx.metadata.klib.fqName
|
||||
import kotlinx.metadata.klib.className
|
||||
import kotlinx.metadata.klib.KlibModuleFragmentWriteStrategy
|
||||
import kotlinx.metadata.klib.KlibModuleMetadata
|
||||
import kotlinx.metadata.klib.className
|
||||
import kotlinx.metadata.klib.fqName
|
||||
import org.jetbrains.kotlin.backend.common.serialization.KlibIrVersion
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||
import org.jetbrains.kotlin.konan.CURRENT
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.library.impl.KonanLibraryLayoutForWriter
|
||||
import org.jetbrains.kotlin.konan.library.impl.KonanLibraryWriterImpl
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
||||
@@ -21,7 +23,6 @@ import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
||||
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
||||
import java.util.*
|
||||
|
||||
fun createInteropLibrary(
|
||||
@@ -43,16 +44,18 @@ fun createInteropLibrary(
|
||||
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
||||
irVersion = KlibIrVersion.INSTANCE.toString()
|
||||
)
|
||||
val outputPathWithoutExtension = outputPath.removeSuffixIfPresent(".klib")
|
||||
val libFile = File(outputPath)
|
||||
val unzippedDir = if (nopack) libFile else org.jetbrains.kotlin.konan.file.createTempDir(moduleName)
|
||||
val layout = KonanLibraryLayoutForWriter(libFile, unzippedDir, target)
|
||||
KonanLibraryWriterImpl(
|
||||
File(outputPathWithoutExtension),
|
||||
moduleName,
|
||||
version,
|
||||
target,
|
||||
|
||||
BuiltInsPlatform.NATIVE,
|
||||
nopack = nopack,
|
||||
shortName = shortName
|
||||
shortName = shortName,
|
||||
layout = layout
|
||||
).apply {
|
||||
val serializedMetadata = metadata.write(ChunkingWriteStrategy())
|
||||
addMetadata(SerializedMetadata(serializedMetadata.header, serializedMetadata.fragments, serializedMetadata.fragmentNames))
|
||||
|
||||
+9
-6
@@ -16,15 +16,15 @@ import org.jetbrains.kotlin.library.*
|
||||
import org.jetbrains.kotlin.library.impl.*
|
||||
|
||||
class KonanLibraryLayoutForWriter(
|
||||
override val libDir: File,
|
||||
libFile: File,
|
||||
unzippedDir: File,
|
||||
override val target: KonanTarget
|
||||
) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libDir)
|
||||
) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libFile, unzippedDir)
|
||||
|
||||
/**
|
||||
* Requires non-null [target].
|
||||
*/
|
||||
class KonanLibraryWriterImpl(
|
||||
libDir: File,
|
||||
moduleName: String,
|
||||
versions: KotlinLibraryVersioning,
|
||||
target: KonanTarget,
|
||||
@@ -32,7 +32,7 @@ class KonanLibraryWriterImpl(
|
||||
nopack: Boolean = false,
|
||||
shortName: String? = null,
|
||||
|
||||
val layout: KonanLibraryLayoutForWriter = KonanLibraryLayoutForWriter(libDir, target),
|
||||
val layout: KonanLibraryLayoutForWriter,
|
||||
|
||||
base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, builtInsPlatform, listOf(target.visibleName), nopack, shortName),
|
||||
bitcode: BitcodeWriter = BitcodeWriterImpl(layout),
|
||||
@@ -57,14 +57,17 @@ fun buildLibrary(
|
||||
dataFlowGraph: ByteArray?
|
||||
): KonanLibraryLayout {
|
||||
|
||||
val libFile = File(output)
|
||||
val unzippedDir = if (nopack) libFile else org.jetbrains.kotlin.konan.file.createTempDir(moduleName)
|
||||
val layout = KonanLibraryLayoutForWriter(libFile, unzippedDir, target)
|
||||
val library = KonanLibraryWriterImpl(
|
||||
File(output),
|
||||
moduleName,
|
||||
versions,
|
||||
target,
|
||||
BuiltInsPlatform.NATIVE,
|
||||
nopack,
|
||||
shortName
|
||||
shortName,
|
||||
layout
|
||||
)
|
||||
|
||||
library.addMetadata(metadata)
|
||||
|
||||
Reference in New Issue
Block a user