Switch to Gradle 5.1
This commit is contained in:
committed by
Ilya Matveev
parent
ce1e83945d
commit
a576ee4b7d
@@ -9,7 +9,7 @@ buildscript {
|
|||||||
apply plugin: 'project-report'
|
apply plugin: 'project-report'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0"
|
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ class NamedNativeInteropConfig implements Named {
|
|||||||
dependsOn(task)
|
dependsOn(task)
|
||||||
|
|
||||||
final Project prj;
|
final Project prj;
|
||||||
final String taskName;
|
String taskName;
|
||||||
int index = task.lastIndexOf(':')
|
int index = task.lastIndexOf(':')
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
prj = project.project(task.substring(0, index))
|
prj = project.project(task.substring(0, index))
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ buildscript {
|
|||||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0"
|
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ buildscript {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
|
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
|
||||||
classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.0'
|
classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.4'
|
||||||
classpath "com.gradle.publish:plugin-publish-plugin:0.9.10"
|
classpath "com.gradle.publish:plugin-publish-plugin:0.9.10"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ dependencies {
|
|||||||
shadowJar {
|
shadowJar {
|
||||||
from sourceSets.main.output
|
from sourceSets.main.output
|
||||||
configurations = [project.configurations.bundleDependencies]
|
configurations = [project.configurations.bundleDependencies]
|
||||||
classifier = null
|
archiveClassifier.set(null)
|
||||||
relocate('org.jetbrains.kotlinx', 'shadow.org.jetbrains.kotlinx')
|
relocate('org.jetbrains.kotlinx', 'shadow.org.jetbrains.kotlinx')
|
||||||
relocate('org.jetbrains.kotlin.compilerRunner', 'shadow.org.jetbrains.kotlin.compilerRunner')
|
relocate('org.jetbrains.kotlin.compilerRunner', 'shadow.org.jetbrains.kotlin.compilerRunner')
|
||||||
relocate('org.jetbrains.kotlin.konan', 'shadow.org.jetbrains.kotlin.konan')
|
relocate('org.jetbrains.kotlin.konan', 'shadow.org.jetbrains.kotlin.konan')
|
||||||
|
|||||||
+7
-6
@@ -21,7 +21,6 @@ import org.gradle.api.artifacts.ConfigurationContainer
|
|||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.file.ConfigurableFileCollection
|
import org.gradle.api.file.ConfigurableFileCollection
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.file.ProjectLayout
|
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
@@ -30,6 +29,7 @@ import org.gradle.language.ComponentDependencies
|
|||||||
import org.gradle.language.ComponentWithDependencies
|
import org.gradle.language.ComponentWithDependencies
|
||||||
import org.gradle.language.ComponentWithOutputs
|
import org.gradle.language.ComponentWithOutputs
|
||||||
import org.gradle.language.cpp.CppBinary
|
import org.gradle.language.cpp.CppBinary
|
||||||
|
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
||||||
import org.gradle.language.internal.DefaultComponentDependencies
|
import org.gradle.language.internal.DefaultComponentDependencies
|
||||||
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
||||||
import org.gradle.language.nativeplatform.internal.Names
|
import org.gradle.language.nativeplatform.internal.Names
|
||||||
@@ -60,8 +60,7 @@ abstract class AbstractKotlinNativeBinary(
|
|||||||
private val name: String,
|
private val name: String,
|
||||||
private val baseName: Provider<String>,
|
private val baseName: Provider<String>,
|
||||||
override val component: AbstractKotlinNativeComponent,
|
override val component: AbstractKotlinNativeComponent,
|
||||||
val identity: KotlinNativeVariantIdentity,
|
val variant: KotlinNativeVariant,
|
||||||
val projectLayout: ProjectLayout,
|
|
||||||
override val kind: CompilerOutputKind,
|
override val kind: CompilerOutputKind,
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
@@ -80,14 +79,16 @@ abstract class AbstractKotlinNativeBinary(
|
|||||||
override fun getName(): String = name
|
override fun getName(): String = name
|
||||||
|
|
||||||
override val konanTarget: KonanTarget
|
override val konanTarget: KonanTarget
|
||||||
get() = identity.konanTarget
|
get() = variant.konanTarget
|
||||||
|
|
||||||
override fun getTargetPlatform(): KotlinNativePlatform = identity.targetPlatform
|
val identity: NativeVariantIdentity = variant.identity
|
||||||
|
|
||||||
|
override fun getTargetPlatform(): KotlinNativePlatform = variant.targetPlatform
|
||||||
|
|
||||||
val sourceSet: KotlinNativeSourceSet
|
val sourceSet: KotlinNativeSourceSet
|
||||||
get() = component.sources
|
get() = component.sources
|
||||||
|
|
||||||
val buildType: KotlinNativeBuildType get() = identity.buildType
|
val buildType: KotlinNativeBuildType get() = variant.buildType
|
||||||
open val debuggable: Boolean get() = identity.isDebuggable
|
open val debuggable: Boolean get() = identity.isDebuggable
|
||||||
open val optimized: Boolean get() = identity.isOptimized
|
open val optimized: Boolean get() = identity.isOptimized
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -22,9 +22,9 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.internal.provider.LockableSetProperty
|
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.provider.SetProperty
|
||||||
import org.gradle.api.publish.maven.MavenPom
|
import org.gradle.api.publish.maven.MavenPom
|
||||||
import org.gradle.language.internal.DefaultBinaryCollection
|
import org.gradle.language.internal.DefaultBinaryCollection
|
||||||
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
||||||
@@ -62,8 +62,8 @@ abstract class AbstractKotlinNativeComponent @Inject constructor(
|
|||||||
private val baseName: Property<String> = objectFactory.property(String::class.java).apply { set(name) }
|
private val baseName: Property<String> = objectFactory.property(String::class.java).apply { set(name) }
|
||||||
fun getBaseName(): Property<String> = baseName
|
fun getBaseName(): Property<String> = baseName
|
||||||
|
|
||||||
override val konanTargets: LockableSetProperty<KonanTarget> =
|
override val konanTargets: SetProperty<KonanTarget> =
|
||||||
LockableSetProperty(objectFactory.setProperty(KonanTarget::class.java)).apply {
|
objectFactory.setProperty(KonanTarget::class.java).apply {
|
||||||
set(mutableSetOf(HostManager.host))
|
set(mutableSetOf(HostManager.host))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -16,9 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
import org.gradle.api.artifacts.Configuration
|
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer
|
import org.gradle.api.artifacts.ConfigurationContainer
|
||||||
import org.gradle.api.file.ProjectLayout
|
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
@@ -31,8 +29,7 @@ open class KotlinNativeDynamicImpl @Inject constructor(
|
|||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
component: KotlinNativeMainComponent,
|
component: KotlinNativeMainComponent,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
projectLayout: ProjectLayout,
|
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
fileOperations: FileOperations
|
fileOperations: FileOperations
|
||||||
@@ -40,8 +37,7 @@ open class KotlinNativeDynamicImpl @Inject constructor(
|
|||||||
name,
|
name,
|
||||||
baseName,
|
baseName,
|
||||||
component,
|
component,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.DYNAMIC,
|
CompilerOutputKind.DYNAMIC,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
|
|||||||
+2
-3
@@ -40,7 +40,7 @@ open class KotlinNativeExecutableImpl @Inject constructor(
|
|||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
component: KotlinNativeMainComponent,
|
component: KotlinNativeMainComponent,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
projectLayout: ProjectLayout,
|
projectLayout: ProjectLayout,
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
@@ -48,8 +48,7 @@ open class KotlinNativeExecutableImpl @Inject constructor(
|
|||||||
) : AbstractKotlinNativeBinary(name,
|
) : AbstractKotlinNativeBinary(name,
|
||||||
baseName,
|
baseName,
|
||||||
component,
|
component,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.PROGRAM,
|
CompilerOutputKind.PROGRAM,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
|
|||||||
+3
-5
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
|||||||
|
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer
|
import org.gradle.api.artifacts.ConfigurationContainer
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.file.ProjectLayout
|
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
@@ -37,8 +36,7 @@ open class KotlinNativeFrameworkImpl @Inject constructor(
|
|||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
component: KotlinNativeMainComponent,
|
component: KotlinNativeMainComponent,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
projectLayout: ProjectLayout,
|
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
fileOperations: FileOperations
|
fileOperations: FileOperations
|
||||||
@@ -46,8 +44,7 @@ open class KotlinNativeFrameworkImpl @Inject constructor(
|
|||||||
name,
|
name,
|
||||||
baseName,
|
baseName,
|
||||||
component,
|
component,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.FRAMEWORK,
|
CompilerOutputKind.FRAMEWORK,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
@@ -72,6 +69,7 @@ open class KotlinNativeFrameworkImpl @Inject constructor(
|
|||||||
getImplementationDependencies().extendsFrom(this)
|
getImplementationDependencies().extendsFrom(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Fix embedding
|
||||||
override var embedBitcode: BitcodeEmbeddingMode = if (konanTarget.family == Family.IOS) {
|
override var embedBitcode: BitcodeEmbeddingMode = if (konanTarget.family == Family.IOS) {
|
||||||
buildType.iosEmbedBitcode
|
buildType.iosEmbedBitcode
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+2
-3
@@ -40,7 +40,7 @@ open class KotlinNativeLibraryImpl @Inject constructor(
|
|||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
component: KotlinNativeMainComponent,
|
component: KotlinNativeMainComponent,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
projectLayout: ProjectLayout,
|
projectLayout: ProjectLayout,
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
@@ -48,8 +48,7 @@ open class KotlinNativeLibraryImpl @Inject constructor(
|
|||||||
) : AbstractKotlinNativeBinary(name,
|
) : AbstractKotlinNativeBinary(name,
|
||||||
baseName,
|
baseName,
|
||||||
component,
|
component,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.LIBRARY,
|
CompilerOutputKind.LIBRARY,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
|
|||||||
+21
-27
@@ -23,15 +23,14 @@ import org.gradle.api.component.SoftwareComponent
|
|||||||
import org.gradle.api.internal.component.SoftwareComponentInternal
|
import org.gradle.api.internal.component.SoftwareComponentInternal
|
||||||
import org.gradle.api.internal.component.UsageContext
|
import org.gradle.api.internal.component.UsageContext
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.internal.provider.LockableSetProperty
|
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.provider.SetProperty
|
||||||
import org.gradle.internal.Describables
|
import org.gradle.internal.Describables
|
||||||
import org.gradle.internal.DisplayName
|
import org.gradle.internal.DisplayName
|
||||||
import org.gradle.language.ProductionComponent
|
import org.gradle.language.ProductionComponent
|
||||||
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
|
||||||
import org.gradle.language.nativeplatform.internal.PublicationAwareComponent
|
import org.gradle.language.nativeplatform.internal.PublicationAwareComponent
|
||||||
import org.jetbrains.kotlin.gradle.plugin.EXPECTED_BY_CONFIG_NAME
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary
|
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary
|
||||||
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetImpl
|
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetImpl
|
||||||
@@ -50,7 +49,7 @@ open class KotlinNativeMainComponent @Inject constructor(
|
|||||||
|
|
||||||
override fun getDisplayName(): DisplayName = Describables.withTypeAndName("Kotlin/Native component", name)
|
override fun getDisplayName(): DisplayName = Describables.withTypeAndName("Kotlin/Native component", name)
|
||||||
|
|
||||||
val outputKinds = LockableSetProperty(objectFactory.setProperty(OutputKind::class.java)).apply {
|
val outputKinds: SetProperty<OutputKind> = objectFactory.setProperty(OutputKind::class.java).apply {
|
||||||
set(mutableSetOf(OutputKind.KLIBRARY))
|
set(mutableSetOf(OutputKind.KLIBRARY))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,42 +60,37 @@ open class KotlinNativeMainComponent @Inject constructor(
|
|||||||
extendsFrom(getImplementationDependencies())
|
extendsFrom(getImplementationDependencies())
|
||||||
}
|
}
|
||||||
|
|
||||||
private val mainPublication = KotlinNativeVariant()
|
private val mainPublication = KotlinNativePublicationVariants()
|
||||||
|
|
||||||
override fun getMainPublication(): KotlinNativeVariant = mainPublication
|
override fun getMainPublication(): KotlinNativePublicationVariants = mainPublication
|
||||||
|
|
||||||
private val developmentBinaryProperty: Property<KotlinNativeBinary> =
|
private val developmentBinaryProperty: Property<KotlinNativeBinary> =
|
||||||
objectFactory.property(KotlinNativeBinary::class.java)
|
objectFactory.property(KotlinNativeBinary::class.java)
|
||||||
|
|
||||||
override fun getDevelopmentBinary() = developmentBinaryProperty
|
override fun getDevelopmentBinary() = developmentBinaryProperty
|
||||||
|
|
||||||
private fun <T : KotlinNativeBinary> addBinary(type: Class<T>, identity: NativeVariantIdentity): T =
|
private fun <T : KotlinNativeBinary> addBinary(type: Class<T>, variant: KotlinNativeVariant): T {
|
||||||
objectFactory.newInstance(
|
val name = "$name${variant.identity.name.capitalize()}"
|
||||||
type,
|
return objectFactory.newInstance(type, name, baseName, dependencies, this, variant).apply {
|
||||||
"$name${identity.name.capitalize()}",
|
binaries.add(this)
|
||||||
baseName,
|
}
|
||||||
dependencies,
|
}
|
||||||
this,
|
|
||||||
identity
|
|
||||||
).apply {
|
|
||||||
binaries.add(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
private inline fun <reified T : KotlinNativeBinary> addBinary(identity: NativeVariantIdentity): T =
|
private inline fun <reified T : KotlinNativeBinary> addBinary(variant: KotlinNativeVariant): T =
|
||||||
addBinary(T::class.java, identity)
|
addBinary(T::class.java, variant)
|
||||||
|
|
||||||
fun addExecutable(identity: NativeVariantIdentity) = addBinary<KotlinNativeExecutableImpl>(identity)
|
fun addExecutable(variant: KotlinNativeVariant) = addBinary<KotlinNativeExecutableImpl>(variant)
|
||||||
fun addLibrary(identity: NativeVariantIdentity) = addBinary<KotlinNativeLibraryImpl>(identity)
|
fun addLibrary(variant: KotlinNativeVariant) = addBinary<KotlinNativeLibraryImpl>(variant)
|
||||||
fun addFramework(identity: NativeVariantIdentity) = addBinary<KotlinNativeFrameworkImpl>(identity)
|
fun addFramework(variant: KotlinNativeVariant) = addBinary<KotlinNativeFrameworkImpl>(variant)
|
||||||
|
|
||||||
fun addBinary(kind: OutputKind, identity: NativeVariantIdentity) = addBinary(kind.binaryClass, identity)
|
fun addBinary(kind: OutputKind, variant: KotlinNativeVariant) = addBinary(kind.binaryClass, variant)
|
||||||
|
|
||||||
// region Kotlin/Native variant
|
// region Kotlin/Native component passed to Gradle to determine publication variants
|
||||||
// TODO: SoftwareComponentInternal will be replaced with ComponentWithVariants by Gradle
|
// TODO: SoftwareComponentInternal will be replaced with ComponentWithVariants by Gradle
|
||||||
inner class KotlinNativeVariant: ComponentWithVariants, SoftwareComponentInternal {
|
inner class KotlinNativePublicationVariants: ComponentWithVariants, SoftwareComponentInternal {
|
||||||
|
|
||||||
private val variants = mutableSetOf<SoftwareComponent>()
|
private val variants = WrapUtil.toDomainObjectSet(SoftwareComponent::class.java)
|
||||||
override fun getVariants() = variants
|
override fun getVariants(): MutableSet<SoftwareComponent> = variants
|
||||||
|
|
||||||
override fun getName(): String = this@KotlinNativeMainComponent.name
|
override fun getName(): String = this@KotlinNativeMainComponent.name
|
||||||
|
|
||||||
|
|||||||
+58
@@ -16,11 +16,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.internal.component.UsageContext
|
||||||
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.internal.os.OperatingSystem
|
import org.gradle.internal.os.OperatingSystem
|
||||||
|
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
||||||
import org.gradle.nativeplatform.OperatingSystemFamily
|
import org.gradle.nativeplatform.OperatingSystemFamily
|
||||||
|
import org.gradle.nativeplatform.TargetMachineFactory
|
||||||
import org.gradle.nativeplatform.platform.NativePlatform
|
import org.gradle.nativeplatform.platform.NativePlatform
|
||||||
import org.gradle.nativeplatform.platform.internal.*
|
import org.gradle.nativeplatform.platform.internal.*
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
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
|
||||||
|
|
||||||
@@ -52,3 +59,54 @@ class DefaultKotlinNativePlatform(name: String, override val target: KonanTarget
|
|||||||
override fun withArchitecture(architecture: ArchitectureInternal?) = notImplemented()
|
override fun withArchitecture(architecture: ArchitectureInternal?) = notImplemented()
|
||||||
override fun architecture(name: String?) = notImplemented()
|
override fun architecture(name: String?) = notImplemented()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NativeVariantIdentity constructor was changed in Gradle 5.1
|
||||||
|
// So we have to use reflection to create instance of this class in earlier versions.
|
||||||
|
internal fun compatibleVariantIdentity(
|
||||||
|
project: Project,
|
||||||
|
name: String,
|
||||||
|
baseName: Provider<String>,
|
||||||
|
group: Provider<String>,
|
||||||
|
version: Provider<String>,
|
||||||
|
debuggable: Boolean,
|
||||||
|
optimized: Boolean,
|
||||||
|
target: KonanTarget,
|
||||||
|
linkUsage: UsageContext?,
|
||||||
|
runtimeUsage: UsageContext?
|
||||||
|
): NativeVariantIdentity =
|
||||||
|
if (isGradleVersionAtLeast(5, 1)) {
|
||||||
|
val targetMachineFactory = (project as ProjectInternal).services.get(TargetMachineFactory::class.java)
|
||||||
|
NativeVariantIdentity(
|
||||||
|
name,
|
||||||
|
baseName,
|
||||||
|
group,
|
||||||
|
version,
|
||||||
|
debuggable,
|
||||||
|
optimized,
|
||||||
|
targetMachineFactory.os(target.family.name),
|
||||||
|
linkUsage,
|
||||||
|
runtimeUsage
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
NativeVariantIdentity::class.java.getConstructor(
|
||||||
|
String::class.java,
|
||||||
|
Provider::class.java,
|
||||||
|
Provider::class.java,
|
||||||
|
Provider::class.java,
|
||||||
|
Boolean::class.javaPrimitiveType,
|
||||||
|
Boolean::class.javaPrimitiveType,
|
||||||
|
OperatingSystemFamily::class.java,
|
||||||
|
UsageContext::class.java,
|
||||||
|
UsageContext::class.java
|
||||||
|
).newInstance(
|
||||||
|
name,
|
||||||
|
baseName,
|
||||||
|
group,
|
||||||
|
version,
|
||||||
|
debuggable,
|
||||||
|
optimized,
|
||||||
|
target.getGradleOSFamily(project.objects),
|
||||||
|
linkUsage,
|
||||||
|
runtimeUsage
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
+2
-6
@@ -16,9 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
import org.gradle.api.artifacts.Configuration
|
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer
|
import org.gradle.api.artifacts.ConfigurationContainer
|
||||||
import org.gradle.api.file.ProjectLayout
|
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
@@ -32,8 +30,7 @@ open class KotlinNativeStaticImpl @Inject constructor(
|
|||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
component: KotlinNativeMainComponent,
|
component: KotlinNativeMainComponent,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
projectLayout: ProjectLayout,
|
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
fileOperations: FileOperations
|
fileOperations: FileOperations
|
||||||
@@ -41,8 +38,7 @@ open class KotlinNativeStaticImpl @Inject constructor(
|
|||||||
name,
|
name,
|
||||||
baseName,
|
baseName,
|
||||||
component,
|
component,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.STATIC,
|
CompilerOutputKind.STATIC,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
|
|||||||
+2
-6
@@ -17,10 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.artifacts.Configuration
|
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer
|
import org.gradle.api.artifacts.ConfigurationContainer
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.file.ProjectLayout
|
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
@@ -37,16 +35,14 @@ open class KotlinNativeTestExecutableImpl @Inject constructor(
|
|||||||
componentDependencies: KotlinNativeDependenciesImpl,
|
componentDependencies: KotlinNativeDependenciesImpl,
|
||||||
val testComponent: KotlinNativeTestSuite,
|
val testComponent: KotlinNativeTestSuite,
|
||||||
val mainSources: KotlinNativeSourceSet,
|
val mainSources: KotlinNativeSourceSet,
|
||||||
identity: KotlinNativeVariantIdentity,
|
variant: KotlinNativeVariant,
|
||||||
objects: ObjectFactory,
|
objects: ObjectFactory,
|
||||||
projectLayout: ProjectLayout,
|
|
||||||
configurations: ConfigurationContainer,
|
configurations: ConfigurationContainer,
|
||||||
fileOperations: FileOperations
|
fileOperations: FileOperations
|
||||||
) : AbstractKotlinNativeBinary(name,
|
) : AbstractKotlinNativeBinary(name,
|
||||||
baseName,
|
baseName,
|
||||||
testComponent,
|
testComponent,
|
||||||
identity,
|
variant,
|
||||||
projectLayout,
|
|
||||||
CompilerOutputKind.PROGRAM,
|
CompilerOutputKind.PROGRAM,
|
||||||
objects,
|
objects,
|
||||||
componentDependencies,
|
componentDependencies,
|
||||||
|
|||||||
+3
-3
@@ -51,15 +51,15 @@ open class KotlinNativeTestSuite @Inject constructor(
|
|||||||
|
|
||||||
override fun getTestBinary() = testBinaryProperty
|
override fun getTestBinary() = testBinaryProperty
|
||||||
|
|
||||||
fun addTestExecutable(identity: NativeVariantIdentity): KotlinNativeTestExecutable =
|
fun addTestExecutable(variant: KotlinNativeVariant): KotlinNativeTestExecutable =
|
||||||
objectFactory.newInstance(
|
objectFactory.newInstance(
|
||||||
KotlinNativeTestExecutableImpl::class.java,
|
KotlinNativeTestExecutableImpl::class.java,
|
||||||
"$name${identity.name.capitalize()}",
|
"$name${variant.identity.name.capitalize()}",
|
||||||
getBaseName(),
|
getBaseName(),
|
||||||
dependencies,
|
dependencies,
|
||||||
this,
|
this,
|
||||||
testedComponent.sources,
|
testedComponent.sources,
|
||||||
identity
|
variant
|
||||||
).apply {
|
).apply {
|
||||||
binaries.add(this)
|
binaries.add(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-13
@@ -16,13 +16,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.component.UsageContext
|
import org.gradle.api.internal.component.UsageContext
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
|
|
||||||
open class KotlinNativeVariantIdentity(
|
class KotlinNativeVariant(
|
||||||
name: String,
|
name: String,
|
||||||
baseName: Provider<String>,
|
baseName: Provider<String>,
|
||||||
group: Provider<String>,
|
group: Provider<String>,
|
||||||
@@ -31,17 +31,21 @@ open class KotlinNativeVariantIdentity(
|
|||||||
val buildType: KotlinNativeBuildType,
|
val buildType: KotlinNativeBuildType,
|
||||||
linkUsage: UsageContext?,
|
linkUsage: UsageContext?,
|
||||||
runtimeUsage: UsageContext?,
|
runtimeUsage: UsageContext?,
|
||||||
objects: ObjectFactory
|
project: Project
|
||||||
) : NativeVariantIdentity(
|
|
||||||
name,
|
|
||||||
baseName,
|
|
||||||
group,
|
|
||||||
version,
|
|
||||||
buildType.debuggable,
|
|
||||||
buildType.optimized,
|
|
||||||
konanTarget.getGradleOSFamily(objects),
|
|
||||||
linkUsage,
|
|
||||||
runtimeUsage
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
val identity: NativeVariantIdentity = compatibleVariantIdentity(
|
||||||
|
project,
|
||||||
|
name,
|
||||||
|
baseName,
|
||||||
|
group,
|
||||||
|
version,
|
||||||
|
buildType.debuggable,
|
||||||
|
buildType.optimized,
|
||||||
|
konanTarget,
|
||||||
|
linkUsage,
|
||||||
|
runtimeUsage
|
||||||
|
)
|
||||||
|
|
||||||
val targetPlatform = DefaultKotlinNativePlatform(konanTarget)
|
val targetPlatform = DefaultKotlinNativePlatform(konanTarget)
|
||||||
}
|
}
|
||||||
+14
-9
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.gradle.plugin.experimental.internal.*
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.OutputKind.Companion.getDevelopmentKind
|
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.OutputKind.Companion.getDevelopmentKind
|
||||||
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetFactory
|
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetImpl
|
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSetImpl
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -77,14 +78,18 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractKotlinNativeComponent.getAndLockTargets(): Set<KonanTarget> {
|
private fun AbstractKotlinNativeComponent.getAndLockTargets(): Set<KonanTarget> {
|
||||||
konanTargets.lockNow()
|
if (isGradleVersionAtLeast(5, 0)) {
|
||||||
|
konanTargets.finalizeValue()
|
||||||
|
}
|
||||||
return konanTargets.get().also {
|
return konanTargets.get().also {
|
||||||
require(it.isNotEmpty()) { "A Kotlin/Native target needs to be specified for the component." }
|
require(it.isNotEmpty()) { "A Kotlin/Native target needs to be specified for the component." }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinNativeMainComponent.getAndLockOutputKinds(): Set<OutputKind> {
|
private fun KotlinNativeMainComponent.getAndLockOutputKinds(): Set<OutputKind> {
|
||||||
outputKinds.lockNow()
|
if (isGradleVersionAtLeast(5, 0)) {
|
||||||
|
konanTargets.finalizeValue()
|
||||||
|
}
|
||||||
return outputKinds.get().also {
|
return outputKinds.get().also {
|
||||||
require(it.isNotEmpty()) { "An output kind needs to be specified for the component." }
|
require(it.isNotEmpty()) { "An output kind needs to be specified for the component." }
|
||||||
}
|
}
|
||||||
@@ -124,18 +129,18 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Do we need something like klibUsageContext?
|
// TODO: Do we need something like klibUsageContext?
|
||||||
val variantIdentity = KotlinNativeVariantIdentity(
|
val variant = KotlinNativeVariant(
|
||||||
variantName,
|
variantName,
|
||||||
component.baseName,
|
component.baseName,
|
||||||
group, version, target,
|
group, version, target,
|
||||||
buildType,
|
buildType,
|
||||||
linkUsageContext,
|
linkUsageContext,
|
||||||
runtimeUsageContext,
|
runtimeUsageContext,
|
||||||
objects
|
project
|
||||||
)
|
)
|
||||||
|
|
||||||
if (hostManager.isEnabled(target)) {
|
if (hostManager.isEnabled(target)) {
|
||||||
val binary = component.addBinary(kind, variantIdentity)
|
val binary = component.addBinary(kind, variant)
|
||||||
|
|
||||||
if (kind == developmentKind &&
|
if (kind == developmentKind &&
|
||||||
buildType == KotlinNativeBuildType.DEBUG &&
|
buildType == KotlinNativeBuildType.DEBUG &&
|
||||||
@@ -151,7 +156,7 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
|||||||
if (kind.publishable) {
|
if (kind.publishable) {
|
||||||
// Known but not buildable.
|
// Known but not buildable.
|
||||||
// It allows us to publish different parts of a multitarget library from differnt hosts.
|
// It allows us to publish different parts of a multitarget library from differnt hosts.
|
||||||
component.mainPublication.variants.add(variantIdentity)
|
component.mainPublication.variants.add(variant.identity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,18 +176,18 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
|||||||
val targetSuffix = createDimensionSuffix(target.name, targets)
|
val targetSuffix = createDimensionSuffix(target.name, targets)
|
||||||
val variantName = "${buildTypeSuffix}${targetSuffix}"
|
val variantName = "${buildTypeSuffix}${targetSuffix}"
|
||||||
|
|
||||||
val variantIdentity = KotlinNativeVariantIdentity(
|
val variant = KotlinNativeVariant(
|
||||||
variantName,
|
variantName,
|
||||||
component.getBaseName(),
|
component.getBaseName(),
|
||||||
group, version, target,
|
group, version, target,
|
||||||
buildType,
|
buildType,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
objects
|
project
|
||||||
)
|
)
|
||||||
|
|
||||||
if (hostManager.isEnabled(target)) {
|
if (hostManager.isEnabled(target)) {
|
||||||
val binary = component.addTestExecutable(variantIdentity)
|
val binary = component.addTestExecutable(variant)
|
||||||
if (target == HostManager.host) {
|
if (target == HostManager.host) {
|
||||||
component.testBinary.set(binary)
|
component.testBinary.set(binary)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ open class KonanArtifactContainer(val project: ProjectInternal)
|
|||||||
var targets: Iterable<String> = emptyList()
|
var targets: Iterable<String> = emptyList()
|
||||||
|
|
||||||
override fun create(name: String?): T =
|
override fun create(name: String?): T =
|
||||||
instantiator.newInstance(configClass.java, name, project, instantiator, targets)
|
instantiator.newInstance(configClass.java, name, project, targets)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val factories = mutableMapOf<KClass<out KonanBuildingConfig<*>>, KonanBuildingConfigFactory<*>>()
|
private val factories = mutableMapOf<KClass<out KonanBuildingConfig<*>>, KonanBuildingConfigFactory<*>>()
|
||||||
|
|||||||
+12
-17
@@ -17,27 +17,23 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.konan
|
package org.jetbrains.kotlin.gradle.plugin.konan
|
||||||
|
|
||||||
import groovy.lang.Closure
|
import groovy.lang.Closure
|
||||||
import org.gradle.api.Action
|
import org.gradle.api.*
|
||||||
import org.gradle.api.InvalidUserDataException
|
|
||||||
import org.gradle.api.Named
|
|
||||||
import org.gradle.api.Task
|
|
||||||
import org.gradle.api.internal.DefaultNamedDomainObjectSet
|
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.api.plugins.BasePlugin
|
import org.gradle.api.plugins.BasePlugin
|
||||||
|
import org.gradle.api.plugins.ExtensionAware
|
||||||
import org.gradle.api.publish.maven.MavenPom
|
import org.gradle.api.publish.maven.MavenPom
|
||||||
import org.gradle.internal.reflect.Instantiator
|
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
|
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
/** Base class for all Kotlin/Native artifacts. */
|
/** Base class for all Kotlin/Native artifacts. */
|
||||||
abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: String,
|
abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: String,
|
||||||
type: Class<T>,
|
val type: Class<T>,
|
||||||
val project: ProjectInternal,
|
val project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
val targets: Iterable<String>)
|
val targets: Iterable<String>)
|
||||||
: KonanBuildingSpec, Named, DefaultNamedDomainObjectSet<T>(type, instantiator, { it.konanTarget.visibleName }) {
|
: KonanBuildingSpec, Named, DomainObjectSet<T> by WrapUtil.toDomainObjectSet(type) {
|
||||||
|
|
||||||
internal val mainVariant = KonanSoftwareComponent(project)
|
internal val mainVariant = KonanSoftwareComponent(project)
|
||||||
override fun getName() = name_
|
override fun getName() = name_
|
||||||
@@ -63,7 +59,13 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
project.logger.info("The target ${targetName} is not supported by the artifact $name")
|
project.logger.info("The target ${targetName} is not supported by the artifact $name")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (this[konanTarget] == null) super.add(createTask(konanTarget))
|
if (this[konanTarget] == null) {
|
||||||
|
val task = createTask(konanTarget)
|
||||||
|
add(task)
|
||||||
|
targetToTask[konanTarget] = task
|
||||||
|
// Allow accessing targets just by their names in Groovy DSL.
|
||||||
|
(this as? ExtensionAware)?.extensions?.add(konanTarget.visibleName, task)
|
||||||
|
}
|
||||||
|
|
||||||
if (targetName != konanTarget.visibleName) {
|
if (targetName != konanTarget.visibleName) {
|
||||||
createTargetAliasTaskIfDeclared(targetName)
|
createTargetAliasTaskIfDeclared(targetName)
|
||||||
@@ -89,13 +91,6 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
|
|
||||||
protected open fun targetIsSupported(target: KonanTarget): Boolean = true
|
protected open fun targetIsSupported(target: KonanTarget): Boolean = true
|
||||||
|
|
||||||
override fun didAdd(toAdd: T) {
|
|
||||||
super.didAdd(toAdd)
|
|
||||||
|
|
||||||
assert(toAdd.konanTarget !in targetToTask)
|
|
||||||
targetToTask[toAdd.konanTarget] = toAdd
|
|
||||||
}
|
|
||||||
|
|
||||||
data class OutputPlacement(val destinationDir: File, val artifactName: String)
|
data class OutputPlacement(val destinationDir: File, val artifactName: String)
|
||||||
|
|
||||||
// There are two options for output placement.
|
// There are two options for output placement.
|
||||||
|
|||||||
+1
-13
@@ -20,7 +20,6 @@ import groovy.lang.Closure
|
|||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.internal.reflect.Instantiator
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
||||||
import org.jetbrains.kotlin.konan.target.Family
|
import org.jetbrains.kotlin.konan.target.Family
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
@@ -30,9 +29,8 @@ import java.io.File
|
|||||||
abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
||||||
type: Class<T>,
|
type: Class<T>,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String>)
|
targets: Iterable<String>)
|
||||||
: KonanBuildingConfig<T>(name, type, project, instantiator, targets), KonanCompileSpec {
|
: KonanBuildingConfig<T>(name, type, project, targets), KonanCompileSpec {
|
||||||
|
|
||||||
protected abstract val typeForDescription: String
|
protected abstract val typeForDescription: String
|
||||||
|
|
||||||
@@ -76,12 +74,10 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
|||||||
|
|
||||||
open class KonanProgram(name: String,
|
open class KonanProgram(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets
|
targets: Iterable<String> = project.konanExtension.targets
|
||||||
) : KonanCompileConfig<KonanCompileProgramTask>(name,
|
) : KonanCompileConfig<KonanCompileProgramTask>(name,
|
||||||
KonanCompileProgramTask::class.java,
|
KonanCompileProgramTask::class.java,
|
||||||
project,
|
project,
|
||||||
instantiator,
|
|
||||||
targets
|
targets
|
||||||
) {
|
) {
|
||||||
override val typeForDescription: String
|
override val typeForDescription: String
|
||||||
@@ -93,12 +89,10 @@ open class KonanProgram(name: String,
|
|||||||
|
|
||||||
open class KonanDynamic(name: String,
|
open class KonanDynamic(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets)
|
targets: Iterable<String> = project.konanExtension.targets)
|
||||||
: KonanCompileConfig<KonanCompileDynamicTask>(name,
|
: KonanCompileConfig<KonanCompileDynamicTask>(name,
|
||||||
KonanCompileDynamicTask::class.java,
|
KonanCompileDynamicTask::class.java,
|
||||||
project,
|
project,
|
||||||
instantiator,
|
|
||||||
targets
|
targets
|
||||||
) {
|
) {
|
||||||
override val typeForDescription: String
|
override val typeForDescription: String
|
||||||
@@ -112,12 +106,10 @@ open class KonanDynamic(name: String,
|
|||||||
|
|
||||||
open class KonanFramework(name: String,
|
open class KonanFramework(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets)
|
targets: Iterable<String> = project.konanExtension.targets)
|
||||||
: KonanCompileConfig<KonanCompileFrameworkTask>(name,
|
: KonanCompileConfig<KonanCompileFrameworkTask>(name,
|
||||||
KonanCompileFrameworkTask::class.java,
|
KonanCompileFrameworkTask::class.java,
|
||||||
project,
|
project,
|
||||||
instantiator,
|
|
||||||
targets
|
targets
|
||||||
) {
|
) {
|
||||||
override val typeForDescription: String
|
override val typeForDescription: String
|
||||||
@@ -132,12 +124,10 @@ open class KonanFramework(name: String,
|
|||||||
|
|
||||||
open class KonanLibrary(name: String,
|
open class KonanLibrary(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets)
|
targets: Iterable<String> = project.konanExtension.targets)
|
||||||
: KonanCompileConfig<KonanCompileLibraryTask>(name,
|
: KonanCompileConfig<KonanCompileLibraryTask>(name,
|
||||||
KonanCompileLibraryTask::class.java,
|
KonanCompileLibraryTask::class.java,
|
||||||
project,
|
project,
|
||||||
instantiator,
|
|
||||||
targets
|
targets
|
||||||
) {
|
) {
|
||||||
override val typeForDescription: String
|
override val typeForDescription: String
|
||||||
@@ -149,12 +139,10 @@ open class KonanLibrary(name: String,
|
|||||||
|
|
||||||
open class KonanBitcode(name: String,
|
open class KonanBitcode(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets)
|
targets: Iterable<String> = project.konanExtension.targets)
|
||||||
: KonanCompileConfig<KonanCompileBitcodeTask>(name,
|
: KonanCompileConfig<KonanCompileBitcodeTask>(name,
|
||||||
KonanCompileBitcodeTask::class.java,
|
KonanCompileBitcodeTask::class.java,
|
||||||
project,
|
project,
|
||||||
instantiator,
|
|
||||||
targets
|
targets
|
||||||
) {
|
) {
|
||||||
override val typeForDescription: String
|
override val typeForDescription: String
|
||||||
|
|||||||
+1
-3
@@ -21,7 +21,6 @@ import org.gradle.api.Action
|
|||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.internal.reflect.Instantiator
|
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.KonanInteropSpec.IncludeDirectoriesSpec
|
import org.jetbrains.kotlin.gradle.plugin.konan.KonanInteropSpec.IncludeDirectoriesSpec
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanInteropTask
|
||||||
@@ -29,9 +28,8 @@ import java.io.File
|
|||||||
|
|
||||||
open class KonanInteropLibrary(name: String,
|
open class KonanInteropLibrary(name: String,
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
instantiator: Instantiator,
|
|
||||||
targets: Iterable<String> = project.konanExtension.targets
|
targets: Iterable<String> = project.konanExtension.targets
|
||||||
) : KonanBuildingConfig<KonanInteropTask>(name, KonanInteropTask::class.java, project, instantiator, targets),
|
) : KonanBuildingConfig<KonanInteropTask>(name, KonanInteropTask::class.java, project, targets),
|
||||||
KonanInteropSpec
|
KonanInteropSpec
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -30,10 +30,9 @@ import org.gradle.api.internal.tasks.DefaultTaskDependency
|
|||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.language.cpp.CppBinary
|
import org.gradle.language.cpp.CppBinary
|
||||||
import org.gradle.language.cpp.internal.DefaultUsageContext
|
import org.gradle.language.cpp.internal.DefaultUsageContext
|
||||||
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
|
||||||
import org.gradle.nativeplatform.Linkage
|
import org.gradle.nativeplatform.Linkage
|
||||||
import org.gradle.nativeplatform.OperatingSystemFamily
|
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.compatibleVariantIdentity
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.*
|
import org.jetbrains.kotlin.gradle.plugin.konan.*
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
@@ -128,16 +127,20 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
|||||||
override fun getAttributes(): AttributeContainer = platformConfiguration.attributes
|
override fun getAttributes(): AttributeContainer = platformConfiguration.attributes
|
||||||
override fun getGlobalExcludes(): Set<ExcludeRule> = emptySet()
|
override fun getGlobalExcludes(): Set<ExcludeRule> = emptySet()
|
||||||
}, platformConfiguration.allArtifacts, platformConfiguration)
|
}, platformConfiguration.allArtifacts, platformConfiguration)
|
||||||
konanSoftwareComponent.addVariant(NativeVariantIdentity(
|
konanSoftwareComponent.addVariant(
|
||||||
|
compatibleVariantIdentity(
|
||||||
|
project,
|
||||||
variantName,
|
variantName,
|
||||||
project.provider{ artifactName },
|
project.provider{ artifactName },
|
||||||
project.provider{ project.group.toString() },
|
project.provider{ project.group.toString() },
|
||||||
project.provider{ project.version.toString() },
|
project.provider{ project.version.toString() },
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
target.asOperatingSystemFamily(),
|
target,
|
||||||
context,
|
context,
|
||||||
null))
|
null
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,9 +157,6 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
|||||||
fun destinationDir(dir: Any) {
|
fun destinationDir(dir: Any) {
|
||||||
destinationDir = project.file(dir)
|
destinationDir = project.file(dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KonanTarget.asOperatingSystemFamily(): OperatingSystemFamily = project.objects.named(OperatingSystemFamily::class.java, family.name)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Task building an artifact with libraries */
|
/** Task building an artifact with libraries */
|
||||||
|
|||||||
+1
@@ -134,6 +134,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
addKey("-opt", enableOptimizations)
|
addKey("-opt", enableOptimizations)
|
||||||
addKey("-ea", enableAssertions)
|
addKey("-ea", enableAssertions)
|
||||||
addKey("-Xtime", measureTime)
|
addKey("-Xtime", measureTime)
|
||||||
|
addKey("-Xprofile-phases", measureTime)
|
||||||
addKey("-nodefaultlibs", noDefaultLibs)
|
addKey("-nodefaultlibs", noDefaultLibs)
|
||||||
addKey("-Xmulti-platform", enableMultiplatform)
|
addKey("-Xmulti-platform", enableMultiplatform)
|
||||||
|
|
||||||
|
|||||||
-1
@@ -21,7 +21,6 @@ import org.gradle.api.GradleScriptException
|
|||||||
import org.gradle.api.tasks.Internal
|
import org.gradle.api.tasks.Internal
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.*
|
import org.jetbrains.kotlin.gradle.plugin.konan.*
|
||||||
import org.jetbrains.kotlin.konan.KonanVersion
|
|
||||||
import org.jetbrains.kotlin.konan.MetaVersion
|
import org.jetbrains.kotlin.konan.MetaVersion
|
||||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||||
import org.jetbrains.kotlin.konan.util.DependencySource
|
import org.jetbrains.kotlin.konan.util.DependencySource
|
||||||
|
|||||||
-4
@@ -20,10 +20,6 @@ import org.gradle.testkit.runner.BuildResult
|
|||||||
import org.gradle.testkit.runner.TaskOutcome
|
import org.gradle.testkit.runner.TaskOutcome
|
||||||
import spock.lang.Unroll
|
import spock.lang.Unroll
|
||||||
|
|
||||||
import java.nio.file.Files
|
|
||||||
import java.nio.file.Path
|
|
||||||
import java.nio.file.Paths
|
|
||||||
|
|
||||||
class IncrementalSpecification extends BaseKonanSpecification {
|
class IncrementalSpecification extends BaseKonanSpecification {
|
||||||
|
|
||||||
Tuple buildTwice(KonanProject project, String task = 'build', Closure change) {
|
Tuple buildTwice(KonanProject project, String task = 'build', Closure change) {
|
||||||
|
|||||||
+3
-3
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.gradle.plugin.test
|
|||||||
|
|
||||||
import org.gradle.testkit.runner.BuildResult
|
import org.gradle.testkit.runner.BuildResult
|
||||||
import org.gradle.testkit.runner.TaskOutcome
|
import org.gradle.testkit.runner.TaskOutcome
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import spock.lang.Requires
|
import spock.lang.Requires
|
||||||
import spock.lang.Unroll
|
import spock.lang.Unroll
|
||||||
|
|
||||||
@@ -50,8 +50,8 @@ class TaskSpecification extends BaseKonanSpecification {
|
|||||||
def result = project.createRunner().withArguments('build').build()
|
def result = project.createRunner().withArguments('build').build()
|
||||||
|
|
||||||
then:
|
then:
|
||||||
result.output.findAll(~/FRONTEND:\s+\d+\s+msec/).size() == 1
|
result.output.findAll(~/Frontend builds AST:\s+\d+\s+msec/).size() == 1
|
||||||
result.output.findAll(~/BACKEND:\s+\d+\s+msec/).size() == 1
|
result.output.findAll(~/IR Lowering:\s+\d+\s+msec/).size() == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unroll('Plugin should support #option option for cinterop')
|
@Unroll('Plugin should support #option option for cinterop')
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ import org.junit.Rule
|
|||||||
import org.junit.rules.TemporaryFolder
|
import org.junit.rules.TemporaryFolder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import kotlin.test.*
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
open class CompatibilityTests {
|
open class CompatibilityTests {
|
||||||
val tmpFolder = TemporaryFolder()
|
val tmpFolder = TemporaryFolder()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.junit.rules.TemporaryFolder
|
|||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.tools4j.spockito.Spockito
|
import org.tools4j.spockito.Spockito
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.test.*
|
import kotlin.test.Test
|
||||||
|
|
||||||
@RunWith(Spockito::class)
|
@RunWith(Spockito::class)
|
||||||
open class PropertiesAsEnvVariablesTest {
|
open class PropertiesAsEnvVariablesTest {
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ package org.jetbrains.kotlin.gradle.plugin.test
|
|||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.rules.TemporaryFolder
|
import org.junit.rules.TemporaryFolder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.test.*
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertFalse
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
class TaskTests {
|
class TaskTests {
|
||||||
val tmpFolder = TemporaryFolder()
|
val tmpFolder = TemporaryFolder()
|
||||||
|
|||||||
Reference in New Issue
Block a user