From e2516f42e640452656f7f1d76eb39fab326208ea Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 28 Jun 2017 12:59:35 +0300 Subject: [PATCH] Moved KonanLibrary to use KonanTarget. --- .../src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt | 2 +- .../kotlin/backend/konan/library/KonanLibrary.kt | 5 +++-- .../backend/konan/library/impl/KonanLibraryReaderImpl.kt | 5 +++-- .../backend/konan/library/impl/KonanLibraryWriterImpl.kt | 8 ++++---- .../jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index 1e314b754d9..176f2de5934 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -73,7 +73,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration } internal val libraries: List 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)} } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt index 9cedb0218c4..d55a3a2696f 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/KonanLibrary.kt @@ -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 diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryReaderImpl.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryReaderImpl.kt index ab4399b8283..9dbef53e111 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryReaderImpl.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryReaderImpl.kt @@ -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 { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryWriterImpl.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryWriterImpl.kt index 22fa414127d..77e18933dee 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryWriterImpl.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/impl/KonanLibraryWriterImpl.kt @@ -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, linkData: LinkData, abiVersion: Int, target: String, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter { +internal fun buildLibrary(natives: List, linkData: LinkData, abiVersion: Int, target: KonanTarget, output: String, llvmModule: LLVMModuleRef, nopack: Boolean): KonanLibraryWriter { val library = LibraryWriterImpl(output, abiVersion, target, nopack) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index c6e2d79fe60..d899f7eb27f 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -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)