Extract common buildKotlinMetadataLibrary
Use it in FirMetadataSerializer and K2MetadataKlibSerializer
This commit is contained in:
committed by
Space Team
parent
1dde34b610
commit
bf145ddee8
@@ -14,7 +14,10 @@ import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.*
|
import org.jetbrains.kotlin.cli.jvm.compiler.*
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.collectSources
|
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.collectSources
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.createContextForIncrementalCompilation
|
import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.createContextForIncrementalCompilation
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.FirModuleDataImpl
|
import org.jetbrains.kotlin.fir.FirModuleDataImpl
|
||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||||
@@ -32,14 +35,9 @@ import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile
|
|||||||
import org.jetbrains.kotlin.fir.session.FirCommonSessionFactory
|
import org.jetbrains.kotlin.fir.session.FirCommonSessionFactory
|
||||||
import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
|
import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
|
||||||
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
|
||||||
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.buildKotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataVersion
|
|
||||||
import org.jetbrains.kotlin.modules.TargetId
|
import org.jetbrains.kotlin.modules.TargetId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
@@ -195,27 +193,7 @@ internal class FirMetadataSerializer(
|
|||||||
|
|
||||||
val serializedMetadata = SerializedMetadata(module, fragmentParts, fragmentNames)
|
val serializedMetadata = SerializedMetadata(module, fragmentParts, fragmentNames)
|
||||||
|
|
||||||
val versions = KotlinLibraryVersioning(
|
buildKotlinMetadataLibrary(configuration, serializedMetadata, destDir)
|
||||||
abiVersion = KotlinAbiVersion.CURRENT,
|
|
||||||
libraryVersion = null,
|
|
||||||
compilerVersion = KotlinCompilerVersion.getVersion(),
|
|
||||||
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
|
||||||
irVersion = null
|
|
||||||
)
|
|
||||||
|
|
||||||
buildKotlinLibrary(
|
|
||||||
emptyList(),
|
|
||||||
serializedMetadata,
|
|
||||||
null,
|
|
||||||
versions,
|
|
||||||
destDir.absolutePath,
|
|
||||||
configuration[CommonConfigurationKeys.MODULE_NAME]!!,
|
|
||||||
nopack = true,
|
|
||||||
perFile = false,
|
|
||||||
manifestProperties = null,
|
|
||||||
dataFlowGraph = null,
|
|
||||||
builtInsPlatform = BuiltInsPlatform.COMMON
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,19 +15,16 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRoot
|
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRoot
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.K2MetadataConfigurationKeys
|
import org.jetbrains.kotlin.cli.jvm.config.K2MetadataConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.library.*
|
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||||
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
|
||||||
import org.jetbrains.kotlin.library.impl.buildKotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.library.metadata.*
|
import org.jetbrains.kotlin.library.metadata.*
|
||||||
import org.jetbrains.kotlin.library.metadata.impl.KlibMetadataModuleDescriptorFactoryImpl
|
import org.jetbrains.kotlin.library.metadata.impl.KlibMetadataModuleDescriptorFactoryImpl
|
||||||
|
import org.jetbrains.kotlin.library.resolveSingleFileKlib
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
@@ -55,7 +52,7 @@ internal class K2MetadataKlibSerializer(
|
|||||||
val project = environment.project
|
val project = environment.project
|
||||||
val module = analysisResult.moduleDescriptor
|
val module = analysisResult.moduleDescriptor
|
||||||
|
|
||||||
val serializedMetadata: SerializedMetadata = KlibMetadataMonolithicSerializer(
|
val serializedMetadata = KlibMetadataMonolithicSerializer(
|
||||||
configuration.languageVersionSettings,
|
configuration.languageVersionSettings,
|
||||||
metadataVersion,
|
metadataVersion,
|
||||||
project,
|
project,
|
||||||
@@ -64,27 +61,7 @@ internal class K2MetadataKlibSerializer(
|
|||||||
includeOnlyModuleContent = true
|
includeOnlyModuleContent = true
|
||||||
).serializeModule(module)
|
).serializeModule(module)
|
||||||
|
|
||||||
val versions = KotlinLibraryVersioning(
|
buildKotlinMetadataLibrary(configuration, serializedMetadata, destDir)
|
||||||
abiVersion = KotlinAbiVersion.CURRENT,
|
|
||||||
libraryVersion = null,
|
|
||||||
compilerVersion = KotlinCompilerVersion.getVersion(),
|
|
||||||
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
|
||||||
irVersion = null
|
|
||||||
)
|
|
||||||
|
|
||||||
buildKotlinLibrary(
|
|
||||||
emptyList(),
|
|
||||||
serializedMetadata,
|
|
||||||
null,
|
|
||||||
versions,
|
|
||||||
destDir.absolutePath,
|
|
||||||
configuration[CommonConfigurationKeys.MODULE_NAME]!!,
|
|
||||||
nopack = true,
|
|
||||||
perFile = false,
|
|
||||||
manifestProperties = null,
|
|
||||||
dataFlowGraph = null,
|
|
||||||
builtInsPlatform = BuiltInsPlatform.COMMON
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.cli.metadata
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
||||||
|
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||||
|
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
||||||
|
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||||
|
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
||||||
|
import org.jetbrains.kotlin.library.impl.buildKotlinLibrary
|
||||||
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataVersion
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
fun buildKotlinMetadataLibrary(configuration: CompilerConfiguration, serializedMetadata: SerializedMetadata, destDir: File) {
|
||||||
|
val versions = KotlinLibraryVersioning(
|
||||||
|
abiVersion = KotlinAbiVersion.CURRENT,
|
||||||
|
libraryVersion = null,
|
||||||
|
compilerVersion = KotlinCompilerVersion.getVersion(),
|
||||||
|
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
||||||
|
irVersion = null
|
||||||
|
)
|
||||||
|
|
||||||
|
buildKotlinLibrary(
|
||||||
|
emptyList(),
|
||||||
|
serializedMetadata,
|
||||||
|
null,
|
||||||
|
versions,
|
||||||
|
destDir.absolutePath,
|
||||||
|
configuration[CommonConfigurationKeys.MODULE_NAME]!!,
|
||||||
|
nopack = true,
|
||||||
|
perFile = false,
|
||||||
|
manifestProperties = null,
|
||||||
|
dataFlowGraph = null,
|
||||||
|
builtInsPlatform = BuiltInsPlatform.COMMON
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user