diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 4bf9acb2503..cd31971a175 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -362,10 +362,7 @@ Task linkTest(String name, Closure configureClosure) { extraOpts task.flags extraOpts project.globalTestArgs } - String libTaskName = "compileKonan${lib.capitalize()}${targetName.capitalize()}" - UtilsKt.dependsOnDist(project, libTaskName) - UtilsKt.sameDependenciesAs(libTaskName, task as KonanLinkTest) - task.dependsOn(libTaskName) + UtilsKt.dependOnKonanBuildingTask(project, lib, target, task) // Build an executable with library program(name, targets: [targetName]) { @@ -376,8 +373,6 @@ Task linkTest(String name, Closure configureClosure) { srcFiles task.getSources() extraOpts task.flags extraOpts project.globalTestArgs - // depend on library build task - dependsOn libTaskName } } } @@ -3394,10 +3389,7 @@ Task interopTest(String name, Closure configureClosure) { if (task.enabled) { konanArtifacts { def lib = task.interop - def libTask = "compileKonan${lib.capitalize()}${target.name.capitalize()}" - UtilsKt.dependsOnDist(project, libTask) - UtilsKt.sameDependenciesAs(libTask, task as KonanInteropTest) - task.dependsOn(libTask) + UtilsKt.dependOnKonanBuildingTask(project, lib, target, task) program(name, targets: [target.name]) { libraries { @@ -3901,12 +3893,7 @@ if (isAppleTarget(project)) { konanArtifacts { def lib = "objcGh3343" - def libTask = "compileKonan${lib.capitalize()}${target.name.capitalize()}" - UtilsKt.dependsOnDist(project, libTask) - UtilsKt.sameDependenciesAs(libTask, mainTask) - mainTask.dependsOn(libTask) - - def lnOpts = (project.tasks.getByName(libTask)).linkerOpts + UtilsKt.dependOnKonanBuildingTask(project, lib, target, mainTask) framework(frameworkName, targets: [ target ]) { libraries { @@ -3919,7 +3906,7 @@ if (isAppleTarget(project)) { dependsOn ":${target}CrossDistRuntime", ':commonDistRuntime', ':distCompiler' } - linkerOpts lnOpts + linkerOpts "-L$buildDir" extraOpts "-Xembed-bitcode-marker" extraOpts project.globalTestArgs } diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt index 489711d2030..30d46891f01 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt @@ -125,6 +125,17 @@ fun Task.sameDependenciesAs(task: Task) { this.dependsOn(dependencies) } +/** + * Set dependency on [lib] built by the Konan Plugin for the [task], + * also make [lib] depend on `dist` and all dependencies of the [task] to make [lib] execute before the [task]. + */ +fun Project.dependOnKonanBuildingTask(lib: String, target: KonanTarget, task: Task) { + val libTask = "compileKonan${lib.capitalize()}${target.name.capitalize()}" + this.dependsOnDist(libTask) + libTask.sameDependenciesAs(task) + task.dependsOn(libTask) +} + //endregion // Run command line from string. fun Array.runCommand(workingDir: File = File("."),