mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 07:42:04 +00:00
63896e74a9
DONTBUILD NPOTB The :omnijar project is for IntelliJ only; adding it neatly labels folders we consider part of the omnijar in mobile/android. The JAR produced is not used. We add an evaluation-time dependency from :app to :omnijar so that we can declare the set of omnijar folders exactly once. We'd prefer to have the dependency in the other direction (to save evaluation time) but there's an interface mismatch between the two Gradle model types. See comments in the :omnijar project. This is delicate. --HG-- extra : commitid : 4TLicjMC7Bn extra : rebase_source : 5dd4ab1e1fcdb296b46bc892b9e10414baadee61
43 lines
1.9 KiB
Groovy
43 lines
1.9 KiB
Groovy
// You might think topsrcdir is '.', but that's not true when the Gradle build
|
|
// is launched from within IntelliJ.
|
|
def topsrcdir = rootProject.projectDir.absolutePath
|
|
|
|
def commandLine = ["${topsrcdir}/mach", "environment", "--format", "json", "--verbose"]
|
|
def proc = commandLine.execute(null, new File(topsrcdir))
|
|
def standardOutput = new ByteArrayOutputStream()
|
|
proc.consumeProcessOutput(standardOutput, standardOutput)
|
|
proc.waitFor()
|
|
|
|
// Only show the output if something went wrong.
|
|
if (proc.exitValue() != 0) {
|
|
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${proc.exitValue()}:\n\n${standardOutput.toString()}")
|
|
}
|
|
|
|
import groovy.json.JsonSlurper
|
|
def slurper = new JsonSlurper()
|
|
def json = slurper.parseText(standardOutput.toString())
|
|
|
|
if (json.substs.MOZ_BUILD_APP != 'mobile/android') {
|
|
throw new GradleException("Building with Gradle is only supported for Fennec, i.e., MOZ_BUILD_APP == 'mobile/android'.");
|
|
}
|
|
|
|
include ':app'
|
|
include ':base'
|
|
include ':omnijar'
|
|
include ':thirdparty'
|
|
|
|
def gradleRoot = new File("${json.topobjdir}/mobile/android/gradle")
|
|
project(':app').projectDir = new File("${json.topsrcdir}/mobile/android/app")
|
|
project(':base').projectDir = new File(gradleRoot, 'base')
|
|
project(':omnijar').projectDir = new File("${json.topsrcdir}/mobile/android/app/omnijar")
|
|
project(':thirdparty').projectDir = new File("${json.topsrcdir}/mobile/android/thirdparty")
|
|
|
|
// The Gradle instance is shared between settings.gradle and all the
|
|
// other build.gradle files (see
|
|
// http://forums.gradle.org/gradle/topics/define_extension_properties_from_settings_xml).
|
|
// We use this ext property to pass the per-object-directory mozconfig
|
|
// between scripts. This lets us execute set-up code before we gradle
|
|
// tries to configure the project even once, and as a side benefit
|
|
// saves invoking |mach environment| multiple times.
|
|
gradle.ext.mozconfig = json
|