From 6dea5e5c7951916fc778879eb9630077673978a3 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Wed, 29 Mar 2017 10:47:06 +0700 Subject: [PATCH] tools: Don't use Distribution class in helpers --- .../kotlin/native/interop/gen/jvm/main.kt | 12 +++++------ .../org/jetbrains/kotlin/cli/bc/K2Native.kt | 10 ++++++--- .../jetbrains/kotlin/backend/konan/Helper0.kt | 21 +++++-------------- tools/helpers/build.gradle | 16 +++++++++++++- .../src/main/kotlin/CompilerHelper0.kt | 11 ---------- tools/helpers/src/main/kotlin/Helper0.kt | 13 ++++++++++++ .../helpers/src/main/kotlin/InteropHelper0.kt | 17 --------------- 7 files changed, 46 insertions(+), 54 deletions(-) delete mode 100644 tools/helpers/src/main/kotlin/CompilerHelper0.kt create mode 100644 tools/helpers/src/main/kotlin/Helper0.kt delete mode 100644 tools/helpers/src/main/kotlin/InteropHelper0.kt diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt index 4889b7a6d14..19ac77d7ac5 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt @@ -117,11 +117,11 @@ private fun runCmd(command: Array, workDir: File, verbose: Boolean = fal .runExpectingSuccess() } -private fun maybeExecuteHelper(dependenciesRoot: String, propertiesFile: String, dependencies: List) { +private fun maybeExecuteHelper(dependenciesRoot: String, properties: Properties, dependencies: List) { try { - val kClass = Class.forName("org.jetbrains.kotlin.konan.InteropHelper0").kotlin + val kClass = Class.forName("org.jetbrains.kotlin.konan.Helper0").kotlin val ctor = kClass.constructors.single() as KFunction - val result = ctor.call(dependenciesRoot, propertiesFile, dependencies) + val result = ctor.call(dependenciesRoot, properties, dependencies) result.run() } catch (notFound: ClassNotFoundException) { // Just ignore, no helper. @@ -130,7 +130,7 @@ private fun maybeExecuteHelper(dependenciesRoot: String, propertiesFile: String, } } -private fun Properties.defaultCompilerOpts(target: String, dependencies: String, konanFileName: String): List { +private fun Properties.defaultCompilerOpts(target: String, dependencies: String): List { val hostSysRootDir = this.getOsSpecific("sysRoot", target)!! val hostSysRoot = "$dependencies/$hostSysRootDir" @@ -142,7 +142,7 @@ private fun Properties.defaultCompilerOpts(target: String, dependencies: String, val llvmVersion = this.getProperty("llvmVersion")!! val dependencyList = getOsSpecific("dependencies", target)?.split(' ') ?: listOf() - maybeExecuteHelper(dependencies, konanFileName, dependencyList) + maybeExecuteHelper(dependencies, this, dependencyList) // StubGenerator passes the arguments to libclang which // works not exactly the same way as the clang binary and @@ -259,7 +259,7 @@ private fun processLib(konanHome: String, val generateShims = args["-shims"].isTrue() val verbose = args["-verbose"].isTrue() - val defaultOpts = konanProperties.defaultCompilerOpts(target, dependencies, konanFileName) + val defaultOpts = konanProperties.defaultCompilerOpts(target, dependencies) val headerFiles = config.getSpaceSeparated("headers") + additionalHeaders val compilerOpts = config.getSpaceSeparated("compilerOpts") + diff --git a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 184ac63e7a5..f6a07b996f7 100644 --- a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -13,13 +13,17 @@ import org.jetbrains.kotlin.config.addKotlinSourceRoots import java.util.* import kotlin.reflect.KFunction - +// TODO: Don't use reflection? private fun maybeExecuteHelper(configuration: CompilerConfiguration) { try { - val kClass = Class.forName("org.jetbrains.kotlin.konan.CompilerHelper0").kotlin + val kClass = Class.forName("org.jetbrains.kotlin.konan.Helper0").kotlin val ctor = kClass.constructors.single() as KFunction val distribution = Distribution(configuration) - val result = ctor.call(distribution) + val result = ctor.call( + distribution.dependenciesDir, + distribution.properties.properties, + distribution.dependencies + ) result.run() } catch (notFound: ClassNotFoundException) { // Just ignore, no helper. diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Helper0.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Helper0.kt index 122fd291ce9..5927e040469 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Helper0.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Helper0.kt @@ -4,24 +4,13 @@ // package org.jetbrains.kotlin.konan -import org.jetbrains.kotlin.backend.konan.Distribution -import org.jetbrains.kotlin.backend.konan.TargetManager +import java.util.* // Name it CompilerHelper0 so that it get loaded. -class CompilerHelper0Disabled(val distribution: Distribution) : Runnable { +class Helper0Disabled(val dependenciesDir: String, + val properties: Properties, + val dependencies: List) : Runnable { override fun run() { - println("Running helper with ${distribution.konanHome} ${distribution.target} ${TargetManager.host}") - } -} - -// -// Example startup helper for Kotlin N stub generator. Compile to JAR and add it to -// Kotlin N classpath - it will get loaded and executed automatically. -// - -// Name it InteropHelper0 so that it get loaded. -class InteropHelper0Disabled(val dependenciesRoot: String, val dependencies: List) : Runnable { - override fun run() { - println("Running helper with $dependenciesRoot $dependencies") + println("Running helper for $dependenciesDir, $properties, $dependencies") } } \ No newline at end of file diff --git a/tools/helpers/build.gradle b/tools/helpers/build.gradle index 5f2547a25cd..7b3f1db81e9 100644 --- a/tools/helpers/build.gradle +++ b/tools/helpers/build.gradle @@ -15,12 +15,24 @@ buildscript { } } +// Copied from backend.native project. ===== repositories { maven { url 'http://oss.sonatype.org/content/repositories/snapshots' } } +configurations.all { + // kotlin-compiler module includes Kotlin runtime bundled; + // make Gradle aware of this to avoid multiple Kotlin runtimes in classpath: + resolutionStrategy.dependencySubstitution { + substitute module('org.jetbrains.kotlin:kotlin-runtime') with module(kotlinCompilerModule) + substitute module('org.jetbrains.kotlin:kotlin-stdlib') with module(kotlinCompilerModule) + substitute module('org.jetbrains.kotlin:kotlin-reflect') with module(kotlinCompilerModule) + } +} +// ========================================= + apply plugin: 'kotlin' apply plugin: NativeInteropPlugin @@ -29,8 +41,10 @@ configurations { } dependencies { - compile project(path: ':backend.native', configuration: 'cli_bc') + compile "org.jetbrains.kotlin:kotlin-runtime:$kotlin_version" + // We need this configuration to test the helpers. cli_bc jar.outputs.files + cli_bc project(path: ':backend.native', configuration: 'cli_bc') } sourceSets { diff --git a/tools/helpers/src/main/kotlin/CompilerHelper0.kt b/tools/helpers/src/main/kotlin/CompilerHelper0.kt deleted file mode 100644 index 1e9652299f8..00000000000 --- a/tools/helpers/src/main/kotlin/CompilerHelper0.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.jetbrains.kotlin.konan - -import org.jetbrains.kotlin.backend.konan.Distribution -import java.io.File - -class CompilerHelper0(val dist: Distribution): Runnable { - - override fun run() { - DependencyDownloader(File(dist.dependenciesDir), dist.properties.properties, dist.dependencies).run() - } -} \ No newline at end of file diff --git a/tools/helpers/src/main/kotlin/Helper0.kt b/tools/helpers/src/main/kotlin/Helper0.kt new file mode 100644 index 00000000000..589dfc11993 --- /dev/null +++ b/tools/helpers/src/main/kotlin/Helper0.kt @@ -0,0 +1,13 @@ +package org.jetbrains.kotlin.konan + +import java.io.File +import java.util.* + +class Helper0(val dependenciesDir: String, + val properties: Properties, + val dependencies: List): Runnable { + + override fun run() { + DependencyDownloader(File(dependenciesDir), properties, dependencies).run() + } +} \ No newline at end of file diff --git a/tools/helpers/src/main/kotlin/InteropHelper0.kt b/tools/helpers/src/main/kotlin/InteropHelper0.kt deleted file mode 100644 index 6e235da6fd6..00000000000 --- a/tools/helpers/src/main/kotlin/InteropHelper0.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.jetbrains.kotlin.konan - -import java.io.File -import java.util.* - -class InteropHelper0( - val dependenciesRoot: String, - val propertiesFile: String, - val dependencies: List): Runnable { - - override fun run() = - DependencyDownloader( - File(dependenciesRoot), - Properties().apply { load(File(propertiesFile).inputStream()) }, - dependencies - ).run() -}