diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/CacheTesting.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/CacheTesting.kt index cbb3ba2313e..04f6a12bc22 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/CacheTesting.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/CacheTesting.kt @@ -3,7 +3,11 @@ package org.jetbrains.kotlin import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.tasks.Exec +import org.jetbrains.kotlin.konan.properties.resolvablePropertyList import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.konan.target.Distribution +import org.jetbrains.kotlin.konan.target.HostManager +import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.util.visibleName class CacheTesting(val buildCacheTask: Task, val compilerArgs: List, val isDynamic: Boolean) @@ -23,14 +27,27 @@ fun configureCacheTesting(project: Project): CacheTesting? { } val target = project.testTarget + val dist = project.kotlinNativeDist + + val cacheableTargets = Distribution(dist.absolutePath).properties + .resolvablePropertyList("cacheableTargets", HostManager.hostName) + .map { KonanTarget.predefinedTargets.getValue(it) } + .toSet() + + check(target in cacheableTargets) { + """ + No cache support for test target $target at host target ${HostManager.host}. + $STDLIB_BUILD_CACHE_TASK_NAME Gradle task can't be created. + """.trimIndent() + + } val cacheDir = project.file("${project.buildDir}/cache") val cacheFile = "$cacheDir/stdlib-cache" - val dist = project.kotlinNativeDist val stdlib = "$dist/klib/common/stdlib" val compilerArgs = listOf("-Xcached-library=$stdlib,$cacheFile") - val buildCacheTask = project.tasks.create("buildStdlibCache", Exec::class.java) { + val buildCacheTask = project.tasks.create(STDLIB_BUILD_CACHE_TASK_NAME, Exec::class.java) { doFirst { cacheDir.mkdirs() } @@ -49,4 +66,6 @@ fun configureCacheTesting(project: Project): CacheTesting? { } return CacheTesting(buildCacheTask, compilerArgs, isDynamic) -} \ No newline at end of file +} + +private const val STDLIB_BUILD_CACHE_TASK_NAME = "buildStdlibCache"