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 {
|
internal val libraries: List<KonanLibraryReader> by lazy {
|
||||||
val target = targetManager.targetName
|
val target = targetManager.target
|
||||||
// Here we have chosen a particular KonanLibraryReader implementation.
|
// Here we have chosen a particular KonanLibraryReader implementation.
|
||||||
librariesFound.map{it -> LibraryReaderImpl(it, currentAbiVersion, target)}
|
librariesFound.map{it -> LibraryReaderImpl(it, currentAbiVersion, target)}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -16,12 +16,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.library
|
package org.jetbrains.kotlin.backend.konan.library
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.backend.konan.util.File
|
import org.jetbrains.kotlin.backend.konan.util.File
|
||||||
|
|
||||||
// This scheme describes the Konan Library (klib) layout.
|
// This scheme describes the Konan Library (klib) layout.
|
||||||
interface KonanLibrary {
|
interface KonanLibrary {
|
||||||
val libDir: File
|
val libDir: File
|
||||||
val target: String?
|
val target: KonanTarget?
|
||||||
// This is a default implementation. Can't make it an assignment.
|
// This is a default implementation. Can't make it an assignment.
|
||||||
get() = null
|
get() = null
|
||||||
val klibFile
|
val klibFile
|
||||||
@@ -33,7 +34,7 @@ interface KonanLibrary {
|
|||||||
val targetsDir
|
val targetsDir
|
||||||
get() = File(libDir, "targets")
|
get() = File(libDir, "targets")
|
||||||
val targetDir
|
val targetDir
|
||||||
get() = File(targetsDir, target!!)
|
get() = File(targetsDir, target!!.name.toLowerCase())
|
||||||
val kotlinDir
|
val kotlinDir
|
||||||
get() = File(targetDir, "kotlin")
|
get() = File(targetDir, "kotlin")
|
||||||
val nativeDir
|
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.serialization.deserializeModule
|
||||||
import org.jetbrains.kotlin.backend.konan.util.*
|
import org.jetbrains.kotlin.backend.konan.util.*
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
|
||||||
abstract class FileBasedLibraryReader(
|
abstract class FileBasedLibraryReader(
|
||||||
val file: File, val currentAbiVersion: Int,
|
val file: File, val currentAbiVersion: Int,
|
||||||
@@ -44,11 +45,11 @@ abstract class FileBasedLibraryReader(
|
|||||||
|
|
||||||
|
|
||||||
class LibraryReaderImpl(override val libDir: File, currentAbiVersion: Int,
|
class LibraryReaderImpl(override val libDir: File, currentAbiVersion: Int,
|
||||||
override val target: String?) :
|
override val target: KonanTarget?) :
|
||||||
FileBasedLibraryReader(libDir, currentAbiVersion, MetadataReaderImpl(libDir)),
|
FileBasedLibraryReader(libDir, currentAbiVersion, MetadataReaderImpl(libDir)),
|
||||||
KonanLibrary {
|
KonanLibrary {
|
||||||
|
|
||||||
public constructor(path: String, currentAbiVersion: Int, target: String?) :
|
public constructor(path: String, currentAbiVersion: Int, target: KonanTarget?) :
|
||||||
this(File(path), currentAbiVersion, target)
|
this(File(path), currentAbiVersion, target)
|
||||||
|
|
||||||
init {
|
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.KonanLibraryWriter
|
||||||
import org.jetbrains.kotlin.backend.konan.library.LinkData
|
import org.jetbrains.kotlin.backend.konan.library.LinkData
|
||||||
import org.jetbrains.kotlin.backend.konan.util.*
|
import org.jetbrains.kotlin.backend.konan.util.*
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
|
||||||
abstract class FileBasedLibraryWriter (
|
abstract class FileBasedLibraryWriter (
|
||||||
val file: File, val currentAbiVersion: Int): KonanLibraryWriter {
|
val file: File, val currentAbiVersion: Int): KonanLibraryWriter {
|
||||||
}
|
}
|
||||||
|
|
||||||
class LibraryWriterImpl(override val libDir: File, currentAbiVersion: Int,
|
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 {
|
FileBasedLibraryWriter(libDir, currentAbiVersion), KonanLibrary {
|
||||||
|
|
||||||
public constructor(path: String, currentAbiVersion: Int,
|
public constructor(path: String, currentAbiVersion: Int,
|
||||||
target: String, nopack: Boolean):
|
target:KonanTarget?, nopack: Boolean):
|
||||||
this(File(path), currentAbiVersion, target, nopack)
|
this(File(path), currentAbiVersion, target, nopack)
|
||||||
|
|
||||||
// TODO: Experiment with separate bitcode files.
|
// 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: KonanTarget, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter {
|
||||||
internal fun buildLibrary(natives: List<String>, linkData: LinkData, abiVersion: Int, target: String, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter {
|
|
||||||
|
|
||||||
val library = LibraryWriterImpl(output, abiVersion, target, nopack)
|
val library = LibraryWriterImpl(output, abiVersion, target, nopack)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -108,14 +108,14 @@ internal fun produceOutput(context: Context) {
|
|||||||
CompilerOutputKind.LIBRARY -> {
|
CompilerOutputKind.LIBRARY -> {
|
||||||
val libraryName = context.config.outputName
|
val libraryName = context.config.outputName
|
||||||
val abiVersion = context.config.currentAbiVersion
|
val abiVersion = context.config.currentAbiVersion
|
||||||
val targetName = context.config.targetManager.targetName
|
val target = context.config.targetManager.target
|
||||||
val nopack = config.getBoolean(KonanConfigKeys.NOPACK)
|
val nopack = config.getBoolean(KonanConfigKeys.NOPACK)
|
||||||
|
|
||||||
val library = buildLibrary(
|
val library = buildLibrary(
|
||||||
context.config.nativeLibraries,
|
context.config.nativeLibraries,
|
||||||
context.serializedLinkData!!,
|
context.serializedLinkData!!,
|
||||||
abiVersion,
|
abiVersion,
|
||||||
targetName,
|
target,
|
||||||
libraryName,
|
libraryName,
|
||||||
llvmModule,
|
llvmModule,
|
||||||
nopack)
|
nopack)
|
||||||
|
|||||||
Reference in New Issue
Block a user