[Gradle, JS] Extract Binary Container from Native
This commit is contained in:
+28
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 groovy.lang.Closure
|
||||
import org.gradle.api.DomainObjectSet
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
|
||||
abstract class KotlinBinaryContainer<T : KotlinCompilation<*>, R : DomainObjectSet<*>>(
|
||||
project: Project,
|
||||
platformType: KotlinPlatformType
|
||||
) : KotlinOnlyTarget<T>(project, platformType) {
|
||||
abstract val binaries: R
|
||||
|
||||
fun binaries(configure: R.() -> Unit) {
|
||||
binaries.configure()
|
||||
}
|
||||
|
||||
fun binaries(configure: Closure<*>) {
|
||||
ConfigureUtil.configure(configure, binaries)
|
||||
}
|
||||
}
|
||||
+5
-12
@@ -6,11 +6,9 @@
|
||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.gradle.util.WrapUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
@@ -25,24 +23,19 @@ import javax.inject.Inject
|
||||
open class KotlinNativeTarget @Inject constructor(
|
||||
project: Project,
|
||||
val konanTarget: KonanTarget
|
||||
) : KotlinOnlyTarget<KotlinNativeCompilation>(project, KotlinPlatformType.native) {
|
||||
) : KotlinBinaryContainer<KotlinNativeCompilation, KotlinNativeBinaryContainer>(
|
||||
project,
|
||||
KotlinPlatformType.native
|
||||
) {
|
||||
|
||||
init {
|
||||
attributes.attribute(konanTargetAttribute, konanTarget.name)
|
||||
}
|
||||
|
||||
val binaries =
|
||||
override val binaries =
|
||||
// Use newInstance to allow accessing binaries by their names in Groovy using the extension mechanism.
|
||||
project.objects.newInstance(KotlinNativeBinaryContainer::class.java, this, WrapUtil.toDomainObjectSet(NativeBinary::class.java))
|
||||
|
||||
fun binaries(configure: KotlinNativeBinaryContainer.() -> Unit) {
|
||||
binaries.configure()
|
||||
}
|
||||
|
||||
fun binaries(configure: Closure<*>) {
|
||||
ConfigureUtil.configure(configure, binaries)
|
||||
}
|
||||
|
||||
override val artifactsTaskName: String
|
||||
get() = disambiguateName("binaries")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user