diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt
index a480a5bd60d..cd9a79cecf9 100644
--- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt
+++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.konan.blackboxtest.support.settings.CacheKind.WithSt
import org.jetbrains.kotlin.konan.blackboxtest.support.util.ArgsBuilder
import org.jetbrains.kotlin.konan.blackboxtest.support.util.buildArgs
import org.jetbrains.kotlin.konan.blackboxtest.support.util.flatMapToSet
+import org.jetbrains.kotlin.konan.properties.resolvablePropertyList
import org.jetbrains.kotlin.test.services.JUnit5Assertions.fail
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.io.File
@@ -24,7 +25,8 @@ internal abstract class TestCompilation {
}
internal abstract class BasicCompilation(
- private val targets: KotlinNativeTargets,
+ protected val targets: KotlinNativeTargets,
+ protected val home: KotlinNativeHome,
private val classLoader: KotlinNativeClassLoader,
private val optimizationMode: OptimizationMode,
protected val dependencies: Iterable>,
@@ -138,7 +140,7 @@ internal abstract class BasicCompilation(
internal abstract class SourceBasedCompilation(
targets: KotlinNativeTargets,
- private val home: KotlinNativeHome,
+ home: KotlinNativeHome,
classLoader: KotlinNativeClassLoader,
optimizationMode: OptimizationMode,
private val memoryModel: MemoryModel,
@@ -150,6 +152,7 @@ internal abstract class SourceBasedCompilation(
expectedArtifact: A
) : BasicCompilation(
targets = targets,
+ home = home,
classLoader = classLoader,
optimizationMode = optimizationMode,
dependencies = dependencies,
@@ -256,6 +259,7 @@ internal class StaticCacheCompilation(
expectedArtifact: KLIBStaticCache
) : BasicCompilation(
targets = settings.get(),
+ home = settings.get(),
classLoader = settings.get(),
optimizationMode = settings.get(),
dependencies = dependencies,
@@ -266,11 +270,12 @@ internal class StaticCacheCompilation(
private val cacheDir = expectedArtifact.file
- private val cacheKind: WithStaticCache = run {
+ private val rootCacheDir: File = run {
val cacheKind = settings.get()
- cacheKind.safeAs() ?: fail {
+ val staticCacheKind = cacheKind as? WithStaticCache ?: fail {
"${WithStaticCache::class.java} is expected as the current cache kind in ${StaticCacheCompilation::class.java}, found: $cacheKind"
}
+ staticCacheKind.rootCacheDir ?: fail { "No root cache directory found" }
}
override fun doBeforeCompile() {
@@ -279,12 +284,14 @@ internal class StaticCacheCompilation(
override fun applySpecificArgs(argsBuilder: ArgsBuilder): Unit = with(argsBuilder) {
add("-produce", "static_cache")
- // TODO: additional cache flags: konanProperties.resolvablePropertyList("additionalCacheFlags", target.visibleName)
+
+ // The following line adds "-Xembed-bitcode-marker" for certain iOS device targets:
+ add(home.properties.resolvablePropertyList("additionalCacheFlags", targets.testTarget.visibleName))
add(
"-Xadd-cache=${dependencies.libraryToCache.path}",
- "-Xcache-directory=${cacheDir.path}"
+ "-Xcache-directory=${cacheDir.path}",
+ "-Xcache-directory=$rootCacheDir"
)
- cacheKind.rootCacheDir?.let { rootCacheDir -> add("-Xcache-directory=$rootCacheDir") }
}
override fun applyDependencies(argsBuilder: ArgsBuilder): Unit = with(argsBuilder) {
diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt
index 4b1a615891f..e89a0dd3db7 100644
--- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt
+++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/settings/TestProcessSettings.kt
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.konan.blackboxtest.support.settings
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
+import java.util.*
import kotlin.time.Duration
/**
@@ -20,6 +21,10 @@ internal class KotlinNativeTargets(val testTarget: KonanTarget, val hostTarget:
internal class KotlinNativeHome(val dir: File) {
val librariesDir: File = dir.resolve("klib")
val stdlibFile: File = librariesDir.resolve("common/stdlib")
+
+ val properties: Properties by lazy {
+ dir.resolve("konan/konan.properties").inputStream().use { Properties().apply { load(it) } }
+ }
}
/**