diff --git a/build.gradle b/build.gradle index 7d9201c69d7..dfe91186cce 100644 --- a/build.gradle +++ b/build.gradle @@ -287,6 +287,7 @@ targetList.each { target -> targetDefFiles(target).forEach{ defFile -> def taskName = defFileToTaskName(target, defFile.name) + def jvmArgs = project.findProperty("platfromLibsJvmArgs") ?: "-Xmx3G" def suffix = null if (new PlatformInfo().isWindows()) suffix = 'bat' @@ -298,6 +299,7 @@ targetList.each { target -> buildFile project('klib').file('platform.gradle') dir project(':klib').projectDir startParameter.projectProperties = [ + 'konan.jvmArgs' : jvmArgs, 'kotlin_version' : kotlin_version, 'name' : defFile.name, 'defFile' : defFile.file.absolutePath, diff --git a/samples/gradle.properties b/samples/gradle.properties index 3be37412632..8f9c497b2ad 100644 --- a/samples/gradle.properties +++ b/samples/gradle.properties @@ -1 +1,2 @@ -konan.home=../../dist \ No newline at end of file +konan.home=../../dist +konan.jvmArgs=-Xmx3G \ No newline at end of file diff --git a/samples/gradle.properties.for_bundle b/samples/gradle.properties.for_bundle index da99cc6e771..8116d13bea0 100644 --- a/samples/gradle.properties.for_bundle +++ b/samples/gradle.properties.for_bundle @@ -1 +1,2 @@ -konan.home=../.. \ No newline at end of file +konan.home=../.. +konan.jvmArgs=-Xmx3G \ No newline at end of file diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt index c60e7d3222f..2848ca7c0d9 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt @@ -34,6 +34,7 @@ import javax.inject.Inject * konan.home - directory where compiler is located (aka dist in konan project output). * konan.version - a konan compiler version for downloading. * konan.build.targets - list of targets to build (by default all the declared targets are built). + * konan.jvmArgs - additional args to be passed to a JVM executing the compiler/cinterop tool. */ internal fun Project.hasProperty(property: KonanPlugin.ProjectProperty) = hasProperty(property.propertyName) @@ -90,6 +91,9 @@ internal val Project.requestedTargets it.toString().trim().split("\\s+".toRegex()) }.orEmpty() +internal val Project.jvmArgs + get() = (findProperty(KonanPlugin.ProjectProperty.KONAN_JVM_ARGS) as String?)?.split("\\s+".toRegex()).orEmpty() + internal val Project.compileAllTask get() = getOrCreateTask(COMPILE_ALL_TASK_NAME) @@ -223,6 +227,8 @@ open class KonanExtension { var languageVersion: String? = null var apiVersion: String? = null + val jvmArgs = mutableListOf() + internal val konanTargets: List get() = targets.map { TargetManager(it).target }.distinct() } @@ -234,6 +240,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR KONAN_HOME ("konan.home"), KONAN_VERSION ("konan.version"), KONAN_BUILD_TARGETS ("konan.build.targets"), + KONAN_JVM_ARGS ("konan.jvmArgs"), DOWNLOAD_COMPILER ("download.compiler") } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt index 7f0c3da259b..4920c81cff6 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanToolRunner.kt @@ -50,9 +50,11 @@ internal abstract class KonanCliRunner(val toolName: String, val fullName: Strin override val jvmArgs = mutableListOf( "-ea", - "-Xmx3G", "-Dkonan.home=${project.konanHome}", - "-Djava.library.path=${project.konanHome}/konan/nativelib") + "-Djava.library.path=${project.konanHome}/konan/nativelib").apply { + addAll(project.konanExtension.jvmArgs) + addAll(project.jvmArgs) + } override val environment = mutableMapOf("LIBCLANG_DISABLE_CRASH_RECOVERY" to "1")