[cinterop] Minor refactoring

Get rid of unneeded `LibraryCreationArguments` class and
allow adding multiple bitcode files.
This commit is contained in:
Sergey Bogolepov
2020-03-12 13:09:36 +07:00
committed by Sergey Bogolepov
parent b42fd5592d
commit e8b341e977
2 changed files with 20 additions and 23 deletions
@@ -24,18 +24,16 @@ import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
import org.jetbrains.kotlin.util.removeSuffixIfPresent import org.jetbrains.kotlin.util.removeSuffixIfPresent
import java.util.* import java.util.*
data class LibraryCreationArguments( fun createInteropLibrary(
val metadata: KlibModuleMetadata, metadata: KlibModuleMetadata,
val outputPath: String, outputPath: String,
val moduleName: String, moduleName: String,
val nativeBitcodePath: String, nativeBitcodeFiles: List<String>,
val target: KonanTarget, target: KonanTarget,
val manifest: Properties, manifest: Properties,
val dependencies: List<KotlinLibrary>, dependencies: List<KotlinLibrary>,
val nopack: Boolean nopack: Boolean
) ) {
fun createInteropLibrary(arguments: LibraryCreationArguments) {
val version = KotlinLibraryVersioning( val version = KotlinLibraryVersioning(
libraryVersion = null, libraryVersion = null,
abiVersion = KotlinAbiVersion.CURRENT, abiVersion = KotlinAbiVersion.CURRENT,
@@ -43,21 +41,21 @@ fun createInteropLibrary(arguments: LibraryCreationArguments) {
metadataVersion = KlibMetadataVersion.INSTANCE.toString(), metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
irVersion = KlibIrVersion.INSTANCE.toString() irVersion = KlibIrVersion.INSTANCE.toString()
) )
val outputPathWithoutExtension = arguments.outputPath.removeSuffixIfPresent(".klib") val outputPathWithoutExtension = outputPath.removeSuffixIfPresent(".klib")
KonanLibraryWriterImpl( KonanLibraryWriterImpl(
File(outputPathWithoutExtension), File(outputPathWithoutExtension),
arguments.moduleName, moduleName,
version, version,
arguments.target, target,
BuiltInsPlatform.NATIVE, BuiltInsPlatform.NATIVE,
nopack = arguments.nopack nopack = nopack
).apply { ).apply {
val metadata = arguments.metadata.write(ChunkingWriteStrategy()) val metadata = metadata.write(ChunkingWriteStrategy())
addMetadata(SerializedMetadata(metadata.header, metadata.fragments, metadata.fragmentNames)) addMetadata(SerializedMetadata(metadata.header, metadata.fragments, metadata.fragmentNames))
addNativeBitcode(arguments.nativeBitcodePath) nativeBitcodeFiles.forEach(this::addNativeBitcode)
addManifestAddend(arguments.manifest) addManifestAddend(manifest)
addLinkDependencies(arguments.dependencies) addLinkDependencies(dependencies)
commit() commit()
} }
} }
@@ -334,9 +334,9 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
argsToCompiler(staticLibraries, libraryPaths) argsToCompiler(staticLibraries, libraryPaths)
} }
is StubIrDriver.Result.Metadata -> { is StubIrDriver.Result.Metadata -> {
val args = LibraryCreationArguments( createInteropLibrary(
metadata = stubIrOutput.metadata, metadata = stubIrOutput.metadata,
nativeBitcodePath = nativeOutputPath, nativeBitcodeFiles = listOf(nativeOutputPath),
target = tool.target, target = tool.target,
moduleName = moduleName, moduleName = moduleName,
outputPath = cinteropArguments.output, outputPath = cinteropArguments.output,
@@ -344,7 +344,6 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
dependencies = allLibraryDependencies, dependencies = allLibraryDependencies,
nopack = cinteropArguments.nopack nopack = cinteropArguments.nopack
) )
createInteropLibrary(args)
return null return null
} }
} }