|
|
@ -18,9 +18,11 @@ package com.google.samples.apps.nowinandroid
|
|
|
|
|
|
|
|
|
|
|
|
import com.android.build.api.dsl.CommonExtension
|
|
|
|
import com.android.build.api.dsl.CommonExtension
|
|
|
|
import org.gradle.api.Project
|
|
|
|
import org.gradle.api.Project
|
|
|
|
|
|
|
|
import org.gradle.api.provider.Provider
|
|
|
|
|
|
|
|
import org.gradle.kotlin.dsl.assign
|
|
|
|
|
|
|
|
import org.gradle.kotlin.dsl.configure
|
|
|
|
import org.gradle.kotlin.dsl.dependencies
|
|
|
|
import org.gradle.kotlin.dsl.dependencies
|
|
|
|
import org.gradle.kotlin.dsl.withType
|
|
|
|
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
|
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Configure Compose-specific options
|
|
|
|
* Configure Compose-specific options
|
|
|
@ -49,41 +51,17 @@ internal fun Project.configureAndroidCompose(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tasks.withType<KotlinCompile>().configureEach {
|
|
|
|
extensions.configure<ComposeCompilerGradlePluginExtension> {
|
|
|
|
kotlinOptions {
|
|
|
|
fun Provider<String>.onlyIfTrue() = flatMap { provider { it.takeIf(String::toBoolean) } }
|
|
|
|
freeCompilerArgs += buildComposeMetricsParameters()
|
|
|
|
|
|
|
|
freeCompilerArgs += stabilityConfiguration()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun Project.buildComposeMetricsParameters(): List<String> {
|
|
|
|
project.providers.gradleProperty("enableComposeCompilerMetrics")
|
|
|
|
val metricParameters = mutableListOf<String>()
|
|
|
|
.onlyIfTrue().flatMap { rootProject.layout.buildDirectory.dir("compose-metrics") }
|
|
|
|
val enableMetricsProvider = project.providers.gradleProperty("enableComposeCompilerMetrics")
|
|
|
|
.let(metricsDestination::set)
|
|
|
|
val relativePath = projectDir.relativeTo(rootDir)
|
|
|
|
|
|
|
|
val buildDir = layout.buildDirectory.get().asFile
|
|
|
|
project.providers.gradleProperty("enableComposeCompilerReports")
|
|
|
|
val enableMetrics = (enableMetricsProvider.orNull == "true")
|
|
|
|
.onlyIfTrue().flatMap { rootProject.layout.buildDirectory.dir("compose-reports") }
|
|
|
|
if (enableMetrics) {
|
|
|
|
.let(reportsDestination::set)
|
|
|
|
val metricsFolder = buildDir.resolve("compose-metrics").resolve(relativePath)
|
|
|
|
|
|
|
|
metricParameters.add("-P")
|
|
|
|
|
|
|
|
metricParameters.add(
|
|
|
|
|
|
|
|
"plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + metricsFolder.absolutePath,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val enableReportsProvider = project.providers.gradleProperty("enableComposeCompilerReports")
|
|
|
|
stabilityConfigurationFile = rootProject.layout.projectDirectory.file("compose_compiler_config.conf")
|
|
|
|
val enableReports = (enableReportsProvider.orNull == "true")
|
|
|
|
|
|
|
|
if (enableReports) {
|
|
|
|
|
|
|
|
val reportsFolder = buildDir.resolve("compose-reports").resolve(relativePath)
|
|
|
|
|
|
|
|
metricParameters.add("-P")
|
|
|
|
|
|
|
|
metricParameters.add(
|
|
|
|
|
|
|
|
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return metricParameters.toList()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun Project.stabilityConfiguration() = listOf(
|
|
|
|
|
|
|
|
"-P",
|
|
|
|
|
|
|
|
"plugin:androidx.compose.compiler.plugins.kotlin:stabilityConfigurationPath=${project.rootDir.absolutePath}/compose_compiler_config.conf",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|