settings.gradle (6432B)
1 import org.gradle.tooling.events.FinishEvent 2 import org.gradle.tooling.events.OperationCompletionListener 3 4 pluginManagement { 5 if (!gradle.root.hasProperty("mozconfig")){ 6 apply from: file('mobile/android/gradle/mozconfig.gradle') 7 } else { 8 gradle.ext.mozconfig = gradle.root.mozconfig 9 } 10 11 repositories { 12 gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository -> 13 maven { 14 url = repository 15 if (gradle.mozconfig.substs.ALLOW_INSECURE_GRADLE_REPOSITORIES) { 16 allowInsecureProtocol = true 17 } 18 } 19 } 20 } 21 22 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/config") 23 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/dependencies") 24 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/android-components/plugins/publicsuffixlist") 25 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/fenix/plugins/apksize") 26 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/gradle/plugins/apilint") 27 includeBuild("${rootProject.projectDir.absolutePath}/mobile/android/gradle/plugins/nimbus-gradle-plugin") 28 } 29 30 plugins { 31 id 'mozac.DependenciesPlugin' 32 } 33 34 // You might think topsrcdir is '.', but that's not true when the Gradle build 35 // is launched from within IntelliJ. 36 ext.topsrcdir = rootProject.projectDir.absolutePath 37 38 apply from: "${topsrcdir}/mobile/android/shared-settings.gradle" 39 apply from: "${topsrcdir}/mobile/android/autopublish-settings.gradle" 40 41 if (gradle.ext.mozconfig.substs.MOZ_APPSERVICES_IN_TREE) { 42 apply from: "${topsrcdir}/services/app-services/settings.gradle" 43 } 44 45 // Set the Android SDK location. This is the *least specific* mechanism, which 46 // is unfortunate: we'd prefer to use the *most specific* mechanism. That is, 47 // local.properties (first 'sdk.dir', then 'android.dir') and then the 48 // environment variable ANDROID_HOME will override this. That's unfortunate, 49 // but it's hard to automatically arrange better. 50 System.setProperty('android.home', gradle.mozconfig.substs.ANDROID_SDK_ROOT) 51 52 include ':annotations', ':messaging_example', ':port_messaging_example' 53 include ':geckoview' 54 include ':exoplayer2' 55 include ':android-components' 56 57 project(':annotations').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/annotations") 58 project(':geckoview').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/geckoview") 59 project(':exoplayer2').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/exoplayer2") 60 project(':android-components').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components") 61 62 if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "fenix") { 63 include ':fenix' 64 project(':fenix').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/fenix/app") 65 } 66 if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "focus") { 67 include ':focus-android' 68 project(':focus-android').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/focus-android/app") 69 } 70 if (!gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT || gradle.mozconfig.substs.MOZ_ANDROID_SUBPROJECT == "geckoview_example") { 71 include ':components:samples-browser' 72 include ':components:samples-compose-browser' 73 include ':components:samples-toolbar' 74 include ':geckoview_example' 75 include ':test_runner' 76 project(':test_runner').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/test_runner") 77 project(':geckoview_example').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/geckoview_example") 78 project(':components:samples-browser').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/browser") 79 project(':components:samples-compose-browser').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/compose-browser") 80 project(':components:samples-toolbar').projectDir = new File("${gradle.mozconfig.topsrcdir}/mobile/android/android-components/samples/toolbar") 81 } 82 83 if (hasProperty("androidFormatLintTest")) { 84 include ':androidFormatLintTest' 85 project(':androidFormatLintTest').projectDir = new File("${gradle.mozconfig.topsrcdir}/tools/lint/test/files/android-format") 86 } 87 88 project(':messaging_example').projectDir = new File('mobile/android/examples/messaging_example/app') 89 project(':port_messaging_example').projectDir = new File('mobile/android/examples/port_messaging_example/app') 90 91 // Print BUILDSTATUS lines for build profile markers. 92 // 93 // Listeners configured here are "more" global: they get events for (isolated) 94 // projects that use `includeBuild`. 95 // 96 // In addition, build events listeners implemented as build services are 97 // "configuration cache friendly"; task actions (`doFirst`, `doLast`, etc) are 98 // not. 99 100 def now() { 101 Instant now = Instant.now(); 102 return BigDecimal.valueOf(now.getNano(), 9).add(now.getEpochSecond()); 103 } 104 105 abstract class BuildStatusListener implements BuildService<BuildStatusListener.Params>, OperationCompletionListener { 106 interface Params extends BuildServiceParameters { 107 } 108 109 void onFinish(FinishEvent event) { 110 def operationResult = event.result 111 println("BUILDSTATUS ${BigDecimal.valueOf(operationResult.startTime, 3)} START_gradle-task ${event.descriptor.name}") 112 println("BUILDSTATUS ${BigDecimal.valueOf(operationResult.endTime, 3)} END_gradle-task ${event.descriptor.name}") 113 } 114 } 115 116 def shouldPrintBuildStatus = System.getenv("MACH") && !System.getenv("NO_BUILDSTATUS_MESSAGES") 117 118 if (shouldPrintBuildStatus) { 119 gradle.services.get(BuildEventsListenerRegistry).onTaskCompletion( 120 gradle.sharedServices.registerIfAbsent("buildStatus", BuildStatusListener.class) {} 121 ) 122 123 gradle.addProjectEvaluationListener(new ProjectEvaluationListener() { 124 @Override 125 void beforeEvaluate(Project p) { 126 println("BUILDSTATUS ${now()} START_gradle:evaluate-project ${p.name}") 127 } 128 129 @Override 130 void afterEvaluate(Project p, ProjectState projectState) { 131 println("BUILDSTATUS ${now()} END_gradle:evaluate-project ${p.name}") 132 } 133 }) 134 }