Moved KonanLibrary to use KonanTarget.

This commit is contained in:
Alexander Gorshenev
2017-06-28 12:59:35 +03:00
committed by alexander-gorshenev
parent edde21827c
commit e2516f42e6
5 changed files with 13 additions and 11 deletions
@@ -73,7 +73,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
}
internal val libraries: List<KonanLibraryReader> by lazy {
val target = targetManager.targetName
val target = targetManager.target
// Here we have chosen a particular KonanLibraryReader implementation.
librariesFound.map{it -> LibraryReaderImpl(it, currentAbiVersion, target)}
}
@@ -16,12 +16,13 @@
package org.jetbrains.kotlin.backend.konan.library
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.backend.konan.util.File
// This scheme describes the Konan Library (klib) layout.
interface KonanLibrary {
val libDir: File
val target: String?
val target: KonanTarget?
// This is a default implementation. Can't make it an assignment.
get() = null
val klibFile
@@ -33,7 +34,7 @@ interface KonanLibrary {
val targetsDir
get() = File(libDir, "targets")
val targetDir
get() = File(targetsDir, target!!)
get() = File(targetsDir, target!!.name.toLowerCase())
val kotlinDir
get() = File(targetDir, "kotlin")
val nativeDir
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.backend.konan.library.MetadataReader
import org.jetbrains.kotlin.backend.konan.serialization.deserializeModule
import org.jetbrains.kotlin.backend.konan.util.*
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.konan.target.KonanTarget
abstract class FileBasedLibraryReader(
val file: File, val currentAbiVersion: Int,
@@ -44,11 +45,11 @@ abstract class FileBasedLibraryReader(
class LibraryReaderImpl(override val libDir: File, currentAbiVersion: Int,
override val target: String?) :
override val target: KonanTarget?) :
FileBasedLibraryReader(libDir, currentAbiVersion, MetadataReaderImpl(libDir)),
KonanLibrary {
public constructor(path: String, currentAbiVersion: Int, target: String?) :
public constructor(path: String, currentAbiVersion: Int, target: KonanTarget?) :
this(File(path), currentAbiVersion, target)
init {
@@ -22,17 +22,18 @@ import org.jetbrains.kotlin.backend.konan.library.KonanLibrary
import org.jetbrains.kotlin.backend.konan.library.KonanLibraryWriter
import org.jetbrains.kotlin.backend.konan.library.LinkData
import org.jetbrains.kotlin.backend.konan.util.*
import org.jetbrains.kotlin.konan.target.KonanTarget
abstract class FileBasedLibraryWriter (
val file: File, val currentAbiVersion: Int): KonanLibraryWriter {
}
class LibraryWriterImpl(override val libDir: File, currentAbiVersion: Int,
override val target: String?, val nopack: Boolean = false):
override val target: KonanTarget?, val nopack: Boolean = false):
FileBasedLibraryWriter(libDir, currentAbiVersion), KonanLibrary {
public constructor(path: String, currentAbiVersion: Int,
target: String, nopack: Boolean):
target:KonanTarget?, nopack: Boolean):
this(File(path), currentAbiVersion, target, nopack)
// TODO: Experiment with separate bitcode files.
@@ -79,8 +80,7 @@ class LibraryWriterImpl(override val libDir: File, currentAbiVersion: Int,
}
}
internal fun buildLibrary(natives: List<String>, linkData: LinkData, abiVersion: Int, target: String, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter {
internal fun buildLibrary(natives: List<String>, linkData: LinkData, abiVersion: Int, target: KonanTarget, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter {
val library = LibraryWriterImpl(output, abiVersion, target, nopack)
@@ -108,14 +108,14 @@ internal fun produceOutput(context: Context) {
CompilerOutputKind.LIBRARY -> {
val libraryName = context.config.outputName
val abiVersion = context.config.currentAbiVersion
val targetName = context.config.targetManager.targetName
val target = context.config.targetManager.target
val nopack = config.getBoolean(KonanConfigKeys.NOPACK)
val library = buildLibrary(
context.config.nativeLibraries,
context.serializedLinkData!!,
abiVersion,
targetName,
target,
libraryName,
llvmModule,
nopack)