Add groovy friendly DSL for kotlin artifacts.
This commit is contained in:
committed by
teamcity
parent
898c46c124
commit
e955fa429b
+13
-4
@@ -18,16 +18,25 @@ class NativeLibraryDslIT : BaseGradleIT() {
|
|||||||
build(":shared:tasks") {
|
build(":shared:tasks") {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertTasksRegistered(
|
assertTasksRegistered(
|
||||||
":shared:assembleMylibDebugSharedLibraryLinuxX64",
|
":shared:assembleMyfatframeFatFramework",
|
||||||
":shared:assembleMyslibDebugSharedLibraryLinuxX64",
|
":shared:assembleMyframeFramework",
|
||||||
":shared:assembleMylibReleaseSharedLibraryLinuxX64",
|
|
||||||
":shared:assembleMylibSharedLibrary",
|
":shared:assembleMylibSharedLibrary",
|
||||||
":shared:assembleMyslibSharedLibrary"
|
":shared:assembleMyslibSharedLibrary",
|
||||||
|
":shared:assembleSharedXCFramework"
|
||||||
)
|
)
|
||||||
assertTasksNotRegistered(
|
assertTasksNotRegistered(
|
||||||
":shared:assembleMyslibReleaseSharedLibraryLinuxX64"
|
":shared:assembleMyslibReleaseSharedLibraryLinuxX64"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
build(":lib:tasks") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksRegistered(
|
||||||
|
":lib:assembleGroofatframeFatFramework",
|
||||||
|
":lib:assembleGrooframeFramework",
|
||||||
|
":lib:assembleGroolibSharedLibrary",
|
||||||
|
":lib:assembleLibXCFramework"
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.multiplatform'
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
linuxX64()
|
||||||
|
iosX64()
|
||||||
|
iosArm64()
|
||||||
|
iosSimulatorArm64()
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlinArtifacts {
|
||||||
|
Native.Library("groolib") {
|
||||||
|
modes(DEBUG)
|
||||||
|
target = iosX64
|
||||||
|
isStatic = false
|
||||||
|
linkerOptions = ["a", "b"]
|
||||||
|
kotlinOptions {
|
||||||
|
verbose = true
|
||||||
|
freeCompilerArgs = ["foo"]
|
||||||
|
}
|
||||||
|
binaryOption("name", "value")
|
||||||
|
setModules(
|
||||||
|
project(":shared"),
|
||||||
|
project(":lib")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Native.Framework("grooframe") {
|
||||||
|
modes(DEBUG, RELEASE)
|
||||||
|
target = iosArm64
|
||||||
|
isStatic = false
|
||||||
|
embedBitcode = EmbedBitcodeMode.MARKER
|
||||||
|
kotlinOptions {
|
||||||
|
verbose = true
|
||||||
|
}
|
||||||
|
addModule(project(":shared"))
|
||||||
|
}
|
||||||
|
Native.FatFramework("groofatframe") {
|
||||||
|
targets(iosX64, iosSimulatorArm64)
|
||||||
|
embedBitcode = EmbedBitcodeMode.DISABLE
|
||||||
|
kotlinOptions {
|
||||||
|
suppressWarnings = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Native.XCFramework {
|
||||||
|
targets(iosX64, iosArm64, iosSimulatorArm64)
|
||||||
|
}
|
||||||
|
}
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
plugins {
|
|
||||||
kotlin("multiplatform")
|
|
||||||
}
|
|
||||||
|
|
||||||
kotlin {
|
|
||||||
linuxX64()
|
|
||||||
iosX64()
|
|
||||||
iosArm64()
|
|
||||||
iosSimulatorArm64()
|
|
||||||
}
|
|
||||||
+37
-20
@@ -1,7 +1,3 @@
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.*
|
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget.*
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform")
|
kotlin("multiplatform")
|
||||||
}
|
}
|
||||||
@@ -13,20 +9,41 @@ kotlin {
|
|||||||
iosSimulatorArm64()
|
iosSimulatorArm64()
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinArtifact("mylib", Library) {
|
kotlinArtifacts {
|
||||||
target = LINUX_X64
|
Native.Library("mylib") {
|
||||||
}
|
target = linuxX64
|
||||||
|
}
|
||||||
kotlinArtifact("myslib", Library) {
|
Native.Library("myslib") {
|
||||||
target = LINUX_X64
|
target = linuxX64
|
||||||
modes = setOf(NativeBuildType.DEBUG)
|
isStatic = false
|
||||||
addModule(project(":lib"))
|
modes(DEBUG)
|
||||||
}
|
addModule(project(":lib"))
|
||||||
|
kotlinOptions {
|
||||||
kotlinArtifact(XCFramework) {
|
verbose = false
|
||||||
targets = setOf(IOS_X64, IOS_ARM64, IOS_SIMULATOR_ARM64)
|
freeCompilerArgs = emptyList()
|
||||||
setModules(
|
}
|
||||||
project(":shared"),
|
}
|
||||||
project(":lib")
|
Native.Framework("myframe") {
|
||||||
)
|
modes(DEBUG, RELEASE)
|
||||||
|
target = iosArm64
|
||||||
|
isStatic = false
|
||||||
|
embedBitcode = EmbedBitcodeMode.MARKER
|
||||||
|
kotlinOptions {
|
||||||
|
verbose = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Native.FatFramework("myfatframe") {
|
||||||
|
targets(iosX64, iosSimulatorArm64)
|
||||||
|
embedBitcode = EmbedBitcodeMode.DISABLE
|
||||||
|
kotlinOptions {
|
||||||
|
suppressWarnings = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Native.XCFramework {
|
||||||
|
targets(iosX64, iosArm64, iosSimulatorArm64)
|
||||||
|
setModules(
|
||||||
|
project(":shared"),
|
||||||
|
project(":lib")
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+2
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.checkSourceSetVisibilityRequir
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.registerKotlinArtifactsExtension
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
@@ -95,6 +96,7 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
|||||||
METADATA_TARGET_NAME
|
METADATA_TARGET_NAME
|
||||||
)
|
)
|
||||||
configurePublishingWithMavenPublish(project)
|
configurePublishingWithMavenPublish(project)
|
||||||
|
project.registerKotlinArtifactsExtension()
|
||||||
|
|
||||||
targetsContainer.withType(AbstractKotlinTarget::class.java).all { applyUserDefinedAttributes(it) }
|
targetsContainer.withType(AbstractKotlinTarget::class.java).all { applyUserDefinedAttributes(it) }
|
||||||
|
|
||||||
|
|||||||
+10
-37
@@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact
|
package org.jetbrains.kotlin.gradle.targets.native.tasks.artifact
|
||||||
|
|
||||||
import org.gradle.api.Plugin
|
import groovy.lang.Closure
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.kotlin.dsl.create
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||||
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
|||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.target.presetName
|
import org.jetbrains.kotlin.konan.target.presetName
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
abstract class KotlinArtifact {
|
abstract class KotlinArtifact {
|
||||||
internal val modules = mutableSetOf<Any>()
|
internal val modules = mutableSetOf<Any>()
|
||||||
@@ -36,12 +35,16 @@ abstract class KotlinArtifact {
|
|||||||
|
|
||||||
abstract class KotlinNativeArtifact : KotlinArtifact() {
|
abstract class KotlinNativeArtifact : KotlinArtifact() {
|
||||||
var modes: Set<NativeBuildType> = NativeBuildType.DEFAULT_BUILD_TYPES
|
var modes: Set<NativeBuildType> = NativeBuildType.DEFAULT_BUILD_TYPES
|
||||||
var isStatic: Boolean = false
|
fun modes(vararg modes: NativeBuildType) {
|
||||||
var linkerOptions: List<String> = emptyList()
|
this.modes = modes.toSet()
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmField var isStatic: Boolean = false
|
||||||
|
@JvmField var linkerOptions: List<String> = emptyList()
|
||||||
|
|
||||||
internal var kotlinOptionsFn: KotlinCommonToolOptions.() -> Unit = {}
|
internal var kotlinOptionsFn: KotlinCommonToolOptions.() -> Unit = {}
|
||||||
fun kotlinOptions(fn: KotlinCommonToolOptions.() -> Unit) {
|
fun kotlinOptions(fn: Action<KotlinCommonToolOptions>) {
|
||||||
kotlinOptionsFn = fn
|
kotlinOptionsFn = fn::execute
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val binaryOptions: MutableMap<String, String> = mutableMapOf()
|
internal val binaryOptions: MutableMap<String, String> = mutableMapOf()
|
||||||
@@ -93,34 +96,4 @@ abstract class KotlinNativeArtifact : KotlinArtifact() {
|
|||||||
deps.forEach { dependencies.add(exportConfigurationName, it) }
|
deps.forEach { dependencies.add(exportConfigurationName, it) }
|
||||||
return exportConfigurationName
|
return exportConfigurationName
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
open class ArtifactType<T : KotlinArtifact>(internal val create: () -> T)
|
|
||||||
object Library : ArtifactType<KotlinNativeLibrary>({ KotlinNativeLibrary() })
|
|
||||||
object Framework : ArtifactType<KotlinNativeFramework>({ KotlinNativeFramework() })
|
|
||||||
object FatFramework : ArtifactType<KotlinNativeFatFramework>({ KotlinNativeFatFramework() })
|
|
||||||
object XCFramework : ArtifactType<KotlinNativeXCFramework>({ KotlinNativeXCFramework() })
|
|
||||||
|
|
||||||
@RequiresOptIn(
|
|
||||||
message = "This API is experimental. It may be changed in the future.",
|
|
||||||
level = RequiresOptIn.Level.WARNING
|
|
||||||
)
|
|
||||||
@Retention(AnnotationRetention.BINARY)
|
|
||||||
@Target(AnnotationTarget.FUNCTION)
|
|
||||||
annotation class ExperimentalArtifactDsl
|
|
||||||
|
|
||||||
private val SAFE_NAME_PATTERN = """\W""".toRegex()
|
|
||||||
|
|
||||||
@ExperimentalArtifactDsl
|
|
||||||
fun <T : KotlinArtifact> Project.kotlinArtifact(type: ArtifactType<T>, configure: T.() -> Unit) =
|
|
||||||
kotlinArtifact(name.replace(SAFE_NAME_PATTERN, "_"), type, configure)
|
|
||||||
|
|
||||||
@ExperimentalArtifactDsl
|
|
||||||
fun <T : KotlinArtifact> Project.kotlinArtifact(name: String, type: ArtifactType<T>, configure: T.() -> Unit) {
|
|
||||||
val artifact = type.create()
|
|
||||||
artifact.addModule(this)
|
|
||||||
configure(artifact)
|
|
||||||
if (artifact.validate(this, name)) {
|
|
||||||
artifact.registerAssembleTask(this, name)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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.targets.native.tasks.artifact
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
private val SAFE_NAME_PATTERN = """\W""".toRegex()
|
||||||
|
private inline fun <reified T : KotlinArtifact> Project.kotlinArtifact(configure: Action<T>) {
|
||||||
|
kotlinArtifact(name.replace(SAFE_NAME_PATTERN, "_"), configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inline fun <reified T : KotlinArtifact> Project.kotlinArtifact(name: String, configure: Action<T>) {
|
||||||
|
val artifact = objects.newInstance(T::class.java)
|
||||||
|
artifact.addModule(this)
|
||||||
|
configure.execute(artifact)
|
||||||
|
if (artifact.validate(this, name)) {
|
||||||
|
artifact.registerAssembleTask(this, name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Groovy script DSL
|
||||||
|
abstract class NativeArtifacts @Inject constructor(private val project: Project) {
|
||||||
|
@RequiresOptIn(
|
||||||
|
message = "This API is experimental. It may be changed in the future.",
|
||||||
|
level = RequiresOptIn.Level.WARNING
|
||||||
|
)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
@Target(AnnotationTarget.FUNCTION)
|
||||||
|
annotation class ExperimentalArtifactDsl
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun Library(name: String, configure: Action<KotlinNativeLibrary>) {
|
||||||
|
project.kotlinArtifact(name, configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun Library(configure: Action<KotlinNativeLibrary>) {
|
||||||
|
project.kotlinArtifact(configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun Framework(name: String, configure: Action<KotlinNativeFramework>) {
|
||||||
|
project.kotlinArtifact(name, configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun Framework(configure: Action<KotlinNativeFramework>) {
|
||||||
|
project.kotlinArtifact(configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun FatFramework(name: String, configure: Action<KotlinNativeFatFramework>) {
|
||||||
|
project.kotlinArtifact(name, configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun FatFramework(configure: Action<KotlinNativeFatFramework>) {
|
||||||
|
project.kotlinArtifact(configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun XCFramework(name: String, configure: Action<KotlinNativeXCFramework>) {
|
||||||
|
project.kotlinArtifact(name, configure)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalArtifactDsl
|
||||||
|
fun XCFramework(configure: Action<KotlinNativeXCFramework>) {
|
||||||
|
project.kotlinArtifact(configure)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Groovy script DSL
|
||||||
|
internal fun Project.registerKotlinArtifactsExtension() {
|
||||||
|
extensions.create("kotlinArtifacts", KotlinArtifactsExtension::class.java, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class KotlinArtifactsExtension @Inject constructor(project: 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 Native = project.objects.newInstance(NativeArtifacts::class.java, project)
|
||||||
|
|
||||||
|
@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
|
||||||
|
}
|
||||||
+5
-1
@@ -18,8 +18,12 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
|||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
|
|
||||||
class KotlinNativeFatFramework : KotlinNativeArtifact() {
|
open class KotlinNativeFatFramework : KotlinNativeArtifact() {
|
||||||
var targets: Set<KonanTarget> = emptySet()
|
var targets: Set<KonanTarget> = emptySet()
|
||||||
|
fun targets(vararg targets: KonanTarget) {
|
||||||
|
this.targets = targets.toSet()
|
||||||
|
}
|
||||||
|
|
||||||
var embedBitcode: BitcodeEmbeddingMode? = null
|
var embedBitcode: BitcodeEmbeddingMode? = null
|
||||||
|
|
||||||
private val kind = NativeOutputKind.FRAMEWORK
|
private val kind = NativeOutputKind.FRAMEWORK
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
|||||||
import org.jetbrains.kotlin.konan.target.presetName
|
import org.jetbrains.kotlin.konan.target.presetName
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
|
|
||||||
class KotlinNativeFramework : KotlinNativeArtifact() {
|
open class KotlinNativeFramework : KotlinNativeArtifact() {
|
||||||
lateinit var target: KonanTarget
|
lateinit var target: KonanTarget
|
||||||
var embedBitcode: BitcodeEmbeddingMode? = null
|
var embedBitcode: BitcodeEmbeddingMode? = null
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
|||||||
import org.jetbrains.kotlin.konan.target.presetName
|
import org.jetbrains.kotlin.konan.target.presetName
|
||||||
import org.jetbrains.kotlin.konan.util.visibleName
|
import org.jetbrains.kotlin.konan.util.visibleName
|
||||||
|
|
||||||
class KotlinNativeLibrary : KotlinNativeArtifact() {
|
open class KotlinNativeLibrary : KotlinNativeArtifact() {
|
||||||
lateinit var target: KonanTarget
|
lateinit var target: KonanTarget
|
||||||
|
|
||||||
private val kind: NativeOutputKind
|
private val kind: NativeOutputKind
|
||||||
|
|||||||
+5
-1
@@ -18,8 +18,12 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask
|
|||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
|
||||||
class KotlinNativeXCFramework : KotlinNativeArtifact() {
|
open class KotlinNativeXCFramework : KotlinNativeArtifact() {
|
||||||
var targets: Set<KonanTarget> = emptySet()
|
var targets: Set<KonanTarget> = emptySet()
|
||||||
|
fun targets(vararg targets: KonanTarget) {
|
||||||
|
this.targets = targets.toSet()
|
||||||
|
}
|
||||||
|
|
||||||
var embedBitcode: BitcodeEmbeddingMode? = null
|
var embedBitcode: BitcodeEmbeddingMode? = null
|
||||||
|
|
||||||
private val kind = NativeOutputKind.FRAMEWORK
|
private val kind = NativeOutputKind.FRAMEWORK
|
||||||
|
|||||||
Reference in New Issue
Block a user