From 7ade68452ec36ce1f756f0086149f74257dcab0d Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Thu, 19 Oct 2017 20:23:06 +0300 Subject: [PATCH] Brought back our ability to have non-platform specific default libraries. Separated dist/klib libraries into common and platform parts to exclude name clash. --- .../jetbrains/kotlin/backend/konan/Distribution.kt | 2 +- .../backend/konan/library/SearchPathResolver.kt | 12 +++++++----- build.gradle | 12 +++++++----- klib/platform.gradle | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Distribution.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Distribution.kt index 029a3c6c89a..708abac48fd 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Distribution.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Distribution.kt @@ -44,7 +44,7 @@ class Distribution(val targetManager: TargetManager, val properties = File(propertyFileName).loadProperties() val klib = "$konanHome/klib" - val stdlib = "$klib/stdlib" + val stdlib = "$klib/common/stdlib" val runtime = runtimeFileOverride ?: "$stdlib/targets/${targetName}/native/runtime.bc" val dependenciesDir = "$konanHome/dependencies" diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt index a7a6242a81f..a7f75ce42c0 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt @@ -130,10 +130,10 @@ class KonanLibrarySearchPathResolver( get() = localKonanDir?.File()?.klib val distHead: File? - get() = distributionKlib?.File() + get() = distributionKlib?.File()?.child("common") val distPlatformHead: File? - get() = targetManager?.let { distHead?.child(targetManager.targetName) } + get() = targetManager?.let { distributionKlib?.File()?.child("platform")?.child(targetManager.targetName) } val currentDirHead: File? get() = if (!skipCurrentDir) File.userDir else null @@ -176,11 +176,13 @@ class KonanLibrarySearchPathResolver( get() = File(this, "klib") // The libraries from the default root are linked automatically. - val defaultRoot: File? - get() = if (distPlatformHead?.exists ?: false) distPlatformHead else null + val defaultRoots: List + get() = listOf(distHead, distPlatformHead) + .filterNotNull() + .filter{ it.exists } override fun defaultLinks(nostdlib: Boolean, noDefaultLibs: Boolean): List { - val defaultLibs = defaultRoot?.listFiles.orEmpty() + val defaultLibs = defaultRoots.flatMap{ it.listFiles } .filterNot { it.name.removeSuffixIfPresent(".klib") == "stdlib" } .map { File(it.absolutePath) } val result = mutableListOf() diff --git a/build.gradle b/build.gradle index 782a8b86d9d..b481dc478db 100644 --- a/build.gradle +++ b/build.gradle @@ -231,13 +231,15 @@ task distRuntime(type: Copy) { dependsOn('commonDistRuntime') } +def stdlib = 'klib/common/stdlib' + task commonDistRuntime(type: Copy) { destinationDir file('dist') // Target independant common part. from(project(':runtime').file("build/${hostName}Stdlib")) { include('**') - into('klib/stdlib') + into(stdlib) } } @@ -260,19 +262,19 @@ targetList.each { target -> from(project(':runtime').file("build/$target")) { include("*.bc") - into("klib/stdlib/targets/$target/native") + into("$stdlib/targets/$target/native") } from(project(':runtime').file("build/${target}Stdlib")) { include('**') - into('klib/stdlib') + into(stdlib) } from(project(':runtime').file("build/${target}Start.bc")) { rename("${target}Start.bc", 'start.bc') - into("klib/stdlib/targets/$target/native") + into("$stdlib/targets/$target/native") } if (target == 'wasm32') { from(project(':runtime').file('src/launcher/js')) { - into('klib/stdlib/targets/wasm32/included') + into('$stdlib/targets/wasm32/included') } } } diff --git a/klib/platform.gradle b/klib/platform.gradle index 4e7b75a4ee0..b8b3e7c180c 100644 --- a/klib/platform.gradle +++ b/klib/platform.gradle @@ -20,7 +20,7 @@ konanArtifacts { defFile gradle.startParameter.projectProperties.defFile noDefaultLibs true libraries { - files libs.collect { "$konanHome/klib/$targetName/$it" } + files libs.collect { "$konanHome/klib/platform/$targetName/$it" } } } } @@ -29,7 +29,7 @@ def suffix = gradle.startParameter.projectProperties['suffix'] def klibProgram = suffix?"$konanHome/bin/klib.$suffix" : "$konanHome/bin/klib" task klibInstall(type:Exec) { - String repo = "$konanHome/klib/$targetName" + String repo = "$konanHome/klib/platform/$targetName" doFirst { new File(repo).mkdirs() }