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, CreateFatFrameworksSetupAction)
|
||||||
register(project, KotlinRegisterCompilationArchiveTasksExtension)
|
register(project, KotlinRegisterCompilationArchiveTasksExtension)
|
||||||
register(project, IdeMultiplatformImportActionSetupAction)
|
register(project, IdeMultiplatformImportActionSetupAction)
|
||||||
|
register(project, KotlinLLDBScriptSetupAction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,3 +26,6 @@ public val KonanDistribution.platformLibsDir: File
|
|||||||
|
|
||||||
public val KonanDistribution.sourcesDir: File
|
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 KLIB_INTEROP_IR_PROVIDER_IDENTIFIER = "kotlin.native.cinterop"
|
||||||
|
|
||||||
const val KONAN_DISTRIBUTION_SOURCES_DIR = "sources"
|
const val KONAN_DISTRIBUTION_SOURCES_DIR = "sources"
|
||||||
|
const val KONAN_DISTRIBUTION_TOOLS_DIR = "tools"
|
||||||
|
|
||||||
fun konanCommonLibraryPath(libraryName: String) =
|
fun konanCommonLibraryPath(libraryName: String) =
|
||||||
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_COMMON_LIBS_DIR).resolve(libraryName)
|
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_COMMON_LIBS_DIR).resolve(libraryName)
|
||||||
|
|||||||
Reference in New Issue
Block a user