Moved KonanLibrary to use KonanTarget.
This commit is contained in:
committed by
alexander-gorshenev
parent
edde21827c
commit
e2516f42e6
+1
-1
@@ -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)}
|
||||
}
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
+3
-2
@@ -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 {
|
||||
|
||||
+4
-4
@@ -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)
|
||||
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user