tools: Don't use Distribution class in helpers
This commit is contained in:
+6
-6
@@ -117,11 +117,11 @@ private fun runCmd(command: Array<String>, workDir: File, verbose: Boolean = fal
|
|||||||
.runExpectingSuccess()
|
.runExpectingSuccess()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun maybeExecuteHelper(dependenciesRoot: String, propertiesFile: String, dependencies: List<String>) {
|
private fun maybeExecuteHelper(dependenciesRoot: String, properties: Properties, dependencies: List<String>) {
|
||||||
try {
|
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<Runnable>
|
val ctor = kClass.constructors.single() as KFunction<Runnable>
|
||||||
val result = ctor.call(dependenciesRoot, propertiesFile, dependencies)
|
val result = ctor.call(dependenciesRoot, properties, dependencies)
|
||||||
result.run()
|
result.run()
|
||||||
} catch (notFound: ClassNotFoundException) {
|
} catch (notFound: ClassNotFoundException) {
|
||||||
// Just ignore, no helper.
|
// 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<String> {
|
private fun Properties.defaultCompilerOpts(target: String, dependencies: String): List<String> {
|
||||||
|
|
||||||
val hostSysRootDir = this.getOsSpecific("sysRoot", target)!!
|
val hostSysRootDir = this.getOsSpecific("sysRoot", target)!!
|
||||||
val hostSysRoot = "$dependencies/$hostSysRootDir"
|
val hostSysRoot = "$dependencies/$hostSysRootDir"
|
||||||
@@ -142,7 +142,7 @@ private fun Properties.defaultCompilerOpts(target: String, dependencies: String,
|
|||||||
val llvmVersion = this.getProperty("llvmVersion")!!
|
val llvmVersion = this.getProperty("llvmVersion")!!
|
||||||
|
|
||||||
val dependencyList = getOsSpecific("dependencies", target)?.split(' ') ?: listOf<String>()
|
val dependencyList = getOsSpecific("dependencies", target)?.split(' ') ?: listOf<String>()
|
||||||
maybeExecuteHelper(dependencies, konanFileName, dependencyList)
|
maybeExecuteHelper(dependencies, this, dependencyList)
|
||||||
|
|
||||||
// StubGenerator passes the arguments to libclang which
|
// StubGenerator passes the arguments to libclang which
|
||||||
// works not exactly the same way as the clang binary and
|
// 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 generateShims = args["-shims"].isTrue()
|
||||||
val verbose = args["-verbose"].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 headerFiles = config.getSpaceSeparated("headers") + additionalHeaders
|
||||||
val compilerOpts =
|
val compilerOpts =
|
||||||
config.getSpaceSeparated("compilerOpts") +
|
config.getSpaceSeparated("compilerOpts") +
|
||||||
|
|||||||
@@ -13,13 +13,17 @@ import org.jetbrains.kotlin.config.addKotlinSourceRoots
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.KFunction
|
import kotlin.reflect.KFunction
|
||||||
|
|
||||||
|
// TODO: Don't use reflection?
|
||||||
private fun maybeExecuteHelper(configuration: CompilerConfiguration) {
|
private fun maybeExecuteHelper(configuration: CompilerConfiguration) {
|
||||||
try {
|
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<Runnable>
|
val ctor = kClass.constructors.single() as KFunction<Runnable>
|
||||||
val distribution = Distribution(configuration)
|
val distribution = Distribution(configuration)
|
||||||
val result = ctor.call(distribution)
|
val result = ctor.call(
|
||||||
|
distribution.dependenciesDir,
|
||||||
|
distribution.properties.properties,
|
||||||
|
distribution.dependencies
|
||||||
|
)
|
||||||
result.run()
|
result.run()
|
||||||
} catch (notFound: ClassNotFoundException) {
|
} catch (notFound: ClassNotFoundException) {
|
||||||
// Just ignore, no helper.
|
// Just ignore, no helper.
|
||||||
|
|||||||
+5
-16
@@ -4,24 +4,13 @@
|
|||||||
//
|
//
|
||||||
package org.jetbrains.kotlin.konan
|
package org.jetbrains.kotlin.konan
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.konan.Distribution
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.backend.konan.TargetManager
|
|
||||||
|
|
||||||
// Name it CompilerHelper0 so that it get loaded.
|
// 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<String>) : Runnable {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
println("Running helper with ${distribution.konanHome} ${distribution.target} ${TargetManager.host}")
|
println("Running helper for $dependenciesDir, $properties, $dependencies")
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 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<String>) : Runnable {
|
|
||||||
override fun run() {
|
|
||||||
println("Running helper with $dependenciesRoot $dependencies")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,12 +15,24 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copied from backend.native project. =====
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
url 'http://oss.sonatype.org/content/repositories/snapshots'
|
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: 'kotlin'
|
||||||
apply plugin: NativeInteropPlugin
|
apply plugin: NativeInteropPlugin
|
||||||
|
|
||||||
@@ -29,8 +41,10 @@ configurations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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 jar.outputs.files
|
||||||
|
cli_bc project(path: ':backend.native', configuration: 'cli_bc')
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String>): Runnable {
|
||||||
|
|
||||||
|
override fun run() {
|
||||||
|
DependencyDownloader(File(dependenciesDir), properties, dependencies).run()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<String>): Runnable {
|
|
||||||
|
|
||||||
override fun run() =
|
|
||||||
DependencyDownloader(
|
|
||||||
File(dependenciesRoot),
|
|
||||||
Properties().apply { load(File(propertiesFile).inputStream()) },
|
|
||||||
dependencies
|
|
||||||
).run()
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user