diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index f01bca8b8a5..ee066bdf716 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -728,27 +728,27 @@ class HierarchicalMppIT : KGPBaseTest() { assertTasksExecuted(":lib:publish") } + val gccIncompatibleTasks = listOf( + ":generateProjectStructureMetadata", + ":transformCommonMainDependenciesMetadata", + ":cinteropFooLinuxX64", + ":compileKotlinLinuxX64", + ":linkDebugSharedLinuxX64", + ) + build("clean", "assemble", buildOptions = options) { - assertTasksExecuted( - ":generateProjectStructureMetadata", - ":transformCommonMainDependenciesMetadata" - ) - assertOutputContains( - """Task `:generateProjectStructureMetadata` of type `.+`: invocation of 'Task\.project' at execution time is unsupported""" - .toRegex() - ) - assertOutputContains( - """Task `:transformCommonMainDependenciesMetadata` of type `.+`: invocation of 'Task.project' at execution time is unsupported""" - .toRegex() - ) + assertTasksExecuted(gccIncompatibleTasks) + gccIncompatibleTasks.forEach { task -> + assertOutputContains( + """Task `:$task` of type `.+`: .+(at execution time is unsupported)|(not supported with the configuration cache)""" + .toRegex() + ) + } } build("clean", "assemble", buildOptions = options) { assertOutputContains("Configuration cache entry discarded") - assertTasksExecuted( - ":generateProjectStructureMetadata", - ":transformCommonMainDependenciesMetadata" - ) + assertTasksExecuted(gccIncompatibleTasks) } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts index 270be58937a..1082d47801f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts @@ -12,7 +12,16 @@ allprojects { kotlin { jvm() - linuxX64() + linuxX64 { + binaries { sharedLib() } + compilations.getByName("main").apply { + cinterops { + val foo by creating { + defFile(project.file("foo.def")) + } + } + } + } sourceSets { val commonMain by getting { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def new file mode 100644 index 00000000000..46aa5dfc177 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def @@ -0,0 +1,7 @@ +package = test.cinterop + +--- + +static int testCinterop(char* str) { + return 42; +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index a901cfddee9..81387910295 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -158,6 +158,10 @@ abstract class AbstractKotlinNativeCompile< compilation.konanTarget } + init { + notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") + } + @get:Classpath override val libraries: ConfigurableFileCollection by project.provider { // Avoid resolving these dependencies during task graph construction when we can't build the target: @@ -313,10 +317,6 @@ constructor( ) : AbstractKotlinNativeCompile, StubK2NativeCompilerArguments>(objectFactory), KotlinCompile { - init { - notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") - } - @get:Input override val outputKind = LIBRARY @@ -1093,6 +1093,10 @@ open class CInteropProcess @Inject constructor(@get:Internal val settings: Defau val outputFile: File get() = outputFileProvider.get() + init { + notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") + } + // Inputs and outputs. @OutputFile