[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 java.util.*
data class LibraryCreationArguments(
val metadata: KlibModuleMetadata,
val outputPath: String,
val moduleName: String,
val nativeBitcodePath: String,
val target: KonanTarget,
val manifest: Properties,
val dependencies: List<KotlinLibrary>,
val nopack: Boolean
)
fun createInteropLibrary(arguments: LibraryCreationArguments) {
fun createInteropLibrary(
metadata: KlibModuleMetadata,
outputPath: String,
moduleName: String,
nativeBitcodeFiles: List<String>,
target: KonanTarget,
manifest: Properties,
dependencies: List<KotlinLibrary>,
nopack: Boolean
) {
val version = KotlinLibraryVersioning(
libraryVersion = null,
abiVersion = KotlinAbiVersion.CURRENT,
@@ -43,21 +41,21 @@ fun createInteropLibrary(arguments: LibraryCreationArguments) {
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
irVersion = KlibIrVersion.INSTANCE.toString()
)
val outputPathWithoutExtension = arguments.outputPath.removeSuffixIfPresent(".klib")
val outputPathWithoutExtension = outputPath.removeSuffixIfPresent(".klib")
KonanLibraryWriterImpl(
File(outputPathWithoutExtension),
arguments.moduleName,
moduleName,
version,
arguments.target,
target,
BuiltInsPlatform.NATIVE,
nopack = arguments.nopack
nopack = nopack
).apply {
val metadata = arguments.metadata.write(ChunkingWriteStrategy())
val metadata = metadata.write(ChunkingWriteStrategy())
addMetadata(SerializedMetadata(metadata.header, metadata.fragments, metadata.fragmentNames))
addNativeBitcode(arguments.nativeBitcodePath)
addManifestAddend(arguments.manifest)
addLinkDependencies(arguments.dependencies)
nativeBitcodeFiles.forEach(this::addNativeBitcode)
addManifestAddend(manifest)
addLinkDependencies(dependencies)
commit()
}
}
@@ -334,9 +334,9 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
argsToCompiler(staticLibraries, libraryPaths)
}
is StubIrDriver.Result.Metadata -> {
val args = LibraryCreationArguments(
createInteropLibrary(
metadata = stubIrOutput.metadata,
nativeBitcodePath = nativeOutputPath,
nativeBitcodeFiles = listOf(nativeOutputPath),
target = tool.target,
moduleName = moduleName,
outputPath = cinteropArguments.output,
@@ -344,7 +344,6 @@ private fun processCLib(args: Array<String>, additionalArgs: Map<String, Any> =
dependencies = allLibraryDependencies,
nopack = cinteropArguments.nopack
)
createInteropLibrary(args)
return null
}
}