KT-63592 Create setupLLDBScript task

This commit is contained in:
Andrey Yastrebov
2023-12-14 16:43:44 +01:00
committed by Space Team
parent 56221467ff
commit 4176c50107
4 changed files with 68 additions and 1 deletions
@@ -0,0 +1,62 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.ProjectLayout
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.commonizer.toolsDir
import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupCoroutine
import org.jetbrains.kotlin.gradle.targets.native.internal.konanDistribution
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
import org.jetbrains.kotlin.gradle.utils.getFile
import javax.inject.Inject
internal val KotlinLLDBScriptSetupAction = KotlinProjectSetupCoroutine {
locateOrRegisterLLDBScriptTask()
}
@CacheableTask
internal abstract class LLDBInitTask
@Inject constructor(
objects: ObjectFactory,
projectLayout: ProjectLayout,
) : DefaultTask() {
@get:Input
internal abstract val fileName: Property<String>
@get:InputDirectory
@get:PathSensitive(PathSensitivity.RELATIVE)
internal abstract val konanToolsDir: DirectoryProperty
@get:OutputFile
protected val outputFile: RegularFileProperty by lazy {
objects.fileProperty().convention(
projectLayout.buildDirectory.file(fileName)
)
}
@TaskAction
fun createScript() {
outputFile
.getFile()
.writeText("command script import ${konanToolsDir.getFile().resolve("konan_lldb.py")}")
}
}
internal fun Project.locateOrRegisterLLDBScriptTask(): TaskProvider<LLDBInitTask> {
return locateOrRegisterTask("setupLldbScript") { task ->
task.description = "Generate lldbinit file with imported konan_lldb.py script"
task.fileName.set("lldbinit")
task.konanToolsDir.set(konanDistribution.toolsDir)
}
}
@@ -70,6 +70,7 @@ internal fun Project.registerKotlinPluginExtensions() {
register(project, CreateFatFrameworksSetupAction)
register(project, KotlinRegisterCompilationArchiveTasksExtension)
register(project, IdeMultiplatformImportActionSetupAction)
register(project, KotlinLLDBScriptSetupAction)
}
}
@@ -25,4 +25,7 @@ public val KonanDistribution.platformLibsDir: File
get() = klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR)
public val KonanDistribution.sourcesDir: File
get() = root.resolve(KONAN_DISTRIBUTION_SOURCES_DIR)
get() = root.resolve(KONAN_DISTRIBUTION_SOURCES_DIR)
public val KonanDistribution.toolsDir: File
get() = root.resolve(KONAN_DISTRIBUTION_TOOLS_DIR)
@@ -16,6 +16,7 @@ const val KONAN_DISTRIBUTION_COMMONIZED_LIBS_DIR = "commonized"
const val KLIB_INTEROP_IR_PROVIDER_IDENTIFIER = "kotlin.native.cinterop"
const val KONAN_DISTRIBUTION_SOURCES_DIR = "sources"
const val KONAN_DISTRIBUTION_TOOLS_DIR = "tools"
fun konanCommonLibraryPath(libraryName: String) =
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_COMMON_LIBS_DIR).resolve(libraryName)