From b8b1dd753c10c025e3e150bc1b4eea20191b57a3 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 19 Feb 2020 18:55:52 +0300 Subject: [PATCH] Add builtins_platform property to klib manifest --- .../cli/metadata/K2MetadataKlibSerializer.kt | 4 +++- .../org/jetbrains/kotlin/ir/backend/js/klib.kt | 4 +++- .../org/jetbrains/kotlin/library/KotlinLibrary.kt | 1 + .../library/impl/KotlinLibraryWriterImpl.kt | 15 ++++++++++++--- .../konan/NativeDistributionCommonizer.kt | 9 ++++++++- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt index 85aa3ea0907..c90a7eedb26 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.buildKoltinLibrary import org.jetbrains.kotlin.library.metadata.NativeTypeTransformer import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer @@ -89,7 +90,8 @@ internal class K2MetadataKlibSerializer(private val metadataVersion: BuiltInsBin configuration[CommonConfigurationKeys.MODULE_NAME]!!, nopack = true, manifestProperties = null, - dataFlowGraph = null + dataFlowGraph = null, + builtInsPlatform = BuiltInsPlatform.COMMON ) } } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 80c59c3d502..ea55ccef04f 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.konan.properties.propertyList import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.buildKoltinLibrary import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.library.resolver.TopologicalLibraryOrder @@ -504,7 +505,8 @@ fun serializeModuleIntoKlib( moduleName = moduleName, nopack = nopack, output = klibPath, - versions = versions + versions = versions, + builtInsPlatform = BuiltInsPlatform.JS ) } diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt index 12f6a2a2a29..2322e855dc9 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt @@ -15,6 +15,7 @@ const val KLIB_PROPERTY_DEPENDS = "depends" const val KLIB_PROPERTY_PACKAGE = "package" const val KLIB_PROPERTY_INTEROP = "interop" const val KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS = "exportForwardDeclarations" +const val KLIB_PROPERTY_BUILTINS_PLATFORM = "builtins_platform" /** * Abstractions for getting access to the information stored inside of Kotlin/Native library. diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryWriterImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryWriterImpl.kt index 88736ea430d..2ddf6e035fb 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryWriterImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryWriterImpl.kt @@ -22,6 +22,7 @@ open class BaseWriterImpl( val libraryLayout: KotlinLibraryLayoutForWriter, moduleName: String, override val versions: KotlinLibraryVersioning, + builtInsPlatform: BuiltInsPlatform, val nopack: Boolean = false ) : BaseWriter { @@ -37,6 +38,8 @@ open class BaseWriterImpl( // TODO: : will go somewhere around here. manifestProperties.setProperty(KLIB_PROPERTY_UNIQUE_NAME, moduleName) manifestProperties.writeKonanLibraryVersioning(versions) + if (builtInsPlatform != BuiltInsPlatform.COMMON) + manifestProperties.setProperty(KLIB_PROPERTY_BUILTINS_PLATFORM, builtInsPlatform.name) } override fun addLinkDependencies(libraries: List) { @@ -78,11 +81,12 @@ class KoltinLibraryWriterImpl( libDir: File, moduleName: String, versions: KotlinLibraryVersioning, + builtInsPlatform: BuiltInsPlatform, nopack: Boolean = false, val layout: KotlinLibraryLayoutForWriter = KotlinLibraryLayoutForWriter(libDir), - val base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, nopack), + val base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, builtInsPlatform, nopack), metadata: MetadataWriter = MetadataWriterImpl(layout), ir: IrWriter = IrMonoliticWriterImpl(layout) // ir: IrWriter = IrPerFileWriterImpl(layout) @@ -98,10 +102,11 @@ fun buildKoltinLibrary( moduleName: String, nopack: Boolean, manifestProperties: Properties?, - dataFlowGraph: ByteArray? + dataFlowGraph: ByteArray?, + builtInsPlatform: BuiltInsPlatform ): KotlinLibraryLayout { - val library = KoltinLibraryWriterImpl(File(output), moduleName, versions, nopack) + val library = KoltinLibraryWriterImpl(File(output), moduleName, versions, builtInsPlatform, nopack) library.addMetadata(metadata) @@ -115,4 +120,8 @@ fun buildKoltinLibrary( library.commit() return library.layout +} + +enum class BuiltInsPlatform { + JVM, JS, NATIVE, COMMON } \ No newline at end of file diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt index dbe6db8aac6..59e20fb28ee 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.SerializedMetadata import org.jetbrains.kotlin.library.ToolingSingleFileKlibResolveStrategy import org.jetbrains.kotlin.library.impl.BaseWriterImpl +import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.KoltinLibraryWriterImpl import org.jetbrains.kotlin.library.resolveSingleFileKlib import org.jetbrains.kotlin.name.Name @@ -215,7 +216,13 @@ class NativeDistributionCommonizer( manifestData: NativeSensitiveManifestData, destination: File ) { - val library = KoltinLibraryWriterImpl(KFile(destination.path), manifestData.uniqueName, manifestData.versions, nopack = true) + val library = KoltinLibraryWriterImpl( + KFile(destination.path), + manifestData.uniqueName, + manifestData.versions, + BuiltInsPlatform.NATIVE, + nopack = true + ) library.addMetadata(metadata) manifestData.applyTo(library.base as BaseWriterImpl) library.commit()