[K/N][build] Composite build with build.tools-conventions plugin
Adds convention plugin instead of sources inclusion inside the buildSrc, effectively reducing the amount of the code to be compiled in buildSrc. Merge-request: KT-MR-8898
This commit is contained in:
committed by
Space Team
parent
45637c1b94
commit
395e3e0f81
+36
-52
@@ -18,11 +18,10 @@ import org.gradle.nativeplatform.TargetMachine
|
||||
import org.gradle.nativeplatform.TargetMachineFactory
|
||||
import org.gradle.nativeplatform.platform.NativePlatform
|
||||
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.util.visibleName
|
||||
|
||||
interface KotlinNativePlatform: NativePlatform {
|
||||
interface KotlinNativePlatform : NativePlatform {
|
||||
val target: KonanTarget
|
||||
}
|
||||
|
||||
@@ -38,19 +37,18 @@ fun KonanTarget.getGradleCPU(): ArchitectureInternal = architecture.visibleName.
|
||||
Architectures.forInput(it)
|
||||
}
|
||||
|
||||
fun KonanTarget.toTargetMachine(objectFactory: ObjectFactory): TargetMachine = object: TargetMachine {
|
||||
fun KonanTarget.toTargetMachine(objectFactory: ObjectFactory): TargetMachine = object : TargetMachine {
|
||||
override fun getOperatingSystemFamily(): OperatingSystemFamily =
|
||||
getGradleOSFamily(objectFactory)
|
||||
getGradleOSFamily(objectFactory)
|
||||
|
||||
override fun getArchitecture(): MachineArchitecture =
|
||||
objectFactory.named(MachineArchitecture::class.java, this@toTargetMachine.architecture.visibleName)
|
||||
objectFactory.named(MachineArchitecture::class.java, this@toTargetMachine.architecture.visibleName)
|
||||
}
|
||||
|
||||
class DefaultKotlinNativePlatform(name: String, override val target: KonanTarget):
|
||||
class DefaultKotlinNativePlatform(name: String, override val target: KonanTarget) :
|
||||
DefaultNativePlatform(name, target.getGradleOS(), target.getGradleCPU()),
|
||||
KotlinNativePlatform
|
||||
{
|
||||
constructor(target: KonanTarget): this(target.visibleName, target)
|
||||
KotlinNativePlatform {
|
||||
constructor(target: KonanTarget) : this(target.visibleName, target)
|
||||
|
||||
// TODO: Extend ImmutableDefaultNativePlatform and get rid of these methods after switch to Gradle 4.8
|
||||
private fun notImplemented(): Nothing = throw NotImplementedError("Not Implemented in Kotlin/Native plugin")
|
||||
@@ -62,50 +60,36 @@ class DefaultKotlinNativePlatform(name: String, override val target: KonanTarget
|
||||
// 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?
|
||||
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
|
||||
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
|
||||
name,
|
||||
baseName,
|
||||
group,
|
||||
version,
|
||||
debuggable,
|
||||
optimized,
|
||||
target.getGradleOSFamily(project.objects),
|
||||
linkUsage,
|
||||
runtimeUsage
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -342,7 +342,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
// If the JDK that was set is not available get the JDK 11 as a default
|
||||
service.launcherFor(object : Action<JavaToolchainSpec> {
|
||||
override fun execute(toolchainSpec: JavaToolchainSpec) {
|
||||
toolchainSpec.languageVersion.set(JavaLanguageVersion.of(JdkMajorVersion.JDK_11_0.majorVersion))
|
||||
toolchainSpec.languageVersion.set(JavaLanguageVersion.of(11)) // FIXME: not resolved from buildSrc JdkMajorVersion.JDK_11_0.majorVersion))
|
||||
}
|
||||
}).get()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user