Move KonanLibraryWriter and its friends to the shared package.

This commit is contained in:
Sergey Bogolepov
2019-10-10 17:35:18 +03:00
committed by Sergey Bogolepov
parent c675fff032
commit 496ebbe2a8
4 changed files with 30 additions and 43 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.backend.konan package org.jetbrains.kotlin.backend.konan
import llvm.* import llvm.*
import org.jetbrains.kotlin.backend.konan.library.impl.buildLibrary
import org.jetbrains.kotlin.backend.konan.llvm.* import org.jetbrains.kotlin.backend.konan.llvm.*
import org.jetbrains.kotlin.backend.konan.llvm.Llvm import org.jetbrains.kotlin.backend.konan.llvm.Llvm
import org.jetbrains.kotlin.konan.CURRENT import org.jetbrains.kotlin.konan.CURRENT
@@ -15,6 +14,7 @@ import org.jetbrains.kotlin.konan.file.isBitcode
import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.*
import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.CompilerOutputKind
import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.Family
import org.jetbrains.kotlin.konan.library.impl.buildLibrary
/** /**
* Supposed to be true for a single LLVM module within final binary. * Supposed to be true for a single LLVM module within final binary.
@@ -139,19 +139,18 @@ internal fun produceOutput(context: Context) {
val manifestProperties = context.config.manifestProperties val manifestProperties = context.config.manifestProperties
val library = buildLibrary( val library = buildLibrary(
context.config.nativeLibraries, context.config.nativeLibraries,
context.config.includeBinaries, context.config.includeBinaries,
neededLibraries, neededLibraries,
context.serializedMetadata!!, context.serializedMetadata!!,
context.serializedIr!!, context.serializedIr!!,
versions, versions,
target, target,
output, output,
libraryName, libraryName,
null, nopack,
nopack, manifestProperties,
manifestProperties, context.dataFlowGraph)
context.dataFlowGraph)
context.bitcodeFileName = library.mainBitcodeFileName context.bitcodeFileName = library.mainBitcodeFileName
} }
@@ -3,9 +3,8 @@
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
package org.jetbrains.kotlin.backend.konan.library package org.jetbrains.kotlin.konan.library
import llvm.LLVMModuleRef
import org.jetbrains.kotlin.library.BaseWriter import org.jetbrains.kotlin.library.BaseWriter
import org.jetbrains.kotlin.library.IrWriter import org.jetbrains.kotlin.library.IrWriter
import org.jetbrains.kotlin.library.MetadataWriter import org.jetbrains.kotlin.library.MetadataWriter
@@ -15,7 +14,6 @@ interface TargetedWriter {
} }
interface BitcodeWriter : TargetedWriter { interface BitcodeWriter : TargetedWriter {
fun addKotlinBitcode(llvmModule: LLVMModuleRef)
fun addNativeBitcode(library: String) fun addNativeBitcode(library: String)
} }
@@ -3,11 +3,9 @@
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
package org.jetbrains.kotlin.backend.konan.library.impl package org.jetbrains.kotlin.konan.library.impl
import llvm.LLVMModuleRef import org.jetbrains.kotlin.konan.library.BitcodeWriter
import llvm.LLVMWriteBitcodeToFile
import org.jetbrains.kotlin.backend.konan.library.BitcodeWriter
import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.library.BitcodeKotlinLibraryLayout import org.jetbrains.kotlin.konan.library.BitcodeKotlinLibraryLayout
import org.jetbrains.kotlin.konan.library.TargetedKotlinLibraryLayout import org.jetbrains.kotlin.konan.library.TargetedKotlinLibraryLayout
@@ -39,9 +37,4 @@ class BitcodeWriterImpl(
val basename = File(library).name val basename = File(library).name
File(library).copyTo(File(bitcodeLayout.nativeDir, basename)) File(library).copyTo(File(bitcodeLayout.nativeDir, basename))
} }
override fun addKotlinBitcode(llvmModule: LLVMModuleRef) {
//libraryLayout.llvmModule = llvmModule
LLVMWriteBitcodeToFile(llvmModule, bitcodeLayout.mainBitcodeFileName)
}
} }
@@ -3,11 +3,10 @@
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
package org.jetbrains.kotlin.backend.konan.library.impl package org.jetbrains.kotlin.konan.library.impl
import llvm.LLVMModuleRef import org.jetbrains.kotlin.konan.library.BitcodeWriter
import org.jetbrains.kotlin.backend.konan.library.BitcodeWriter import org.jetbrains.kotlin.konan.library.KonanLibraryWriter
import org.jetbrains.kotlin.backend.konan.library.KonanLibraryWriter
import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.library.KonanLibrary import org.jetbrains.kotlin.konan.library.KonanLibrary
import org.jetbrains.kotlin.konan.library.KonanLibraryLayout import org.jetbrains.kotlin.konan.library.KonanLibraryLayout
@@ -26,22 +25,22 @@ class KonanLibraryLayoutForWriter(
* Requires non-null [target]. * Requires non-null [target].
*/ */
class KonanLibraryWriterImpl( class KonanLibraryWriterImpl(
libDir: File, libDir: File,
moduleName: String, moduleName: String,
versions: KonanLibraryVersioning, versions: KonanLibraryVersioning,
target: KonanTarget, target: KonanTarget,
nopack: Boolean = false, nopack: Boolean = false,
val layout: KonanLibraryLayoutForWriter = KonanLibraryLayoutForWriter(libDir, target), val layout: KonanLibraryLayoutForWriter = KonanLibraryLayoutForWriter(libDir, target),
base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, nopack), base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, nopack),
bitcode: BitcodeWriter = BitcodeWriterImpl(layout), bitcode: BitcodeWriter = BitcodeWriterImpl(layout),
metadata: MetadataWriter = MetadataWriterImpl(layout), metadata: MetadataWriter = MetadataWriterImpl(layout),
ir: IrWriter = IrMonoliticWriterImpl(layout) ir: IrWriter = IrMonoliticWriterImpl(layout)
) : BaseWriter by base, BitcodeWriter by bitcode, MetadataWriter by metadata, IrWriter by ir, KonanLibraryWriter ) : BaseWriter by base, BitcodeWriter by bitcode, MetadataWriter by metadata, IrWriter by ir, KonanLibraryWriter
internal fun buildLibrary( fun buildLibrary(
natives: List<String>, natives: List<String>,
included: List<String>, included: List<String>,
linkDependencies: List<KonanLibrary>, linkDependencies: List<KonanLibrary>,
@@ -51,7 +50,6 @@ internal fun buildLibrary(
target: KonanTarget, target: KonanTarget,
output: String, output: String,
moduleName: String, moduleName: String,
llvmModule: LLVMModuleRef?,
nopack: Boolean, nopack: Boolean,
manifestProperties: Properties?, manifestProperties: Properties?,
dataFlowGraph: ByteArray? dataFlowGraph: ByteArray?
@@ -59,7 +57,6 @@ internal fun buildLibrary(
val library = KonanLibraryWriterImpl(File(output), moduleName, versions, target, nopack) val library = KonanLibraryWriterImpl(File(output), moduleName, versions, target, nopack)
llvmModule?.let { library.addKotlinBitcode(it) }
library.addMetadata(metadata) library.addMetadata(metadata)
library.addIr(ir) library.addIr(ir)