[Wasm] Add wasm target to Klib manifest

^KT-66327 fixed
This commit is contained in:
Ilya Goncharov
2024-03-06 10:57:50 +00:00
committed by Space Team
parent 5ea6f20192
commit b157a8eae5
6 changed files with 22 additions and 3 deletions
@@ -32,7 +32,10 @@ import org.jetbrains.kotlin.cli.js.klib.*
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.config.getModuleNameForSource
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.fir.pipeline.Fir2KlibMetadataSerializer
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
@@ -481,6 +484,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
moduleFragment = moduleFragment,
diagnosticReporter = diagnosticsReporter,
builtInsPlatform = if (arguments.wasm) BuiltInsPlatform.WASM else BuiltInsPlatform.JS,
wasmTarget = if (!arguments.wasm) null else arguments.wasmTarget?.let(WasmTarget::fromName)
)
val messageCollector = environmentForJS.configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
@@ -579,7 +583,8 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
messageCollector = messageCollector,
diagnosticsReporter = diagnosticsReporter,
jsOutputName = arguments.irPerModuleOutputName,
useWasmPlatform = arguments.wasm
useWasmPlatform = arguments.wasm,
wasmTarget = arguments.wasmTarget?.let(WasmTarget::fromName)
)
reportCollectedDiagnostics(moduleStructure.compilerConfiguration, diagnosticsReporter, messageCollector)
@@ -260,6 +260,7 @@ fun serializeFirKlib(
diagnosticsReporter: BaseDiagnosticsCollector,
jsOutputName: String?,
useWasmPlatform: Boolean,
wasmTarget: WasmTarget?,
) {
val fir2KlibMetadataSerializer = Fir2KlibMetadataSerializer(
moduleStructure.compilerConfiguration,
@@ -285,5 +286,6 @@ fun serializeFirKlib(
abiVersion = KotlinAbiVersion.CURRENT, // TODO get from test file data
jsOutputName = jsOutputName,
builtInsPlatform = if (useWasmPlatform) BuiltInsPlatform.WASM else BuiltInsPlatform.JS,
wasmTarget = wasmTarget,
)
}
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.WasmTarget
import org.jetbrains.kotlin.konan.properties.Properties
import org.jetbrains.kotlin.konan.properties.propertyList
import org.jetbrains.kotlin.library.*
@@ -65,6 +66,7 @@ import org.jetbrains.kotlin.psi2ir.generators.TypeTranslatorImpl
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import org.jetbrains.kotlin.utils.DFS
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
import org.jetbrains.kotlin.utils.memoryOptimizedFilter
@@ -103,6 +105,7 @@ fun generateKLib(
moduleFragment: IrModuleFragment,
diagnosticReporter: DiagnosticReporter,
builtInsPlatform: BuiltInsPlatform = BuiltInsPlatform.JS,
wasmTarget: WasmTarget? = null,
) {
val configuration = depsDescriptors.compilerConfiguration
val allDependencies = depsDescriptors.allDependencies
@@ -122,6 +125,7 @@ fun generateKLib(
abiVersion,
jsOutputName,
builtInsPlatform,
wasmTarget,
)
}
@@ -615,6 +619,7 @@ fun serializeModuleIntoKlib(
abiVersion: KotlinAbiVersion,
jsOutputName: String?,
builtInsPlatform: BuiltInsPlatform = BuiltInsPlatform.JS,
wasmTarget: WasmTarget? = null,
) {
val moduleExportedNames = moduleFragment.collectExportedNames()
val incrementalResultsConsumer = configuration.get(JSConfigurationKeys.INCREMENTAL_RESULTS_CONSUMER)
@@ -690,6 +695,9 @@ fun serializeModuleIntoKlib(
if (jsOutputName != null) {
p.setProperty(KLIB_PROPERTY_JS_OUTPUT_NAME, jsOutputName)
}
wasmTarget?.let {
p.setProperty(KLIB_PROPERTY_WASM_TARGET, it.name.toLowerCaseAsciiOnly())
}
if (containsErrorCode) {
p.setProperty(KLIB_PROPERTY_CONTAINS_ERROR_CODE, "true")
}
@@ -717,6 +725,7 @@ fun serializeModuleIntoKlib(
const val KLIB_PROPERTY_JS_OUTPUT_NAME = "jsOutputName"
const val KLIB_PROPERTY_SERIALIZED_IR_FILE_FINGERPRINTS = "serializedIrFileFingerprints"
const val KLIB_PROPERTY_SERIALIZED_KLIB_FINGERPRINT = "serializedKlibFingerprint"
const val KLIB_PROPERTY_WASM_TARGET = "wasm_target"
fun <SourceFile> shouldGoToNextIcRound(
compilerConfiguration: CompilerConfiguration,
@@ -137,6 +137,7 @@ abstract class AbstractKlibIrTextTestCase : CodegenTestCase() {
abiVersion = KotlinAbiVersion.CURRENT,
jsOutputName = null,
builtInsPlatform = BuiltInsPlatform.JS,
wasmTarget = null,
)
return klibDir.canonicalPath
}
@@ -125,6 +125,7 @@ abstract class FirAbstractInvalidationTest(
diagnosticsReporter = diagnosticsReporter,
jsOutputName = moduleName,
useWasmPlatform = false,
wasmTarget = null,
)
if (messageCollector.hasErrors()) {
@@ -69,7 +69,8 @@ class FirWasmKlibBackendFacade(
perFile = false,
containsErrorCode = inputArtifact.hasErrors,
abiVersion = KotlinAbiVersion.CURRENT, // TODO get from test file data
jsOutputName = null
jsOutputName = null,
wasmTarget = target,
)
}