[Wasm] Add wasm target to Klib manifest
^KT-66327 fixed
This commit is contained in:
committed by
Space Team
parent
5ea6f20192
commit
b157a8eae5
@@ -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()) {
|
||||
|
||||
+2
-1
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user