settings.gradle
author Mike Hommey <mh+mozilla@glandium.org>
Tue, 13 Nov 2018 23:47:36 +0000
changeset 446126 bfb4ee856c7115899960e3bd1fcf72b5e764314d
parent 417174 d8c9882a3b3ca27904d6169567829e79c458e567
child 466819 b698ba8b6e2454bd18dbe5b03fb98f8f6ff47df6
permissions -rw-r--r--
Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj Ideally, we'd want the function to stay in Assertions.cpp, but that's only part of MFBT proper, and that doesn't have access to WalkTheStack like MOZ_CRASH has from being in Assertion.h, when included from Gecko code. Moving WalkTheStack to mozglue, putting it close together with MozStackWalk would be prefered, but that causes problems linking MFBT tests (which don't have access to mozglue), and other things. Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to Assertions.h is much simpler. Since it's essentially the same as MOZ_CRASH, except it allows non-literal strings, we can make it inlined, and leave it to the compiler to drop the filename argument when it's not used. Differential Revision: https://phabricator.services.mozilla.com/D11718

// 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'.")
}

// 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', json.substs.ANDROID_SDK_ROOT)

include ':annotations'
include ':app'
include ':geckoview'
include ':geckoview_example'
include ':omnijar'
include ':thirdparty'

project(':annotations').projectDir = new File("${json.topsrcdir}/mobile/android/annotations")
project(':app').projectDir = new File("${json.topsrcdir}/mobile/android/app")
project(':geckoview').projectDir = new File("${json.topsrcdir}/mobile/android/geckoview")
project(':geckoview_example').projectDir = new File("${json.topsrcdir}/mobile/android/geckoview_example")
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