KT-63592 Create setupLLDBScript task
This commit is contained in:
committed by
Space Team
parent
56221467ff
commit
4176c50107
+62
@@ -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)
|
||||
}
|
||||
}
|
||||
+1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user