[gradle][publish] main variant is per KonanBuildingConfig
This commit is contained in:
committed by
Vasily Levchenko
parent
a23ca71e5c
commit
b03f0bfc83
+2
-1
@@ -39,6 +39,7 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
||||
val targets: Iterable<String>)
|
||||
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.konanTarget.visibleName }) {
|
||||
|
||||
internal val mainVariant = KonanSoftwareComponent(project)
|
||||
override fun getName() = name_
|
||||
|
||||
protected val targetToTask = mutableMapOf<KonanTarget, T>()
|
||||
@@ -114,7 +115,7 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
||||
protected fun createTask(target: KonanTarget): T =
|
||||
project.tasks.create(generateTaskName(target), type) {
|
||||
val outputDescription = determineOutputPlacement(target)
|
||||
it.init(outputDescription.destinationDir, outputDescription.artifactName, target)
|
||||
it.init(this, outputDescription.destinationDir, outputDescription.artifactName, target)
|
||||
it.group = BasePlugin.BUILD_GROUP
|
||||
it.description = generateTaskDescription(it)
|
||||
} ?: throw Exception("Cannot create task for target: ${target.visibleName}")
|
||||
|
||||
+7
-5
@@ -309,7 +309,6 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
project.tasks.create(KONAN_DOWNLOAD_TASK_NAME, KonanCompilerDownloadTask::class.java)
|
||||
project.tasks.create(KONAN_GENERATE_CMAKE_TASK_NAME, KonanGenerateCMakeTask::class.java)
|
||||
project.extensions.create(KONAN_EXTENSION_NAME, KonanExtension::class.java)
|
||||
val mainVariant = project.extensions.create(ComponentWithVariants::class.java, KONAN_MAIN_VARIANT, KonanSoftwareComponent::class.java, project)
|
||||
val container = project.extensions.create(KonanArtifactContainer::class.java, ARTIFACTS_CONTAINER_NAME, KonanArtifactContainer::class.java, project)
|
||||
|
||||
// Set additional project properties like konan.home, konan.build.targets etc.
|
||||
@@ -353,11 +352,11 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
// Enable multiplatform support
|
||||
project.pluginManager.apply(KotlinNativePlatformPlugin::class.java)
|
||||
project.afterEvaluate {
|
||||
val konanSoftwareComponent = mainVariant as KonanSoftwareComponent
|
||||
project.pluginManager.withPlugin("maven-publish") {
|
||||
container.all {
|
||||
val buildingConfig = it
|
||||
val artifactId = buildingConfig.name
|
||||
val konanSoftwareComponent = buildingConfig.mainVariant
|
||||
project.extensions.configure(PublishingExtension::class.java) {
|
||||
val publishing = it
|
||||
it.publications.create(artifactId, MavenPublication::class.java) {
|
||||
@@ -366,11 +365,14 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
it.from(konanSoftwareComponent)
|
||||
(it as MavenPublicationInternal).publishWithOriginalFileName()
|
||||
}
|
||||
}
|
||||
|
||||
project.extensions.configure(PublishingExtension::class.java) {
|
||||
val publishing = it
|
||||
for (v in konanSoftwareComponent.variants) {
|
||||
// TODO: with gradle 4.7 don't forget to change to SoftwareComponentsWithCoordinates
|
||||
val name = "${v.name}/$artifactId"
|
||||
publishing.publications.create(name, MavenPublication::class.java) {
|
||||
it.artifactId = "${artifactId}-${v.name}"
|
||||
publishing.publications.create(v.name, MavenPublication::class.java) {
|
||||
it.artifactId = v.name
|
||||
it.groupId = project.group.toString()
|
||||
it.version = project.version.toString()
|
||||
it.from(v)
|
||||
|
||||
+4
-4
@@ -81,7 +81,7 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
protected abstract val artifactPrefix: String
|
||||
@Internal get
|
||||
|
||||
internal open fun init(destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
internal open fun init(config:KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
super.init(target)
|
||||
this.destinationDir = destinationDir
|
||||
this.artifactName = artifactName
|
||||
@@ -98,7 +98,7 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
|
||||
project.pluginManager.withPlugin("maven-publish") {
|
||||
platformConfiguration.artifacts.add(object: PublishArtifact {
|
||||
override fun getName() = "${artifact.name}/${target.name}"
|
||||
override fun getName() = "${artifact.name.removeSuffix("$artifactSuffix")}/${target.name}"
|
||||
override fun getExtension() = if (artifactSuffix.startsWith('.')) artifactSuffix.substring(1) else artifactSuffix
|
||||
override fun getType() = artifactSuffix
|
||||
override fun getClassifier():String? = target.name
|
||||
@@ -109,8 +109,8 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
val objectFactory = project.objects
|
||||
val linkUsage = objectFactory.named(Usage::class.java, Usage.NATIVE_LINK)
|
||||
val runtimeUsage = objectFactory.named(Usage::class.java, Usage.NATIVE_RUNTIME)
|
||||
val konanSoftwareComponent = project.extensions.getByName(KonanPlugin.KONAN_MAIN_VARIANT) as KonanSoftwareComponent
|
||||
konanSoftwareComponent.addVariant(NativeVariant(Names.of(target.name), linkUsage, null, linkUsage, platformConfiguration))
|
||||
val konanSoftwareComponent = config.mainVariant
|
||||
konanSoftwareComponent.addVariant(NativeVariant(Names.of("${artifact.name.removeSuffix("$artifactSuffix")}_${target.name}"), linkUsage, null, linkUsage, platformConfiguration))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -28,9 +28,9 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
|
||||
|
||||
internal abstract val toolRunner: KonanToolRunner
|
||||
|
||||
override fun init(destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
override fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
dependsOn(project.konanCompilerDownloadTask)
|
||||
super.init(destinationDir, artifactName, target)
|
||||
super.init(config, destinationDir, artifactName, target)
|
||||
}
|
||||
|
||||
@Console
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ open class KonanInteropTask: KonanBuildingTask(), KonanInteropSpec {
|
||||
|
||||
@Internal override val toolRunner: KonanToolRunner = KonanInteropRunner(project)
|
||||
|
||||
override fun init(destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
super.init(destinationDir, artifactName, target)
|
||||
override fun init(config: KonanBuildingConfig<*>, destinationDir: File, artifactName: String, target: KonanTarget) {
|
||||
super.init(config, destinationDir, artifactName, target)
|
||||
this.defFile = project.konanDefaultDefFile(artifactName)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user