From e7286998aac75177b0bc53ced7758a1cf1cd8a27 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 11 Oct 2017 15:01:07 +0300 Subject: [PATCH] If we get a defaultly linked library again from a library dependency it should not be purged anymore for the final binary. --- .../backend/konan/library/SearchPathResolver.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 0f781b4f1ad..1efd032e192 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 @@ -70,13 +70,26 @@ fun SearchPathResolver.resolveLibrariesRecursive(immediateLibraries: List = result do { + val defaultOverrides = mutableSetOf() newDependencies = newDependencies.values.asSequence() .flatMap { it.dependencies.asSequence() } .map { resolve(it).absoluteFile } + .onEach { + if (result[it]?.isDefaultLink == true) { + defaultOverrides.add(it) + } + } .filter { it !in result } .map { it to LibraryReaderImpl(it, abiVersion, target) }.toMap() result.putAll(newDependencies) + + // If there is a default link in immediateLibraries, + // and we get the same library as a dependency, + // the resultant surviving library should not be a defaultLink anymore. + defaultOverrides.forEach { + result[it] = LibraryReaderImpl(it, abiVersion, target) + } } while (newDependencies.isNotEmpty()) return result.values.toList() }