Make native gradle plugin compatible with the MPP one

This commit is contained in:
Ilya Matveev
2018-09-20 20:34:09 +03:00
committed by Ilya Matveev
parent 82bdf2e56a
commit c15407028e
5 changed files with 17 additions and 5 deletions
@@ -77,7 +77,7 @@ interface KotlinNativeBinary : ComponentWithDependencies, BuildableComponent, Co
val linkerOpts: List<String>
companion object {
val KONAN_TARGET_ATTRIBUTE = Attribute.of("org.gradle.native.kotlin.platform", String::class.java)
val KONAN_TARGET_ATTRIBUTE = Attribute.of("org.jetbrains.kotlin.native.target", String::class.java)
}
}
@@ -35,6 +35,7 @@ import org.gradle.language.nativeplatform.internal.ComponentWithNames
import org.gradle.language.nativeplatform.internal.Names
import org.gradle.nativeplatform.OperatingSystemFamily
import org.gradle.nativeplatform.toolchain.NativeToolChain
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.experimental.ComponentWithBaseName
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary
import org.jetbrains.kotlin.gradle.plugin.experimental.sourcesets.KotlinNativeSourceSet
@@ -105,9 +106,10 @@ abstract class AbstractKotlinNativeBinary(
// A configuration containing klibs.
override val klibs = configurations.create(names.withPrefix("klibs")).apply {
isCanBeConsumed = false
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, KotlinNativeUsage.KLIB))
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_API))
attributes.attribute(CppBinary.DEBUGGABLE_ATTRIBUTE, debuggable)
attributes.attribute(CppBinary.OPTIMIZED_ATTRIBUTE, optimized)
attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
attributes.attribute(KotlinNativeBinary.KONAN_TARGET_ATTRIBUTE, konanTarget.name)
attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, konanTarget.getGradleOSFamily(objects))
extendsFrom(getImplementationDependencies())
@@ -42,7 +42,9 @@ enum class OutputKind(
KotlinNativeLibraryImpl::class.java,
1,
null,
KotlinNativeUsage.KLIB
// Use JAVA_API here because the MPP plugin uses this usage for all artifacts in 1.3-RC.
// TODO: Change to KOTLIN_API with such change is merged into big Kotlin's 1.3.
Usage.JAVA_API
),
FRAMEWORK(
CompilerOutputKind.FRAMEWORK,
@@ -27,6 +27,7 @@ import org.gradle.language.cpp.CppBinary
import org.gradle.language.internal.DefaultComponentDependencies
import org.gradle.nativeplatform.OperatingSystemFamily
import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings
import org.jetbrains.kotlin.gradle.plugin.experimental.CInteropSettings.IncludeDirectories
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary
@@ -81,9 +82,10 @@ open class CInteropSettingsImpl @Inject constructor(
val objects = project.objects
isCanBeConsumed = false
isCanBeResolved = true
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, KotlinNativeUsage.KLIB))
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_API))
attributes.attribute(CppBinary.DEBUGGABLE_ATTRIBUTE, KotlinNativeBuildType.DEBUG.debuggable)
attributes.attribute(CppBinary.OPTIMIZED_ATTRIBUTE, KotlinNativeBuildType.DEBUG.optimized)
attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
attributes.attribute(KotlinNativeBinary.KONAN_TARGET_ATTRIBUTE, konanTarget.name)
attributes.attribute(
OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE,
@@ -32,6 +32,7 @@ import org.gradle.language.cpp.CppBinary.DEBUGGABLE_ATTRIBUTE
import org.gradle.language.cpp.CppBinary.OPTIMIZED_ATTRIBUTE
import org.gradle.language.cpp.internal.DefaultUsageContext
import org.gradle.nativeplatform.test.plugins.NativeTestingBasePlugin
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.experimental.KotlinNativeBinary.Companion.KONAN_TARGET_ATTRIBUTE
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.*
import org.jetbrains.kotlin.gradle.plugin.experimental.internal.OutputKind.Companion.getDevelopmentKind
@@ -69,6 +70,7 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
attribute(Usage.USAGE_ATTRIBUTE, usage)
attribute(DEBUGGABLE_ATTRIBUTE, buildType.debuggable)
attribute(OPTIMIZED_ATTRIBUTE, buildType.optimized)
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
attribute(KONAN_TARGET_ATTRIBUTE, target.name)
}
return DefaultUsageContext(variantName + usageContextSuffix, usage, attributes)
@@ -101,7 +103,11 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
val hostManager = HostManager()
for (kind in outputKinds) {
for (buildType in KotlinNativeBuildType.DEFAULT_BUILD_TYPES) {
val buildTypes = if (kind == OutputKind.KLIBRARY)
listOf(KotlinNativeBuildType.DEBUG)
else
KotlinNativeBuildType.DEFAULT_BUILD_TYPES
for (buildType in buildTypes) {
for (target in targets.filter { kind.availableFor(it) }) {
val buildTypeSuffix = buildType.name