128 lines
5.9 KiB
Groovy
128 lines
5.9 KiB
Groovy
import org.gradle.tooling.events.FinishEvent
|
|
import org.gradle.tooling.events.OperationCompletionListener
|
|
|
|
pluginManagement {
|
|
if (!gradle.root.hasProperty("mozconfig")){
|
|
apply from: file('mobile/android/gradle/mozconfig.gradle')
|
|
} else {
|
|
gradle.ext.mozconfig = gradle.root.mozconfig
|
|
}
|
|
|
|
repositories {
|
|
gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
|
|
maven {
|
|
url = repository
|
|
if (gradle.mozconfig.substs.ALLOW_INSECURE_GRADLE_REPOSITORIES) {
|
|
allowInsecureProtocol = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/config")
|
|
includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/dependencies")
|
|
includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/publicsuffixlist")
|
|
includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/fenix/plugins/apksize")
|
|
}
|
|
|
|
plugins {
|
|
id 'mozac.DependenciesPlugin'
|
|
}
|
|
|
|
// You might think topsrcdir is '.', but that's not true when the Gradle build
|
|
// is launched from within IntelliJ.
|
|
ext.topsrcdir = rootProject.projectDir.absolutePath
|
|
|
|
apply from: "${topsrcdir}/mobile/android/shared-settings.gradle"
|
|
apply from: "${topsrcdir}/mobile/android/autopublish-settings.gradle"
|
|
|
|
// Set the Android SDK location. This is the *least specific* mechanism, which
|
|
// is unfortunate: we'd prefer to use the *most specific* mechanism. That is,
|
|
// local.properties (first 'sdk.dir', then 'android.dir') and then the
|
|
// environment variable ANDROID_HOME will override this. That's unfortunate,
|
|
// but it's hard to automatically arrange better.
|
|
System.setProperty('android.home', gradle.mozconfig.substs.ANDROID_SDK_ROOT)
|
|
|
|
include ':annotations', ':messaging_example', ':port_messaging_example'
|
|
include ':geckoview'
|
|
include ':exoplayer2'
|
|
include ':android-components'
|
|
|
|
project(':annotations').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/annotations")
|
|
project(':geckoview').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/geckoview")
|
|
project(':exoplayer2').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/exoplayer2")
|
|
project(':android-components').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components")
|
|
|
|
if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "fenix") {
|
|
include ':fenix'
|
|
project(':fenix').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/fenix/app")
|
|
}
|
|
if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "focus") {
|
|
include ':focus-android'
|
|
project(':focus-android').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/focus-android/app")
|
|
}
|
|
if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "geckoview_example") {
|
|
include ':samples-browser'
|
|
include ':compose-browser'
|
|
include ':toolbar'
|
|
include ':geckoview_example'
|
|
include ':test_runner'
|
|
project(':test_runner').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/test_runner")
|
|
project(':geckoview_example').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/geckoview_example")
|
|
project(':samples-browser').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/browser")
|
|
project(':compose-browser').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/compose-browser")
|
|
project(':toolbar').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/toolbar")
|
|
}
|
|
|
|
if (hasProperty("androidFormatLintTest")) {
|
|
include ':androidFormatLintTest'
|
|
project(':androidFormatLintTest').projectDir = new File("${gradle.mozconfig.topsrcdir}/tools/lint/test/files/android-format")
|
|
}
|
|
|
|
project(':messaging_example').projectDir = new File('mobile/android/examples/messaging_example/app')
|
|
project(':port_messaging_example').projectDir = new File('mobile/android/examples/port_messaging_example/app')
|
|
|
|
// Print BUILDSTATUS lines for build profile markers.
|
|
//
|
|
// Listeners configured here are "more" global: they get events for (isolated)
|
|
// projects that use `includeBuild`.
|
|
//
|
|
// In addition, build events listeners implemented as build services are
|
|
// "configuration cache friendly"; task actions (`doFirst`, `doLast`, etc) are
|
|
// not.
|
|
|
|
def now() {
|
|
Instant now = Instant.now();
|
|
return BigDecimal.valueOf(now.getNano(), 9).add(now.getEpochSecond());
|
|
}
|
|
|
|
abstract class BuildStatusListener implements BuildService<BuildStatusListener.Params>, OperationCompletionListener {
|
|
interface Params extends BuildServiceParameters {
|
|
}
|
|
|
|
void onFinish(FinishEvent event) {
|
|
def operationResult = event.result
|
|
println("BUILDSTATUS ${BigDecimal.valueOf(operationResult.startTime, 3)} START_gradle-task ${event.descriptor.name}")
|
|
println("BUILDSTATUS ${BigDecimal.valueOf(operationResult.endTime, 3)} END_gradle-task ${event.descriptor.name}")
|
|
}
|
|
}
|
|
|
|
def shouldPrintBuildStatus = System.getenv("MACH") && !System.getenv("NO_BUILDSTATUS_MESSAGES")
|
|
|
|
if (shouldPrintBuildStatus) {
|
|
gradle.services.get(BuildEventsListenerRegistry).onTaskCompletion(
|
|
gradle.sharedServices.registerIfAbsent("buildStatus", BuildStatusListener.class) {}
|
|
)
|
|
|
|
gradle.addProjectEvaluationListener(new ProjectEvaluationListener() {
|
|
@Override
|
|
void beforeEvaluate(Project p) {
|
|
println("BUILDSTATUS ${now()} START_gradle:evaluate-project ${p.name}")
|
|
}
|
|
|
|
@Override
|
|
void afterEvaluate(Project p, ProjectState projectState) {
|
|
println("BUILDSTATUS ${now()} END_gradle:evaluate-project ${p.name}")
|
|
}
|
|
})
|
|
}
|