Make native gradle plugin compatible with the MPP one
This commit is contained in:
committed by
Ilya Matveev
parent
82bdf2e56a
commit
c15407028e
+1
-1
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -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())
|
||||
|
||||
+3
-1
@@ -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,
|
||||
|
||||
+3
-1
@@ -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,
|
||||
|
||||
+7
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user