Add KotlinArtifactsExtensionImpl code generator.
This commit is contained in:
committed by
Space
parent
3085f6bacf
commit
e974d16e7a
@@ -24,6 +24,17 @@ val generateAbstractBinaryContainer by generator(
|
||||
group = generateGroupName
|
||||
}
|
||||
|
||||
val generateAbstractKotlinArtifactsExtensionImplementation by generator(
|
||||
"org.jetbrains.kotlin.generators.gradle.dsl.KotlinArtifactsDSLCodegenKt",
|
||||
sourceSets["main"]
|
||||
) {
|
||||
group = generateGroupName
|
||||
systemProperty(
|
||||
"org.jetbrains.kotlin.generators.gradle.dsl.outputSourceRoot",
|
||||
project(":kotlin-gradle-plugin").projectDir.resolve("src/common/kotlin").absolutePath
|
||||
)
|
||||
}
|
||||
|
||||
val generateKpmNativeVariants by generator(
|
||||
"org.jetbrains.kotlin.generators.gradle.dsl.KpmNativeVariantCodegenKt",
|
||||
sourceSets["main"]
|
||||
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.generators.gradle.dsl
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import java.io.File
|
||||
|
||||
fun main() {
|
||||
generateAbstractKotlinArtifactsExtensionImplementation()
|
||||
}
|
||||
|
||||
private fun generateAbstractKotlinArtifactsExtensionImplementation() {
|
||||
val className = typeName("org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.KotlinArtifactsExtensionImpl")
|
||||
|
||||
val imports = """
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifact
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifactConfig
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifactsExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import javax.inject.Inject
|
||||
""".trimIndent()
|
||||
|
||||
val generatedCodeWarning = "// DO NOT EDIT MANUALLY! Generated by ${object {}.javaClass.enclosingClass.name}"
|
||||
|
||||
val overrides = listOf(
|
||||
"override val artifactConfigs = project.objects.domainObjectSet(KotlinArtifactConfig::class.java)",
|
||||
"override val artifacts = project.objects.namedDomainObjectSet(KotlinArtifact::class.java)",
|
||||
"override val Native = project.objects.newInstance(KotlinNativeArtifactDSLImpl::class.java, project)"
|
||||
).joinToString("\n").indented(4)
|
||||
|
||||
val buildTypeConstants = NativeBuildType.values().joinToString("\n") {
|
||||
"val ${it.name} = NativeBuildType.${it.name}"
|
||||
}.indented(4)
|
||||
|
||||
val bitcodeModeConstants = BitcodeEmbeddingMode.values().joinToString(
|
||||
separator = "\n",
|
||||
prefix = "class BitcodeEmbeddingModeDsl {\n",
|
||||
postfix = "\n}"
|
||||
) {
|
||||
"val ${it.name} = BitcodeEmbeddingMode.${it.name}".indented(4)
|
||||
}.indented(4)
|
||||
|
||||
val bitcodeMode = listOf(
|
||||
"@JvmField",
|
||||
"val EmbedBitcodeMode = BitcodeEmbeddingModeDsl()"
|
||||
).joinToString("\n").indented(4)
|
||||
|
||||
val konanTargetConstants = KonanTarget.predefinedTargets.values.joinToString("\n") {
|
||||
val nameParts = it.name.split("_")
|
||||
val name = nameParts.drop(1).joinToString(
|
||||
separator = "",
|
||||
prefix = nameParts.first(),
|
||||
transform = String::capitalize
|
||||
)
|
||||
"val $name = KonanTarget.${it.name.toUpperCase()}"
|
||||
}.indented(4)
|
||||
|
||||
val code = listOf(
|
||||
"package ${className.packageName()}",
|
||||
imports,
|
||||
generatedCodeWarning,
|
||||
"abstract class ${className.shortName()} @Inject constructor(project: Project) : KotlinArtifactsExtension {",
|
||||
overrides,
|
||||
buildTypeConstants,
|
||||
bitcodeModeConstants,
|
||||
bitcodeMode,
|
||||
konanTargetConstants,
|
||||
"}"
|
||||
).joinToString(separator = "\n\n")
|
||||
|
||||
val targetFile = File("$outputSourceRoot/${className.fqName.replace(".", "/")}.kt")
|
||||
targetFile.writeText(code)
|
||||
}
|
||||
-49
@@ -6,14 +6,10 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.DomainObjectSet
|
||||
import org.gradle.api.NamedDomainObjectSet
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||
import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val KOTLIN_ARTIFACTS_EXTENSION_NAME = "kotlinArtifacts"
|
||||
@@ -26,51 +22,6 @@ internal fun Project.registerKotlinArtifactsExtension() {
|
||||
val Project.kotlinArtifactsExtension: KotlinArtifactsExtension
|
||||
get() = extensions.getByName(KOTLIN_ARTIFACTS_EXTENSION_NAME).castIsolatedKotlinPluginClassLoaderAware()
|
||||
|
||||
abstract class KotlinArtifactsExtensionImpl @Inject constructor(project: Project) : KotlinArtifactsExtension {
|
||||
override val artifactConfigs = project.objects.domainObjectSet(KotlinArtifactConfig::class.java)
|
||||
override val artifacts = project.objects.namedDomainObjectSet(KotlinArtifact::class.java)
|
||||
override val Native = project.objects.newInstance(KotlinNativeArtifactDSLImpl::class.java, project)
|
||||
|
||||
val DEBUG = NativeBuildType.DEBUG
|
||||
val RELEASE = NativeBuildType.RELEASE
|
||||
|
||||
class BitcodeEmbeddingModeDsl {
|
||||
val DISABLE = org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode.DISABLE
|
||||
val BITCODE = org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode.BITCODE
|
||||
val MARKER = org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode.MARKER
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val EmbedBitcodeMode = BitcodeEmbeddingModeDsl()
|
||||
|
||||
val androidX64 = KonanTarget.ANDROID_X64
|
||||
val androidX86 = KonanTarget.ANDROID_X86
|
||||
val androidArm32 = KonanTarget.ANDROID_ARM32
|
||||
val androidArm64 = KonanTarget.ANDROID_ARM64
|
||||
val iosArm32 = KonanTarget.IOS_ARM32
|
||||
val iosArm64 = KonanTarget.IOS_ARM64
|
||||
val iosX64 = KonanTarget.IOS_X64
|
||||
val iosSimulatorArm64 = KonanTarget.IOS_SIMULATOR_ARM64
|
||||
val watchosArm32 = KonanTarget.WATCHOS_ARM32
|
||||
val watchosArm64 = KonanTarget.WATCHOS_ARM64
|
||||
val watchosX86 = KonanTarget.WATCHOS_X86
|
||||
val watchosX64 = KonanTarget.WATCHOS_X64
|
||||
val watchosSimulatorArm64 = KonanTarget.WATCHOS_SIMULATOR_ARM64
|
||||
val tvosArm64 = KonanTarget.TVOS_ARM64
|
||||
val tvosX64 = KonanTarget.TVOS_X64
|
||||
val tvosSimulatorArm64 = KonanTarget.TVOS_SIMULATOR_ARM64
|
||||
val linuxX64 = KonanTarget.LINUX_X64
|
||||
val mingwX86 = KonanTarget.MINGW_X86
|
||||
val mingwX64 = KonanTarget.MINGW_X64
|
||||
val macosX64 = KonanTarget.MACOS_X64
|
||||
val macosArm64 = KonanTarget.MACOS_ARM64
|
||||
val linuxArm64 = KonanTarget.LINUX_ARM64
|
||||
val linuxArm32Hfp = KonanTarget.LINUX_ARM32_HFP
|
||||
val linuxMips32 = KonanTarget.LINUX_MIPS32
|
||||
val linuxMipsel32 = KonanTarget.LINUX_MIPSEL32
|
||||
val wasm32 = KonanTarget.WASM32
|
||||
}
|
||||
|
||||
abstract class KotlinNativeArtifactDSLImpl @Inject constructor(private val project: Project) : KotlinNativeArtifactDSL {
|
||||
companion object {
|
||||
private val UNSAFE_NAME_SYMBOLS = """\W""".toRegex()
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifact
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifactConfig
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinArtifactsExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import javax.inject.Inject
|
||||
|
||||
// DO NOT EDIT MANUALLY! Generated by org.jetbrains.kotlin.generators.gradle.dsl.KotlinArtifactsDSLCodegenKt
|
||||
|
||||
abstract class KotlinArtifactsExtensionImpl @Inject constructor(project: Project) : KotlinArtifactsExtension {
|
||||
|
||||
override val artifactConfigs = project.objects.domainObjectSet(KotlinArtifactConfig::class.java)
|
||||
override val artifacts = project.objects.namedDomainObjectSet(KotlinArtifact::class.java)
|
||||
override val Native = project.objects.newInstance(KotlinNativeArtifactDSLImpl::class.java, project)
|
||||
|
||||
val RELEASE = NativeBuildType.RELEASE
|
||||
val DEBUG = NativeBuildType.DEBUG
|
||||
|
||||
class BitcodeEmbeddingModeDsl {
|
||||
val DISABLE = BitcodeEmbeddingMode.DISABLE
|
||||
val BITCODE = BitcodeEmbeddingMode.BITCODE
|
||||
val MARKER = BitcodeEmbeddingMode.MARKER
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val EmbedBitcodeMode = BitcodeEmbeddingModeDsl()
|
||||
|
||||
val androidX64 = KonanTarget.ANDROID_X64
|
||||
val androidX86 = KonanTarget.ANDROID_X86
|
||||
val androidArm32 = KonanTarget.ANDROID_ARM32
|
||||
val androidArm64 = KonanTarget.ANDROID_ARM64
|
||||
val iosArm32 = KonanTarget.IOS_ARM32
|
||||
val iosArm64 = KonanTarget.IOS_ARM64
|
||||
val iosX64 = KonanTarget.IOS_X64
|
||||
val iosSimulatorArm64 = KonanTarget.IOS_SIMULATOR_ARM64
|
||||
val watchosArm32 = KonanTarget.WATCHOS_ARM32
|
||||
val watchosArm64 = KonanTarget.WATCHOS_ARM64
|
||||
val watchosX86 = KonanTarget.WATCHOS_X86
|
||||
val watchosX64 = KonanTarget.WATCHOS_X64
|
||||
val watchosSimulatorArm64 = KonanTarget.WATCHOS_SIMULATOR_ARM64
|
||||
val tvosArm64 = KonanTarget.TVOS_ARM64
|
||||
val tvosX64 = KonanTarget.TVOS_X64
|
||||
val tvosSimulatorArm64 = KonanTarget.TVOS_SIMULATOR_ARM64
|
||||
val linuxX64 = KonanTarget.LINUX_X64
|
||||
val mingwX86 = KonanTarget.MINGW_X86
|
||||
val mingwX64 = KonanTarget.MINGW_X64
|
||||
val macosX64 = KonanTarget.MACOS_X64
|
||||
val macosArm64 = KonanTarget.MACOS_ARM64
|
||||
val linuxArm64 = KonanTarget.LINUX_ARM64
|
||||
val linuxArm32Hfp = KonanTarget.LINUX_ARM32_HFP
|
||||
val linuxMips32 = KonanTarget.LINUX_MIPS32
|
||||
val linuxMipsel32 = KonanTarget.LINUX_MIPSEL32
|
||||
val wasm32 = KonanTarget.WASM32
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user