mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 09:45:41 +00:00
5b7edf8bba
Backed out changeset 9c42ce50a911 (bug 1457255) Backed out changeset 524a0f9fb978 (bug 1457255) Backed out changeset a49833bfd519 (bug 1457255) Backed out changeset 4eccde5dfbef (bug 1457255)
151 lines
4.9 KiB
Groovy
151 lines
4.9 KiB
Groovy
def tryInt = { string ->
|
|
if (string == null) {
|
|
return string
|
|
}
|
|
if (string.isInteger()) {
|
|
return string as Integer
|
|
}
|
|
return string
|
|
}
|
|
|
|
allprojects {
|
|
// Expose the per-object-directory configuration to all projects.
|
|
ext {
|
|
mozconfig = gradle.mozconfig
|
|
topsrcdir = gradle.mozconfig.topsrcdir
|
|
topobjdir = gradle.mozconfig.topobjdir
|
|
|
|
compileSdkVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK_VERSION)
|
|
targetSdkVersion = tryInt(mozconfig.substs.ANDROID_TARGET_SDK)
|
|
minSdkVersion = tryInt(mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION)
|
|
manifestPlaceholders = [
|
|
ANDROID_PACKAGE_NAME: mozconfig.substs.ANDROID_PACKAGE_NAME,
|
|
ANDROID_TARGET_SDK: mozconfig.substs.ANDROID_TARGET_SDK,
|
|
MOZ_ANDROID_MIN_SDK_VERSION: mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION,
|
|
MOZ_ANDROID_SHARED_ID: "${mozconfig.substs.ANDROID_PACKAGE_NAME}.sharedID",
|
|
]
|
|
}
|
|
|
|
repositories {
|
|
gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
|
|
maven {
|
|
url repository
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
buildDir "${topobjdir}/gradle/build"
|
|
|
|
buildscript {
|
|
repositories {
|
|
gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
|
|
maven {
|
|
url repository
|
|
}
|
|
}
|
|
// For in tree plugins.
|
|
maven {
|
|
url "file://${gradle.mozconfig.topsrcdir}/mobile/android/gradle/m2repo"
|
|
}
|
|
}
|
|
|
|
ext.kotlin_version = '1.1.51'
|
|
ext.support_library_version = '23.4.0'
|
|
|
|
if (gradle.mozconfig.substs.MOZ_ANDROID_GOOGLE_PLAY_SERVICES) {
|
|
ext.google_play_services_version = '8.4.0'
|
|
}
|
|
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:3.0.1'
|
|
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2'
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
}
|
|
}
|
|
|
|
if ('multi' == System.env.AB_CD) {
|
|
// Multi-l10n builds set `AB_CD=multi`, which isn't a valid locale. This
|
|
// causes the
|
|
//
|
|
// |mach build| > |mach gradle| > |make gradle-targets| > AndroidManifest.xml > strings.xml > multi/brand.dtd
|
|
//
|
|
// dependency chain to fail, since multi isn't a real locale. To avoid
|
|
// this, if Gradle is invoked with AB_CD=multi, we don't invoke Make at all.
|
|
task generateCodeAndResources()
|
|
} else if (System.env.IS_LANGUAGE_REPACK == '1') {
|
|
// Single-locale l10n repacks set `IS_LANGUAGE_REPACK=1` and handle resource
|
|
// and code generation themselves.
|
|
task generateCodeAndResources()
|
|
} else {
|
|
task generateCodeAndResources(type:Exec) {
|
|
workingDir "${topobjdir}"
|
|
|
|
commandLine mozconfig.substs.GMAKE
|
|
args '-C'
|
|
args "${topobjdir}/mobile/android/base"
|
|
args 'gradle-targets'
|
|
|
|
// Only show the output if something went wrong.
|
|
ignoreExitValue = true
|
|
standardOutput = new ByteArrayOutputStream()
|
|
errorOutput = standardOutput
|
|
doLast {
|
|
if (execResult.exitValue != 0) {
|
|
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${execResult.exitValue}:\n\n${standardOutput.toString()}")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
afterEvaluate {
|
|
subprojects {
|
|
if (!hasProperty('android')) {
|
|
return
|
|
}
|
|
android.applicationVariants.all {
|
|
preBuild.dependsOn rootProject.generateCodeAndResources
|
|
}
|
|
android.libraryVariants.all {
|
|
preBuild.dependsOn rootProject.generateCodeAndResources
|
|
}
|
|
}
|
|
}
|
|
|
|
apply plugin: 'idea'
|
|
|
|
idea {
|
|
project {
|
|
languageLevel = '1.7'
|
|
}
|
|
|
|
module {
|
|
// Object directories take a huge amount of time for IntelliJ to index.
|
|
// Exclude them. Convention is that object directories start with obj.
|
|
// IntelliJ is clever and will not exclude the parts of the object
|
|
// directory that are referenced, if there are any. In practice,
|
|
// indexing the entirety of the tree is taking too long, so exclude all
|
|
// but mobile/.
|
|
def topsrcdirURI = file(topsrcdir).toURI()
|
|
excludeDirs += files(file(topsrcdir)
|
|
.listFiles({it.isDirectory()} as FileFilter)
|
|
.collect({topsrcdirURI.relativize(it.toURI()).toString()}) // Relative paths.
|
|
.findAll({!it.equals('mobile/')}))
|
|
|
|
// If topobjdir is below topsrcdir, hide only some portions of that tree.
|
|
def topobjdirURI = file(topobjdir).toURI()
|
|
if (!topsrcdirURI.relativize(topobjdirURI).isAbsolute()) {
|
|
excludeDirs -= file(topobjdir)
|
|
excludeDirs += files(file(topobjdir).listFiles())
|
|
excludeDirs -= file("${topobjdir}/gradle")
|
|
}
|
|
|
|
if (!mozconfig.substs.MOZ_INSTALL_TRACKING) {
|
|
excludeDirs += file("${topsrcdir}/mobile/android/thirdparty/com/adjust")
|
|
}
|
|
}
|
|
}
|
|
|
|
task wrapper(type: Wrapper) {
|
|
}
|