mirror of
https://github.com/jlengrand/compose-multiplatform.git
synced 2026-03-10 08:11:20 +00:00
@@ -137,17 +137,6 @@ class ComposePlugin : Plugin<Project> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checkAndWarnAboutUsingJsPlugin(project)
|
||||
}
|
||||
|
||||
private fun checkAndWarnAboutUsingJsPlugin(project: Project) {
|
||||
val msg = "'$COMPOSE_PLUGIN_ID' plugin is not compatible with '$KOTLIN_JS_PLUGIN_ID' plugin. " +
|
||||
"Use '$KOTLIN_MPP_PLUGIN_ID' instead"
|
||||
|
||||
project.plugins.withId(KOTLIN_JS_PLUGIN_ID) {
|
||||
project.logger.error(msg)
|
||||
}
|
||||
}
|
||||
|
||||
class RedirectAndroidVariants : ComponentMetadataRule {
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.gradle.api.tasks.SourceSetContainer
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.compose.ComposeExtension
|
||||
import org.jetbrains.compose.web.WebExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
|
||||
internal val Project.composeExt: ComposeExtension?
|
||||
@@ -26,6 +27,9 @@ internal val Project.mppExt: KotlinMultiplatformExtension
|
||||
internal val Project.mppExtOrNull: KotlinMultiplatformExtension?
|
||||
get() = extensions.findByType(KotlinMultiplatformExtension::class.java)
|
||||
|
||||
internal val Project.kotlinJsExtOrNull: KotlinJsProjectExtension?
|
||||
get() = extensions.findByType(KotlinJsProjectExtension::class.java)
|
||||
|
||||
internal val Project.javaSourceSets: SourceSetContainer
|
||||
get() = if (GradleVersion.current() < GradleVersion.version("7.1")) {
|
||||
convention.getPlugin(JavaPluginConvention::class.java).sourceSets
|
||||
|
||||
@@ -7,8 +7,10 @@ package org.jetbrains.compose.web
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.jetbrains.compose.internal.kotlinJsExtOrNull
|
||||
import org.jetbrains.compose.internal.mppExt
|
||||
import org.jetbrains.compose.internal.mppExtOrNull
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||
|
||||
@@ -46,16 +48,36 @@ abstract class WebExtension : ExtensionAware {
|
||||
}
|
||||
|
||||
private fun defaultJsTargetsToConfigure(project: Project): Set<KotlinJsIrTarget> {
|
||||
val mppTargets = project.mppExtOrNull?.targets?.asMap?.values ?: emptySet()
|
||||
val jsIRTargets = mppTargets.filterIsInstanceTo(LinkedHashSet<KotlinJsIrTarget>())
|
||||
val mppExt = project.mppExtOrNull
|
||||
|
||||
return if (jsIRTargets.size > 1) {
|
||||
project.logger.error(
|
||||
"w: Default configuration for Compose Web is disabled: " +
|
||||
"multiple Kotlin JS IR targets are defined. " +
|
||||
"Specify Compose Web Kotlin targets by using `compose.web.targets()`"
|
||||
)
|
||||
emptySet()
|
||||
} else jsIRTargets
|
||||
if (mppExt != null) {
|
||||
val mppTargets = mppExt.targets.asMap.values
|
||||
val jsIRTargets = mppTargets.filterIsInstanceTo(LinkedHashSet<KotlinJsIrTarget>())
|
||||
|
||||
return if (jsIRTargets.size > 1) {
|
||||
project.logger.error(
|
||||
"w: Default configuration for Compose for Web is disabled: " +
|
||||
"multiple Kotlin JS IR targets are defined. " +
|
||||
"Specify Compose for Web Kotlin targets by using `compose.web.targets()`"
|
||||
)
|
||||
emptySet()
|
||||
} else jsIRTargets
|
||||
}
|
||||
|
||||
val jsExt = project.kotlinJsExtOrNull
|
||||
if (jsExt != null) {
|
||||
val target = jsExt.target
|
||||
return if (target is KotlinJsIrTarget) {
|
||||
setOf(target)
|
||||
} else {
|
||||
project.logger.error(
|
||||
"w: Default configuration for Compose for Web is disabled: " +
|
||||
"Compose for Web does not support legacy (non-IR) JS targets"
|
||||
)
|
||||
emptySet()
|
||||
}
|
||||
}
|
||||
|
||||
return emptySet()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user