Skip to content

Commit

Permalink
[gradle, mpp] Add Gradle property for crosscompilation of klibs (1/2)
Browse files Browse the repository at this point in the history
Step #1: just convert enabledOnCurrentHostFor(Klib|Binaries)Compilation
to functions. This commit is a non-semantical change, next one will
add a parameter to the function
  • Loading branch information
dsavvinov committed Dec 21, 2023
1 parent bf207f7 commit 7e22fe3
Show file tree
Hide file tree
Showing 13 changed files with 17 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal object DisabledNativeTargetsChecker : KotlinGradleProjectChecker {

val disabledTargets = multiplatformExtension.awaitTargets()
.filterIsInstance<KotlinNativeTarget>()
.filter { !it.konanTarget.enabledOnCurrentHostForKlibCompilation }
.filter { !it.konanTarget.enabledOnCurrentHostForKlibCompilation() }
.map { it.name }

if (disabledTargets.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ internal class MetadataDependencyTransformationTaskInputs(
@get:NormalizeLineEndings
val hostSpecificMetadataConfigurationsToResolve: FileCollection = project.filesProvider {
kotlinSourceSet.internal.compilations
.filter { compilation -> if (compilation is KotlinNativeCompilation) compilation.konanTarget.enabledOnCurrentHostForKlibCompilation else true }
.filter { compilation -> if (compilation is KotlinNativeCompilation) compilation.konanTarget.enabledOnCurrentHostForKlibCompilation() else true }
.mapNotNull { compilation ->
compilation
.internal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ private object XcodeEnvironment {
}

private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): TaskProvider<out Task>? {
if (!framework.konanTarget.family.isAppleFamily || !framework.konanTarget.enabledOnCurrentHostForBinariesCompilation) return null
if (!framework.konanTarget.family.isAppleFamily || !framework.konanTarget.enabledOnCurrentHostForBinariesCompilation()) return null

val envTargets = XcodeEnvironment.targets
val needFatFramework = envTargets.size > 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ internal val KotlinCreateNativeCInteropTasksSideEffect = KotlinCompilationSideEf
it.description = "Generates Kotlin/Native interop library '${interop.name}' " +
"for compilation '${compilation.compilationName}'" +
"of target '${it.konanTarget.name}'."
it.enabled = compilation.konanTarget.enabledOnCurrentHostForKlibCompilation
it.enabled = compilation.konanTarget.enabledOnCurrentHostForKlibCompilation()
it.definitionFile.set(params.settings.definitionFile)
}

Expand All @@ -64,7 +64,7 @@ internal val KotlinCreateNativeCInteropTasksSideEffect = KotlinCompilationSideEf
createCInteropApiElementsKlibArtifact(compilation.target, interop, interopTask)

// Add the interop library in publication.
if (compilation.konanTarget.enabledOnCurrentHostForKlibCompilation) {
if (compilation.konanTarget.enabledOnCurrentHostForKlibCompilation()) {
createKlibArtifact(
compilation,
artifactFile = interopTask.map { it.outputFile },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ internal val KotlinCreateNativeCompileTasksSideEffect = KotlinCompilationSideEff
task.group = BasePlugin.BUILD_GROUP
task.description = "Compiles a klibrary from the '${compilationInfo.compilationName}' " +
"compilation in target '${compilationInfo.targetDisambiguationClassifier}'."
task.enabled = compilation.konanTarget.enabledOnCurrentHostForKlibCompilation
task.enabled = compilation.konanTarget.enabledOnCurrentHostForKlibCompilation()

task.destinationDirectory.set(project.klibOutputDirectory(compilationInfo).dir("klib"))
task.runViaBuildToolsApi.value(false).disallowChanges() // K/N is not yet supported
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,8 @@ package org.jetbrains.kotlin.gradle.targets.metadata
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.artifacts.result.ResolvedArtifactResult
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.Category.CATEGORY_ATTRIBUTE
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.Jar
import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.metadataTarget
Expand All @@ -23,7 +19,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.sources.*
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.native.internal.createCInteropMetadataDependencyClasspath
import org.jetbrains.kotlin.gradle.targets.native.internal.includeCommonizedCInteropMetadata
import org.jetbrains.kotlin.gradle.targets.native.internal.sharedCommonizerTarget
import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.jetbrains.kotlin.gradle.utils.*
Expand Down Expand Up @@ -227,7 +222,7 @@ class KotlinMetadataTargetConfigurator :
if (isHostSpecific) {
// This logic can be simplified, see KT-64523
val canCompileOnCurrentHost = platformCompilations.filterIsInstance<KotlinNativeCompilation>()
.all { it.konanTarget.enabledOnCurrentHostForKlibCompilation }
.all { it.konanTarget.enabledOnCurrentHostForKlibCompilation() }
if (!canCompileOnCurrentHost) {
// Then we don't have any platform module to put this compiled source set to, so disable the compilation task:
compileKotlinTaskProvider.configure { it.enabled = false }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ private fun Project.createLinkTask(binary: NativeBinary) {
task.description = "Links ${binary.outputKind.description} '${binary.name}' for a target '${target.name}'."
task.dependsOn(compilation.compileTaskProvider)

task.enabled = binary.konanTarget.enabledOnCurrentHostForBinariesCompilation
task.enabled = binary.konanTarget.enabledOnCurrentHostForBinariesCompilation()
task.konanPropertiesService.set(konanPropertiesBuildService)
task.usesService(konanPropertiesBuildService)
task.toolOptions.freeCompilerArgs.value(compilationCompilerOptions.options.freeCompilerArgs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ abstract class KotlinNativeTarget @Inject constructor(
get() = disambiguateName("binaries")

override val publishable: Boolean
get() = konanTarget.enabledOnCurrentHostForKlibCompilation
get() = konanTarget.enabledOnCurrentHostForKlibCompilation()

@ExperimentalKotlinGradlePluginApi
internal override val compilerOptions: KotlinNativeCompilerOptions = project.objects
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ internal val KonanTarget.isCurrentHost: Boolean
*
* Ideally, these APIs should be in [HostManager] instead of KGP-side wrappers. Refer to KT-64512 for that
*/
internal val KonanTarget.enabledOnCurrentHostForKlibCompilation
get() = HostManager().isEnabled(this)
internal fun KonanTarget.enabledOnCurrentHostForKlibCompilation() = HostManager().isEnabled(this)

internal val KonanTarget.enabledOnCurrentHostForBinariesCompilation
get() = HostManager().isEnabled(this)
internal fun KonanTarget.enabledOnCurrentHostForBinariesCompilation() = HostManager().isEnabled(this)
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ constructor(
{
// Avoid resolving these dependencies during task graph construction when we can't build the target:
@Suppress("DEPRECATION")
if (konanTarget.enabledOnCurrentHostForBinariesCompilation) compilation.compileDependencyFiles
if (konanTarget.enabledOnCurrentHostForBinariesCompilation()) compilation.compileDependencyFiles
else objectFactory.fileCollection()
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ abstract class AbstractKotlinNativeCompile<
override val libraries: ConfigurableFileCollection = objectFactory.fileCollection().from(
{
// Avoid resolving these dependencies during task graph construction when we can't build the target:
if (konanTarget.enabledOnCurrentHostForKlibCompilation)
if (konanTarget.enabledOnCurrentHostForKlibCompilation())
objectFactory.fileCollection().from({ compilation.compileDependencyFiles })
else objectFactory.fileCollection()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class KotlinNativeFrameworkImpl(
val resultTask = project.registerTask<Task>(taskName) { task ->
task.group = BasePlugin.BUILD_GROUP
task.description = "Assemble ${kind.description} '$artifactName' for ${target.visibleName}."
task.enabled = target.enabledOnCurrentHostForBinariesCompilation
task.enabled = target.enabledOnCurrentHostForBinariesCompilation()
}

val librariesConfigurationName = project.registerLibsDependencies(target, artifactName, modules)
Expand Down Expand Up @@ -113,7 +113,7 @@ internal fun KotlinNativeArtifact.registerLinkFrameworkTask(
listOf(target, kind.compilerOutputKind)
) { task ->
task.description = "Assemble ${kind.description} '$name' for a target '${target.name}'."
task.enabled = target.enabledOnCurrentHostForBinariesCompilation
task.enabled = target.enabledOnCurrentHostForBinariesCompilation()
task.baseName.set(name)
task.destinationDir.set(destinationDir)
task.optimized.set(buildType.optimized)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class KotlinNativeLibraryImpl(
val resultTask = project.registerTask<Task>(taskName) { task ->
task.group = BasePlugin.BUILD_GROUP
task.description = "Assemble all types of registered '$artifactName' ${kind.description} for ${target.visibleName}."
task.enabled = target.enabledOnCurrentHostForBinariesCompilation
task.enabled = target.enabledOnCurrentHostForBinariesCompilation()
}
project.tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(resultTask)

Expand All @@ -87,7 +87,7 @@ class KotlinNativeLibraryImpl(
) { task ->
task.description = "Assemble ${kind.description} '$artifactName' for a target '${target.name}'."
task.destinationDir.set(project.layout.buildDirectory.dir("$outDir/${target.visibleName}/${buildType.visibleName}"))
task.enabled = target.enabledOnCurrentHostForBinariesCompilation
task.enabled = target.enabledOnCurrentHostForBinariesCompilation()
task.baseName.set(artifactName)
task.optimized.set(buildType.optimized)
task.debuggable.set(buildType.debuggable)
Expand Down

0 comments on commit 7e22fe3

Please sign in to comment.