dependencies: Move dependency downloader into shared project
This commit is contained in:
@@ -33,28 +33,9 @@ import org.jetbrains.kotlin.config.addKotlinSourceRoots
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
import org.jetbrains.kotlin.konan.target.TargetManager
|
||||
import org.jetbrains.kotlin.utils.KotlinPaths
|
||||
import java.io.File
|
||||
import kotlin.reflect.KFunction
|
||||
|
||||
// TODO: Don't use reflection?
|
||||
private fun maybeExecuteHelper(targetName: String) {
|
||||
try {
|
||||
val kClass = Class.forName("org.jetbrains.kotlin.konan.Helper0").kotlin
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val ctor = kClass.constructors.single() as KFunction<Runnable>
|
||||
val distribution = Distribution(TargetManager(targetName))
|
||||
val result = ctor.call(
|
||||
distribution.dependenciesDir,
|
||||
distribution.properties,
|
||||
distribution.dependencies
|
||||
)
|
||||
result.run()
|
||||
} catch (notFound: ClassNotFoundException) {
|
||||
// Just ignore, no helper.
|
||||
} catch (e: Throwable) {
|
||||
throw IllegalStateException("Cannot download dependencies.", e)
|
||||
}
|
||||
}
|
||||
|
||||
class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
|
||||
override fun doExecute(@NotNull arguments: K2NativeCompilerArguments, @NotNull configuration: CompilerConfiguration, @NotNull rootDisposable: Disposable, @Nullable paths: KotlinPaths?): ExitCode {
|
||||
@@ -85,7 +66,6 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
return this?.asList<String>() ?: listOf<String>()
|
||||
}
|
||||
|
||||
|
||||
// It is executed before doExecute().
|
||||
override fun setupPlatformSpecificArgumentsAndServices(
|
||||
configuration: CompilerConfiguration,
|
||||
@@ -152,8 +132,6 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||
put(ENABLE_ASSERTIONS, arguments.enableAssertions)
|
||||
}
|
||||
}
|
||||
|
||||
maybeExecuteHelper(arguments.target ?: "host")
|
||||
}
|
||||
|
||||
override fun createArguments(): K2NativeCompilerArguments {
|
||||
|
||||
+2
-2
@@ -18,11 +18,11 @@
|
||||
// Example startup helper for Kotlin N compiler. Compile to JAR and add it to
|
||||
// Kotlin N classpath - it will get loaded and executed automatically.
|
||||
//
|
||||
package org.jetbrains.kotlin.konan
|
||||
package org.jetbrains.kotlin.konan.util
|
||||
|
||||
import java.util.*
|
||||
|
||||
// Name it CompilerHelper0 so that it get loaded.
|
||||
// Name it Helper0 so that it get loaded.
|
||||
class Helper0Disabled(val dependenciesDir: String,
|
||||
val properties: Properties,
|
||||
val dependencies: List<String>) : Runnable {
|
||||
|
||||
+10
-2
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import org.jetbrains.kotlin.konan.target.TargetManager.*
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind.*
|
||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
|
||||
class KonanConfig(val project: Project, val configuration: CompilerConfiguration) {
|
||||
|
||||
@@ -47,9 +48,16 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
error("Target $target is not available on the ${TargetManager.host} host")
|
||||
}
|
||||
}
|
||||
|
||||
private fun Distribution.prepareDependencies() {
|
||||
DependencyProcessor(java.io.File(dependenciesDir), targetProperties).run()
|
||||
}
|
||||
|
||||
internal val distribution = Distribution(targetManager,
|
||||
configuration.get(KonanConfigKeys.PROPERTY_FILE),
|
||||
configuration.get(KonanConfigKeys.RUNTIME_FILE))
|
||||
configuration.get(KonanConfigKeys.PROPERTY_FILE),
|
||||
configuration.get(KonanConfigKeys.RUNTIME_FILE)).apply {
|
||||
prepareDependencies()
|
||||
}
|
||||
|
||||
private val produce = configuration.get(KonanConfigKeys.PRODUCE)!!
|
||||
private val suffix = produce.suffix(targetManager.target)
|
||||
|
||||
@@ -22,7 +22,8 @@ dependenciesUrl = http://download.jetbrains.com/kotlin/native
|
||||
airplaneMode = false
|
||||
|
||||
downloadingAttempts = 10
|
||||
downloadingAttemptPauseMs = 3000
|
||||
downloadingAttemptIntervalMs = 3000
|
||||
homeDependencyCache = .konan/cache
|
||||
|
||||
llvmDebugOptFlags = -O0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user