[K/N] Move kotlin-native/utilities/basic-utils to compiler/utils
This commit is contained in:
committed by
Space Team
parent
3ab6e9de28
commit
4468167a64
@@ -11,7 +11,6 @@ dependencies {
|
|||||||
testImplementation(projectTests(":analysis:analysis-test-framework"))
|
testImplementation(projectTests(":analysis:analysis-test-framework"))
|
||||||
testImplementation(projectTests(":native:native.tests"))
|
testImplementation(projectTests(":native:native.tests"))
|
||||||
testImplementation(project(":native:kotlin-native-utils"))
|
testImplementation(project(":native:kotlin-native-utils"))
|
||||||
testImplementation(project(":kotlin-native:utilities:basic-utils"))
|
|
||||||
|
|
||||||
testImplementation(platform(libs.junit.bom))
|
testImplementation(platform(libs.junit.bom))
|
||||||
testImplementation(libs.junit.jupiter.api)
|
testImplementation(libs.junit.jupiter.api)
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.standalone.konan.fir.test.cases.sessio
|
|||||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.session.builder.AbstractStandaloneSessionBuilderAgainstStdlibTest
|
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.session.builder.AbstractStandaloneSessionBuilderAgainstStdlibTest
|
||||||
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
|
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
|
||||||
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
|
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -16,7 +16,7 @@ import java.io.File
|
|||||||
class NativeStandaloneSessionBuilderAgainstStdlibTest : AbstractStandaloneSessionBuilderAgainstStdlibTest() {
|
class NativeStandaloneSessionBuilderAgainstStdlibTest : AbstractStandaloneSessionBuilderAgainstStdlibTest() {
|
||||||
@Test
|
@Test
|
||||||
fun testKotlinStdlibJvm() {
|
fun testKotlinStdlibJvm() {
|
||||||
val konanHome = File(KonanHomeProvider.determineKonanHome())
|
val konanHome = KotlinNativePaths.homePath
|
||||||
doTestKotlinStdLibResolve(
|
doTestKotlinStdLibResolve(
|
||||||
NativePlatforms.unspecifiedNativePlatform,
|
NativePlatforms.unspecifiedNativePlatform,
|
||||||
konanHome.resolve(konanCommonLibraryPath(KONAN_STDLIB_NAME)).toPath()
|
konanHome.resolve(konanCommonLibraryPath(KONAN_STDLIB_NAME)).toPath()
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.utils
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Paths
|
||||||
|
|
||||||
|
object KotlinNativePaths {
|
||||||
|
private val validPropertiesNames = listOf(
|
||||||
|
"kotlin.native.home", "org.jetbrains.kotlin.native.home", "konan.home"
|
||||||
|
)
|
||||||
|
private val kotlinNativeHome
|
||||||
|
get() = validPropertiesNames.firstNotNullOfOrNull(System::getProperty)
|
||||||
|
|
||||||
|
private fun defaultHomePath(): File {
|
||||||
|
val jarPath = PathUtil.getResourcePathForClass(this::class.java)
|
||||||
|
|
||||||
|
// Check that the path obtained really points to the distribution.
|
||||||
|
check(
|
||||||
|
jarPath.toPath().endsWith(Paths.get("konan/lib/kotlin-native.jar")) || jarPath.toPath()
|
||||||
|
.endsWith(Paths.get("konan/lib/kotlin-native-compiler-embeddable.jar"))
|
||||||
|
) {
|
||||||
|
val classesPath = if (jarPath.extension == "jar") jarPath else jarPath.parentFile
|
||||||
|
"""
|
||||||
|
Cannot determine a compiler distribution directory.
|
||||||
|
A path to compiler classes is not a part of a distribution: ${classesPath.absolutePath}.
|
||||||
|
Please set the konan.home system property to specify the distribution path manually.
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
|
||||||
|
// The compiler jar is located in <dist>/konan/lib.
|
||||||
|
return jarPath.parentFile.parentFile.parentFile
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path to the current Kotlin/Native distribution
|
||||||
|
*
|
||||||
|
* - If one of `kotlin.native.home`, `org.jetbrains.kotlin.native.home`, `konan.home` is provided,
|
||||||
|
* it's value used
|
||||||
|
* - Otherwise determines a path to a jar containing this class.
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException when cannot find Kotlin/Native distribution
|
||||||
|
*/
|
||||||
|
val homePath: File
|
||||||
|
get() = kotlinNativeHome?.let {
|
||||||
|
// KT-58979: KonanLibraryImpl needs normalized klib paths to correctly provide symbols from resolved klibs
|
||||||
|
File(it).normalize()
|
||||||
|
} ?: defaultHomePath()
|
||||||
|
}
|
||||||
+6
-8
@@ -1,15 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* that can be found in the LICENSE file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.konan.util
|
package org.jetbrains.kotlin.utils
|
||||||
|
|
||||||
import sun.misc.Unsafe
|
import sun.misc.Unsafe
|
||||||
|
|
||||||
class ThreadSafeDisposableHelper<T>(create: () -> T, private val dispose: (T) -> Unit) {
|
class ThreadSafeDisposableHelper<T>(private val _create: () -> T, private val _dispose: (T) -> Unit) {
|
||||||
private val create_ = create
|
|
||||||
|
|
||||||
var holder: T? = null
|
var holder: T? = null
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@@ -20,7 +18,7 @@ class ThreadSafeDisposableHelper<T>(create: () -> T, private val dispose: (T) ->
|
|||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
if (counter++ == 0) {
|
if (counter++ == 0) {
|
||||||
check(holder == null)
|
check(holder == null)
|
||||||
holder = create_()
|
holder = _create()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +26,7 @@ class ThreadSafeDisposableHelper<T>(create: () -> T, private val dispose: (T) ->
|
|||||||
fun dispose() {
|
fun dispose() {
|
||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
if (--counter == 0) {
|
if (--counter == 0) {
|
||||||
dispose(holder!!)
|
_dispose(holder!!)
|
||||||
holder = null
|
holder = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -139,9 +139,9 @@ sourceSets {
|
|||||||
dependencies {
|
dependencies {
|
||||||
api(project(":kotlin-stdlib"))
|
api(project(":kotlin-stdlib"))
|
||||||
api(project(":kotlin-native:Interop:Runtime"))
|
api(project(":kotlin-native:Interop:Runtime"))
|
||||||
api(project(":kotlin-native:utilities:basic-utils"))
|
|
||||||
|
|
||||||
testImplementation(kotlin("test-junit"))
|
testImplementation(kotlin("test-junit"))
|
||||||
|
testImplementation(project(":compiler:util"))
|
||||||
}
|
}
|
||||||
|
|
||||||
val nativelibs = project.tasks.register<Copy>("nativelibs") {
|
val nativelibs = project.tasks.register<Copy>("nativelibs") {
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.native.interop.indexer
|
package org.jetbrains.kotlin.native.interop.indexer
|
||||||
|
|
||||||
import kotlinx.cinterop.JvmCInteropCallbacks
|
import kotlinx.cinterop.JvmCInteropCallbacks
|
||||||
import org.jetbrains.kotlin.konan.util.NativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.NativeMemoryAllocator
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.test.AfterTest
|
import kotlin.test.AfterTest
|
||||||
import kotlin.test.BeforeTest
|
import kotlin.test.BeforeTest
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ native {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":kotlin-native:utilities:basic-utils"))
|
implementation(project(":compiler:util"))
|
||||||
implementation(project(":kotlin-stdlib"))
|
implementation(project(":kotlin-stdlib"))
|
||||||
implementation(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
implementation(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package kotlinx.cinterop
|
package kotlinx.cinterop
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.util.NativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.NativeMemoryAllocator
|
||||||
import org.jetbrains.kotlin.konan.util.ThreadSafeDisposableHelper
|
import org.jetbrains.kotlin.utils.ThreadSafeDisposableHelper
|
||||||
import sun.misc.Unsafe
|
import sun.misc.Unsafe
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
import java.util.function.LongConsumer
|
import java.util.function.LongConsumer
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package kotlinx.cinterop
|
package kotlinx.cinterop
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.util.nativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.nativeMemoryAllocator
|
||||||
import sun.misc.Unsafe
|
import sun.misc.Unsafe
|
||||||
|
|
||||||
private val NativePointed.address: Long
|
private val NativePointed.address: Long
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package kotlinx.cinterop
|
package kotlinx.cinterop
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
@@ -192,7 +192,7 @@ fun loadKonanLibrary(name: String) {
|
|||||||
for (dir in paths) {
|
for (dir in paths) {
|
||||||
if (tryLoadKonanLibrary(dir, fullLibraryName, runFromDaemon)) return
|
if (tryLoadKonanLibrary(dir, fullLibraryName, runFromDaemon)) return
|
||||||
}
|
}
|
||||||
val defaultNativeLibsDir = "${KonanHomeProvider.determineKonanHome()}/konan/nativelib"
|
val defaultNativeLibsDir = "${KotlinNativePaths.homePath.absolutePath}/konan/nativelib"
|
||||||
if (tryLoadKonanLibrary(defaultNativeLibsDir, fullLibraryName, runFromDaemon))
|
if (tryLoadKonanLibrary(defaultNativeLibsDir, fullLibraryName, runFromDaemon))
|
||||||
return
|
return
|
||||||
error("Lib $fullLibraryName is not found in $defaultNativeLibsDir and ${paths.joinToString { it }}")
|
error("Lib $fullLibraryName is not found in $defaultNativeLibsDir and ${paths.joinToString { it }}")
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ application {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":kotlin-native:Interop:Indexer"))
|
implementation(project(":kotlin-native:Interop:Indexer"))
|
||||||
implementation(project(":kotlin-native:utilities:basic-utils"))
|
|
||||||
implementation(project(path = ":kotlin-native:endorsedLibraries:kotlinx.cli", configuration = "jvmRuntimeElements"))
|
implementation(project(path = ":kotlin-native:endorsedLibraries:kotlinx.cli", configuration = "jvmRuntimeElements"))
|
||||||
|
|
||||||
api(project(":kotlin-stdlib"))
|
api(project(":kotlin-stdlib"))
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ package org.jetbrains.kotlin.native.interop.gen
|
|||||||
|
|
||||||
import kotlinx.cinterop.usingJvmCInteropCallbacks
|
import kotlinx.cinterop.usingJvmCInteropCallbacks
|
||||||
import org.jetbrains.kotlin.konan.util.DefFile
|
import org.jetbrains.kotlin.konan.util.DefFile
|
||||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.usingNativeMemoryAllocator
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.buildNativeLibrary
|
import org.jetbrains.kotlin.native.interop.gen.jvm.buildNativeLibrary
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.prepareTool
|
import org.jetbrains.kotlin.native.interop.gen.jvm.prepareTool
|
||||||
|
|||||||
+2
-2
@@ -17,13 +17,13 @@
|
|||||||
package org.jetbrains.kotlin.native.interop.tool
|
package org.jetbrains.kotlin.native.interop.tool
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.konan.target.AbstractToolConfig
|
import org.jetbrains.kotlin.konan.target.AbstractToolConfig
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.native.interop.indexer.Language
|
import org.jetbrains.kotlin.native.interop.indexer.Language
|
||||||
|
|
||||||
class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform, propertyOverrides: Map<String, String>, konanDataDir: String? = null)
|
class ToolConfig(userProvidedTargetName: String?, flavor: KotlinPlatform, propertyOverrides: Map<String, String>, konanDataDir: String? = null)
|
||||||
: AbstractToolConfig(KonanHomeProvider.determineKonanHome(), userProvidedTargetName, propertyOverrides, konanDataDir) {
|
: AbstractToolConfig(KotlinNativePaths.homePath.absolutePath, userProvidedTargetName, propertyOverrides, konanDataDir) {
|
||||||
|
|
||||||
val clang = when (flavor) {
|
val clang = when (flavor) {
|
||||||
KotlinPlatform.JVM -> platform.clangForJni
|
KotlinPlatform.JVM -> platform.clangForJni
|
||||||
|
|||||||
+3
-3
@@ -29,8 +29,8 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
|||||||
import org.jetbrains.kotlin.konan.target.Distribution
|
import org.jetbrains.kotlin.konan.target.Distribution
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.util.DefFile
|
import org.jetbrains.kotlin.konan.util.DefFile
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.usingNativeMemoryAllocator
|
||||||
import org.jetbrains.kotlin.library.KLIB_PROPERTY_IR_PROVIDER
|
import org.jetbrains.kotlin.library.KLIB_PROPERTY_IR_PROVIDER
|
||||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||||
import org.jetbrains.kotlin.library.metadata.resolver.TopologicalLibraryOrder
|
import org.jetbrains.kotlin.library.metadata.resolver.TopologicalLibraryOrder
|
||||||
@@ -486,7 +486,7 @@ private fun getLibraryResolver(
|
|||||||
repos,
|
repos,
|
||||||
libraries.filter { it.contains(org.jetbrains.kotlin.konan.file.File.separator) },
|
libraries.filter { it.contains(org.jetbrains.kotlin.konan.file.File.separator) },
|
||||||
target,
|
target,
|
||||||
Distribution(KonanHomeProvider.determineKonanHome(), konanDataDir = cinteropArguments.konanDataDir)
|
Distribution(KotlinNativePaths.homePath.absolutePath, konanDataDir = cinteropArguments.konanDataDir)
|
||||||
).libraryResolver()
|
).libraryResolver()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.native.interop.gen
|
|||||||
import kotlinx.cinterop.JvmCInteropCallbacks
|
import kotlinx.cinterop.JvmCInteropCallbacks
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.util.DefFile
|
import org.jetbrains.kotlin.konan.util.DefFile
|
||||||
import org.jetbrains.kotlin.konan.util.NativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.NativeMemoryAllocator
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
import org.jetbrains.kotlin.native.interop.gen.jvm.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.buildNativeLibrary
|
import org.jetbrains.kotlin.native.interop.gen.jvm.buildNativeLibrary
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.prepareTool
|
import org.jetbrains.kotlin.native.interop.gen.jvm.prepareTool
|
||||||
|
|||||||
@@ -154,7 +154,6 @@ dependencies {
|
|||||||
}
|
}
|
||||||
kotlin_script_runtime_jar project(":kotlin-script-runtime")
|
kotlin_script_runtime_jar project(":kotlin-script-runtime")
|
||||||
|
|
||||||
compilerApi project(":kotlin-native:utilities:basic-utils")
|
|
||||||
compilerApi project(":native:objcexport-header-generator")
|
compilerApi project(":native:objcexport-header-generator")
|
||||||
compilerApi project(":native:objcexport-header-generator-k1")
|
compilerApi project(":native:objcexport-header-generator-k1")
|
||||||
compilerApi project(":native:base")
|
compilerApi project(":native:base")
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ 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.properties.loadProperties
|
import org.jetbrains.kotlin.konan.properties.loadProperties
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
import org.jetbrains.kotlin.library.metadata.resolver.TopologicalLibraryOrder
|
import org.jetbrains.kotlin.library.metadata.resolver.TopologicalLibraryOrder
|
||||||
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
import org.jetbrains.kotlin.util.removeSuffixIfPresent
|
||||||
@@ -41,7 +41,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
|||||||
}
|
}
|
||||||
|
|
||||||
Distribution(
|
Distribution(
|
||||||
configuration.get(KonanConfigKeys.KONAN_HOME) ?: KonanHomeProvider.determineKonanHome(),
|
configuration.get(KonanConfigKeys.KONAN_HOME) ?: KotlinNativePaths.homePath.absolutePath,
|
||||||
false,
|
false,
|
||||||
configuration.get(KonanConfigKeys.RUNTIME_FILE),
|
configuration.get(KonanConfigKeys.RUNTIME_FILE),
|
||||||
overridenProperties,
|
overridenProperties,
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.konan.file.File
|
import org.jetbrains.kotlin.konan.file.File
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.usingNativeMemoryAllocator
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dynamic driver does not "know" upfront which phases will be executed.
|
* Dynamic driver does not "know" upfront which phases will be executed.
|
||||||
|
|||||||
@@ -167,7 +167,6 @@ dependencies {
|
|||||||
distPack project(':native:objcexport-header-generator-k1')
|
distPack project(':native:objcexport-header-generator-k1')
|
||||||
distPack project(':native:base')
|
distPack project(':native:base')
|
||||||
distPack project(':kotlin-native:utilities:cli-runner')
|
distPack project(':kotlin-native:utilities:cli-runner')
|
||||||
distPack project(':kotlin-native:utilities:basic-utils')
|
|
||||||
distPack project(':kotlin-native:klib')
|
distPack project(':kotlin-native:klib')
|
||||||
distPack project(path: ':kotlin-native:backend.native', configuration: 'cli_bcApiElements')
|
distPack project(path: ':kotlin-native:backend.native', configuration: 'cli_bcApiElements')
|
||||||
distPack project(path: ':kotlin-native:endorsedLibraries:kotlinx.cli', configuration: "jvmRuntimeElements")
|
distPack project(path: ':kotlin-native:endorsedLibraries:kotlinx.cli', configuration: "jvmRuntimeElements")
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ dependencies {
|
|||||||
implementation(project(":native:frontend.native"))
|
implementation(project(":native:frontend.native"))
|
||||||
implementation(project(":compiler:ir.psi2ir"))
|
implementation(project(":compiler:ir.psi2ir"))
|
||||||
implementation(project(":compiler:ir.serialization.native"))
|
implementation(project(":compiler:ir.serialization.native"))
|
||||||
implementation(project(":kotlin-native:utilities:basic-utils"))
|
|
||||||
implementation(project(":kotlin-util-klib-abi"))
|
implementation(project(":kotlin-util-klib-abi"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.konan.library.KonanLibrary
|
|||||||
import org.jetbrains.kotlin.konan.library.resolverByName
|
import org.jetbrains.kotlin.konan.library.resolverByName
|
||||||
import org.jetbrains.kotlin.konan.target.Distribution
|
import org.jetbrains.kotlin.konan.target.Distribution
|
||||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.library.*
|
import org.jetbrains.kotlin.library.*
|
||||||
import org.jetbrains.kotlin.library.abi.*
|
import org.jetbrains.kotlin.library.abi.*
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories
|
||||||
@@ -447,10 +447,10 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
|||||||
val defaultModules = mutableListOf<ModuleDescriptorImpl>()
|
val defaultModules = mutableListOf<ModuleDescriptorImpl>()
|
||||||
if (!module.isNativeStdlib()) {
|
if (!module.isNativeStdlib()) {
|
||||||
val resolver = resolverByName(
|
val resolver = resolverByName(
|
||||||
emptyList(),
|
emptyList(),
|
||||||
distributionKlib = Distribution(KonanHomeProvider.determineKonanHome()).klib,
|
distributionKlib = Distribution(KotlinNativePaths.homePath.absolutePath).klib,
|
||||||
skipCurrentDir = true,
|
skipCurrentDir = true,
|
||||||
logger = KlibToolLogger
|
logger = KlibToolLogger
|
||||||
)
|
)
|
||||||
resolver.defaultLinks(false, true, true).mapTo(defaultModules) {
|
resolver.defaultLinks(false, true, true).mapTo(defaultModules) {
|
||||||
KlibFactories.DefaultDeserializedDescriptorFactory.createDescriptor(it, versionSpec, storageManager, module.builtIns, null)
|
KlibFactories.DefaultDeserializedDescriptorFactory.createDescriptor(it, versionSpec, storageManager, module.builtIns, null)
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ dependencies {
|
|||||||
kotlinNativeEmbedded(project(":kotlin-native:Interop:Skia"))
|
kotlinNativeEmbedded(project(":kotlin-native:Interop:Skia"))
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:backend.native"))
|
kotlinNativeEmbedded(project(":kotlin-native:backend.native"))
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:utilities:cli-runner"))
|
kotlinNativeEmbedded(project(":kotlin-native:utilities:cli-runner"))
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:utilities:basic-utils"))
|
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:klib"))
|
kotlinNativeEmbedded(project(":kotlin-native:klib"))
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:backend.native", "cli_bcApiElements"))
|
kotlinNativeEmbedded(project(":kotlin-native:backend.native", "cli_bcApiElements"))
|
||||||
kotlinNativeEmbedded(project(":kotlin-native:endorsedLibraries:kotlinx.cli", "jvmRuntimeElements"))
|
kotlinNativeEmbedded(project(":kotlin-native:endorsedLibraries:kotlinx.cli", "jvmRuntimeElements"))
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the LICENSE file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
apply(from = "$rootDir/kotlin-native/gradle/kotlinGradlePlugin.gradle")
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
kotlin("jvm")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.named<KotlinCompile>("compileKotlin") {
|
|
||||||
kotlinOptions {
|
|
||||||
freeCompilerArgs += listOf("-Xskip-metadata-version-check")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
api(project(":kotlin-stdlib"))
|
|
||||||
implementation(project(":compiler:util"))
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
package org.jetbrains.kotlin.konan.util
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
|
||||||
import org.jetbrains.kotlin.*
|
|
||||||
import java.io.File
|
|
||||||
import java.nio.file.Paths
|
|
||||||
|
|
||||||
object KonanHomeProvider {
|
|
||||||
internal val validPropertiesNames = listOf("kotlin.native.home",
|
|
||||||
"org.jetbrains.kotlin.native.home",
|
|
||||||
"konan.home")
|
|
||||||
internal val kotlinNativeHome
|
|
||||||
get() = validPropertiesNames.mapNotNull(System::getProperty).firstOrNull()
|
|
||||||
/**
|
|
||||||
* Determines a path to the current Kotlin/Native distribution.
|
|
||||||
*
|
|
||||||
* - If the system property "konan.home" is set, the method returns its normalized value.
|
|
||||||
* - Otherwise, it determines a path to a jar containing this class. If this path corresponds to the jar path
|
|
||||||
* inside a distribution, the method calculates the path to the distribution on the basis of this jar path.
|
|
||||||
* Otherwise an IllegalStateException is thrown.
|
|
||||||
*/
|
|
||||||
fun determineKonanHome(): String {
|
|
||||||
val propertyValue = kotlinNativeHome
|
|
||||||
return if (propertyValue != null) {
|
|
||||||
// KT-58979: KonanLibraryImpl needs normalized klib paths to correctly provide symbols from resolved klibs
|
|
||||||
// For extra safety, path to "konan.home" is also normalized here
|
|
||||||
Paths.get(File(propertyValue).absolutePath).normalize().toString()
|
|
||||||
} else {
|
|
||||||
val jarPath = PathUtil.getResourcePathForClass(this::class.java)
|
|
||||||
|
|
||||||
// Check that the path obtained really points to the distribution.
|
|
||||||
check(jarPath.toPath().endsWith(Paths.get("konan/lib/kotlin-native.jar")) ||
|
|
||||||
jarPath.toPath().endsWith(Paths.get("konan/lib/kotlin-native-compiler-embeddable.jar"))) {
|
|
||||||
val classesPath = if (jarPath.extension == "jar") jarPath else jarPath.parentFile
|
|
||||||
"""
|
|
||||||
Cannot determine a compiler distribution directory.
|
|
||||||
A path to compiler classes is not a part of a distribution: ${classesPath.absolutePath}.
|
|
||||||
Please set the konan.home system property to specify the distribution path manually.
|
|
||||||
""".trimIndent()
|
|
||||||
}
|
|
||||||
|
|
||||||
// The compiler jar is located in <dist>/konan/lib.
|
|
||||||
jarPath.parentFile.parentFile.parentFile.absolutePath
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -22,7 +22,6 @@ dependencies {
|
|||||||
implementation project(":compiler:cli-common")
|
implementation project(":compiler:cli-common")
|
||||||
implementation project(':kotlin-native:Interop:StubGenerator')
|
implementation project(':kotlin-native:Interop:StubGenerator')
|
||||||
implementation project(':kotlin-native:klib')
|
implementation project(':kotlin-native:klib')
|
||||||
implementation project(":kotlin-native:utilities:basic-utils")
|
|
||||||
implementation project(path: ":kotlin-native:endorsedLibraries:kotlinx.cli", configuration: "jvmRuntimeElements")
|
implementation project(path: ":kotlin-native:endorsedLibraries:kotlinx.cli", configuration: "jvmRuntimeElements")
|
||||||
implementation project(":native:kotlin-native-utils")
|
implementation project(":native:kotlin-native-utils")
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.backend.konan.CachedLibraries
|
|||||||
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
||||||
import org.jetbrains.kotlin.backend.konan.files.renameAtomic
|
import org.jetbrains.kotlin.backend.konan.files.renameAtomic
|
||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.konan.util.PlatformLibsInfo
|
import org.jetbrains.kotlin.konan.util.PlatformLibsInfo
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.parseKeyValuePairs
|
import org.jetbrains.kotlin.native.interop.gen.jvm.parseKeyValuePairs
|
||||||
@@ -24,7 +24,7 @@ import java.nio.file.Files
|
|||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.usingNativeMemoryAllocator
|
||||||
|
|
||||||
// TODO: We definitely need to unify logging in different parts of the compiler.
|
// TODO: We definitely need to unify logging in different parts of the compiler.
|
||||||
private class Logger(val level: Level = Level.NORMAL) {
|
private class Logger(val level: Level = Level.NORMAL) {
|
||||||
@@ -126,7 +126,7 @@ fun generatePlatformLibraries(args: Array<String>) = usingNativeMemoryAllocator
|
|||||||
argParser.parse(args)
|
argParser.parse(args)
|
||||||
|
|
||||||
val distribution = Distribution(
|
val distribution = Distribution(
|
||||||
KonanHomeProvider.determineKonanHome(),
|
KotlinNativePaths.homePath.absolutePath,
|
||||||
onlyDefaultProfiles = false,
|
onlyDefaultProfiles = false,
|
||||||
runtimeFileOverride = null,
|
runtimeFileOverride = null,
|
||||||
propertyOverrides = parseKeyValuePairs(overrideKonanProperties),
|
propertyOverrides = parseKeyValuePairs(overrideKonanProperties),
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.cli.utilities
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
|
||||||
import org.jetbrains.kotlin.konan.file.File
|
import org.jetbrains.kotlin.konan.file.File
|
||||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.InternalInteropOptions
|
import org.jetbrains.kotlin.native.interop.gen.jvm.InternalInteropOptions
|
||||||
import org.jetbrains.kotlin.native.interop.gen.jvm.Interop
|
import org.jetbrains.kotlin.native.interop.gen.jvm.Interop
|
||||||
import org.jetbrains.kotlin.native.interop.tool.*
|
import org.jetbrains.kotlin.native.interop.tool.*
|
||||||
@@ -43,8 +43,8 @@ fun invokeInterop(flavor: String, args: Array<String>, runFromDaemon: Boolean):
|
|||||||
val repos = arguments.repo
|
val repos = arguments.repo
|
||||||
val targetRequest = arguments.target
|
val targetRequest = arguments.target
|
||||||
val target = PlatformManager(
|
val target = PlatformManager(
|
||||||
KonanHomeProvider.determineKonanHome(),
|
KotlinNativePaths.homePath.absolutePath,
|
||||||
konanDataDir = arguments.konanDataDir).targetManager(targetRequest).target
|
konanDataDir = arguments.konanDataDir).targetManager(targetRequest).target
|
||||||
|
|
||||||
val cinteropArgsToCompiler = Interop().interop("native", args,
|
val cinteropArgsToCompiler = Interop().interop("native", args,
|
||||||
InternalInteropOptions(generatedDir.absolutePath,
|
InternalInteropOptions(generatedDir.absolutePath,
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@ package org.jetbrains.kotlin.cli.utilities
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.konan.exec.Command
|
import org.jetbrains.kotlin.konan.exec.Command
|
||||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||||
import org.jetbrains.kotlin.konan.util.KonanHomeProvider
|
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||||
|
|
||||||
fun runLlvmTool(args: Array<String>) {
|
fun runLlvmTool(args: Array<String>) {
|
||||||
val toolName = args[0]
|
val toolName = args[0]
|
||||||
@@ -40,7 +40,7 @@ fun runLlvmClangToolWithTarget(args: Array<String>) {
|
|||||||
runCommand(toolPath, *compilerArgs, *toolArguments.toTypedArray())
|
runCommand(toolPath, *compilerArgs, *toolArguments.toTypedArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun platformManager() = PlatformManager(KonanHomeProvider.determineKonanHome())
|
private fun platformManager() = PlatformManager(KotlinNativePaths.homePath.absolutePath)
|
||||||
|
|
||||||
private fun runCommand(vararg args: String) {
|
private fun runCommand(vararg args: String) {
|
||||||
Command(*args)
|
Command(*args)
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.klib.main as klibMain
|
|||||||
import org.jetbrains.kotlin.cli.bc.mainNoExitWithGradleRenderer as konancMainWithGradleRenderer
|
import org.jetbrains.kotlin.cli.bc.mainNoExitWithGradleRenderer as konancMainWithGradleRenderer
|
||||||
import org.jetbrains.kotlin.cli.bc.mainNoExitWithXcodeRenderer as konancMainWithXcodeRenderer
|
import org.jetbrains.kotlin.cli.bc.mainNoExitWithXcodeRenderer as konancMainWithXcodeRenderer
|
||||||
import org.jetbrains.kotlin.backend.konan.env.setEnv
|
import org.jetbrains.kotlin.backend.konan.env.setEnv
|
||||||
import org.jetbrains.kotlin.konan.util.usingNativeMemoryAllocator
|
import org.jetbrains.kotlin.utils.usingNativeMemoryAllocator
|
||||||
|
|
||||||
private fun mainImpl(args: Array<String>, runFromDaemon: Boolean, konancMain: (Array<String>) -> Unit) {
|
private fun mainImpl(args: Array<String>, runFromDaemon: Boolean, konancMain: (Array<String>) -> Unit) {
|
||||||
val utilityName = args[0]
|
val utilityName = args[0]
|
||||||
|
|||||||
@@ -869,7 +869,6 @@ if (buildProperties.isKotlinNativeEnabled) {
|
|||||||
include ':kotlin-native:Interop:Indexer'
|
include ':kotlin-native:Interop:Indexer'
|
||||||
include ':kotlin-native:Interop:JsRuntime'
|
include ':kotlin-native:Interop:JsRuntime'
|
||||||
include ':kotlin-native:Interop:Skia'
|
include ':kotlin-native:Interop:Skia'
|
||||||
include ':kotlin-native:utilities:basic-utils'
|
|
||||||
include ':kotlin-native:utilities:cli-runner'
|
include ':kotlin-native:utilities:cli-runner'
|
||||||
include ':kotlin-native:klib'
|
include ':kotlin-native:klib'
|
||||||
include ':kotlin-native:common'
|
include ':kotlin-native:common'
|
||||||
|
|||||||
Reference in New Issue
Block a user