[K/N][gradle][interop] Workaround for loading readonly native libs
This commit is contained in:
+8
-7
@@ -37,6 +37,8 @@ internal interface KonanToolRunner {
|
||||
|
||||
internal fun KonanToolRunner.run(vararg args: String) = run(args.toList())
|
||||
|
||||
private const val runFromDaemonPropertyName = "kotlin.native.tool.runFromDaemon"
|
||||
|
||||
internal abstract class KonanCliRunner(
|
||||
protected val toolName: String,
|
||||
project: Project,
|
||||
@@ -48,6 +50,11 @@ internal abstract class KonanCliRunner(
|
||||
final override val mainClass get() = "org.jetbrains.kotlin.cli.utilities.MainKt"
|
||||
final override val daemonEntryPoint get() = "daemonMain"
|
||||
|
||||
final override val mustRunViaExec get() = false.also { System.setProperty(runFromDaemonPropertyName, "true") }
|
||||
|
||||
final override val execSystemPropertiesBlacklist: Set<String>
|
||||
get() = super.execSystemPropertiesBlacklist + runFromDaemonPropertyName
|
||||
|
||||
// We need to unset some environment variables which are set by XCode and may potentially affect the tool executed.
|
||||
final override val execEnvironmentBlacklist: Set<String> by lazy {
|
||||
HashSet<String>().also { collector ->
|
||||
@@ -92,8 +99,6 @@ internal class KonanCliCompilerRunner(
|
||||
val useArgFile: Boolean = true,
|
||||
konanHome: String = project.konanHome
|
||||
) : KonanCliRunner("konanc", project, additionalJvmArgs, konanHome) {
|
||||
override val mustRunViaExec get() = false
|
||||
|
||||
override fun transformArgs(args: List<String>): List<String> {
|
||||
if (!useArgFile) return super.transformArgs(args)
|
||||
|
||||
@@ -130,8 +135,6 @@ internal class KonanCliInteropRunner(
|
||||
additionalJvmArgs: List<String> = emptyList(),
|
||||
konanHome: String = project.konanHome
|
||||
) : KonanCliRunner("cinterop", project, additionalJvmArgs, konanHome) {
|
||||
override val mustRunViaExec get() = false
|
||||
|
||||
override fun transformArgs(args: List<String>): List<String> {
|
||||
return super.transformArgs(args) + listOf("-Xproject-dir", project.projectDir.toString())
|
||||
}
|
||||
@@ -171,6 +174,4 @@ internal class KonanKlibRunner(
|
||||
project: Project,
|
||||
additionalJvmArgs: List<String> = emptyList(),
|
||||
konanHome: String = project.konanHome
|
||||
) : KonanCliRunner("klib", project, additionalJvmArgs, konanHome) {
|
||||
override val mustRunViaExec get() = false
|
||||
}
|
||||
) : KonanCliRunner("klib", project, additionalJvmArgs, konanHome)
|
||||
|
||||
Reference in New Issue
Block a user