diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/common/stdlib/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/common/stdlib/manifest index 184332fa5de..d7ca70f255d 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/common/stdlib/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/common/stdlib/manifest @@ -1,2 +1,2 @@ unique_name=stdlib -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/linux/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/linux/manifest index fda3767ce5a..fe547e588da 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/linux/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/linux/manifest @@ -1,2 +1,2 @@ unique_name=linux -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/posix/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/posix/manifest index 59744461938..61ff8eaad84 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/posix/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/posix/manifest @@ -1,2 +1,2 @@ unique_name=posix -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/zlib/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/zlib/manifest index f0a3ba72d3d..41d1a93f62f 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/zlib/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/linux_x64/zlib/manifest @@ -1,2 +1,2 @@ unique_name=zlib -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/Foundation/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/Foundation/manifest index 37261918de2..1b3f1d76d06 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/Foundation/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/Foundation/manifest @@ -1,2 +1,2 @@ unique_name=Foundation -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/UIKit/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/UIKit/manifest index 31ac2f9694f..90cff4e8e59 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/UIKit/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/UIKit/manifest @@ -1,2 +1,2 @@ unique_name=UIKit -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/objc/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/objc/manifest index 392508d08d1..73151e9f5f4 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/objc/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/macos_x64/objc/manifest @@ -1,2 +1,2 @@ unique_name=objc -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/iconv/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/iconv/manifest index 5999f8e5b72..bf7792a92bb 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/iconv/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/iconv/manifest @@ -1,2 +1,2 @@ unique_name=iconv -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/opengl32/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/opengl32/manifest index 4e1819a1660..d9c0f64899a 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/opengl32/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/opengl32/manifest @@ -1,2 +1,2 @@ unique_name=opengl32 -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/windows/manifest b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/windows/manifest index 37d91701e08..db111d5fe0a 100644 --- a/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/windows/manifest +++ b/idea/testData/gradle/nativeLibraries/kotlin-native-data-dir/kotlin-native-PLATFORM-VERSION/klib/platform/mingw_x64/windows/manifest @@ -1,2 +1,2 @@ unique_name=windows -compiler_version=1.0 +compiler_version=1.0.0 diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt index 09bcc6e004d..499ebc009e6 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.name.FqName const val KLIB_PROPERTY_ABI_VERSION = "abi_version" const val KLIB_PROPERTY_UNIQUE_NAME = "unique_name" +const val KLIB_PROPERTY_COMPILER_VERSION = "compiler_version" const val KLIB_PROPERTY_LINKED_OPTS = "linkerOpts" const val KLIB_PROPERTY_DEPENDS = "depends" const val KLIB_PROPERTY_INTEROP = "interop" diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistribution.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistribution.kt new file mode 100644 index 00000000000..bf8a8742044 --- /dev/null +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistribution.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.library.lite + +data class LiteKonanDistribution( + val distributionHome: String, + val kotlinNativeVersion: KotlinVersion, + val kotlinNativeVersionString: String +) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistributionInfoProvider.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistributionInfoProvider.kt new file mode 100644 index 00000000000..830ca246844 --- /dev/null +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanDistributionInfoProvider.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.library.lite + +import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME +import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath +import java.nio.file.Paths + +class LiteKonanDistributionInfoProvider(private val konanHomeDir: String) { + + fun getDistributionInfo(): LiteKonanDistribution? { + val stdlibInfo = LiteKonanLibraryInfoProvider(konanHomeDir).getDistributionLibraryInfo( + Paths.get(konanHomeDir).resolve(konanCommonLibraryPath(KONAN_STDLIB_NAME)) + ) ?: return null + + val versionString = stdlibInfo.compilerVersion + val version = versionString.substringBefore('-') + .split('.') + .takeIf { it.size == 3 } + ?.mapNotNull { it.toIntOrNull() } + ?.takeIf { it.size == 3 } + ?.let { + KotlinVersion(it[0], it[1], it[2]) + } ?: return null + + return LiteKonanDistribution(konanHomeDir, version, versionString) + } +} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibrary.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibrary.kt index 74c0a028fec..f41f6cbe6f7 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibrary.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibrary.kt @@ -10,5 +10,6 @@ import java.nio.file.Path data class LiteKonanLibrary( val path: Path, val name: String, - val platform: String? + val platform: String?, + internal val compilerVersion: String ) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryInfoProvider.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryInfoProvider.kt index 627a7e1b9a1..62d5fc152e5 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryInfoProvider.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryInfoProvider.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.konan.library.lite import org.jetbrains.kotlin.konan.library.KLIB_DIR_NAME import org.jetbrains.kotlin.konan.library.KLIB_MANIFEST_FILE_NAME +import org.jetbrains.kotlin.konan.library.KLIB_PROPERTY_COMPILER_VERSION import org.jetbrains.kotlin.konan.library.KLIB_PROPERTY_UNIQUE_NAME import java.io.IOException import java.nio.file.Files @@ -68,8 +69,9 @@ class LiteKonanLibraryInfoProvider(customKonanHomeDir: String? = null) { } val name = manifestProperties[KLIB_PROPERTY_UNIQUE_NAME]?.toString() ?: return null + val compilerVersion = manifestProperties[KLIB_PROPERTY_COMPILER_VERSION]?.toString() ?: return null - return LiteKonanLibrary(libraryPath, name, platform) + return LiteKonanLibrary(libraryPath, name, platform, compilerVersion) } private fun isUnderKonanRoot(libraryPath: Path): Boolean {