[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
|
package org.jetbrains.kotlin.native.interop.gen.jvm
|
||||||
|
|
||||||
import kotlinx.metadata.*
|
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.KlibModuleFragmentWriteStrategy
|
||||||
import kotlinx.metadata.klib.KlibModuleMetadata
|
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.KlibIrVersion
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||||
import org.jetbrains.kotlin.konan.CURRENT
|
import org.jetbrains.kotlin.konan.CURRENT
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||||
import org.jetbrains.kotlin.konan.file.File
|
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.library.impl.KonanLibraryWriterImpl
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
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.KotlinLibrary
|
||||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||||
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
||||||
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
fun createInteropLibrary(
|
fun createInteropLibrary(
|
||||||
@@ -43,16 +44,18 @@ fun createInteropLibrary(
|
|||||||
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
||||||
irVersion = KlibIrVersion.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(
|
KonanLibraryWriterImpl(
|
||||||
File(outputPathWithoutExtension),
|
|
||||||
moduleName,
|
moduleName,
|
||||||
version,
|
version,
|
||||||
target,
|
target,
|
||||||
|
|
||||||
BuiltInsPlatform.NATIVE,
|
BuiltInsPlatform.NATIVE,
|
||||||
nopack = nopack,
|
nopack = nopack,
|
||||||
shortName = shortName
|
shortName = shortName,
|
||||||
|
layout = layout
|
||||||
).apply {
|
).apply {
|
||||||
val serializedMetadata = metadata.write(ChunkingWriteStrategy())
|
val serializedMetadata = metadata.write(ChunkingWriteStrategy())
|
||||||
addMetadata(SerializedMetadata(serializedMetadata.header, serializedMetadata.fragments, serializedMetadata.fragmentNames))
|
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.*
|
import org.jetbrains.kotlin.library.impl.*
|
||||||
|
|
||||||
class KonanLibraryLayoutForWriter(
|
class KonanLibraryLayoutForWriter(
|
||||||
override val libDir: File,
|
libFile: File,
|
||||||
|
unzippedDir: File,
|
||||||
override val target: KonanTarget
|
override val target: KonanTarget
|
||||||
) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libDir)
|
) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libFile, unzippedDir)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requires non-null [target].
|
* Requires non-null [target].
|
||||||
*/
|
*/
|
||||||
class KonanLibraryWriterImpl(
|
class KonanLibraryWriterImpl(
|
||||||
libDir: File,
|
|
||||||
moduleName: String,
|
moduleName: String,
|
||||||
versions: KotlinLibraryVersioning,
|
versions: KotlinLibraryVersioning,
|
||||||
target: KonanTarget,
|
target: KonanTarget,
|
||||||
@@ -32,7 +32,7 @@ class KonanLibraryWriterImpl(
|
|||||||
nopack: Boolean = false,
|
nopack: Boolean = false,
|
||||||
shortName: String? = null,
|
shortName: String? = null,
|
||||||
|
|
||||||
val layout: KonanLibraryLayoutForWriter = KonanLibraryLayoutForWriter(libDir, target),
|
val layout: KonanLibraryLayoutForWriter,
|
||||||
|
|
||||||
base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, builtInsPlatform, listOf(target.visibleName), nopack, shortName),
|
base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, builtInsPlatform, listOf(target.visibleName), nopack, shortName),
|
||||||
bitcode: BitcodeWriter = BitcodeWriterImpl(layout),
|
bitcode: BitcodeWriter = BitcodeWriterImpl(layout),
|
||||||
@@ -57,14 +57,17 @@ fun buildLibrary(
|
|||||||
dataFlowGraph: ByteArray?
|
dataFlowGraph: ByteArray?
|
||||||
): KonanLibraryLayout {
|
): 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(
|
val library = KonanLibraryWriterImpl(
|
||||||
File(output),
|
|
||||||
moduleName,
|
moduleName,
|
||||||
versions,
|
versions,
|
||||||
target,
|
target,
|
||||||
BuiltInsPlatform.NATIVE,
|
BuiltInsPlatform.NATIVE,
|
||||||
nopack,
|
nopack,
|
||||||
shortName
|
shortName,
|
||||||
|
layout
|
||||||
)
|
)
|
||||||
|
|
||||||
library.addMetadata(metadata)
|
library.addMetadata(metadata)
|
||||||
|
|||||||
Reference in New Issue
Block a user