summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/build.gradle')
-rw-r--r--platform/android/MapboxGLAndroidSDK/build.gradle60
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle
index 6602d919a3..dd25a8d7b4 100644
--- a/platform/android/MapboxGLAndroidSDK/build.gradle
+++ b/platform/android/MapboxGLAndroidSDK/build.gradle
@@ -29,6 +29,66 @@ android {
buildConfigField "String", "GIT_REVISION_SHORT", String.format("\"%s\"", getGitRevision())
}
+ defaultPublishConfig project.hasProperty("mapbox.buildtype") ? project.getProperty("mapbox.buildtype") : "debug"
+
+ // We sometimes want to invoke Gradle without building a native dependency, e.g. when we just want
+ // to invoke the Java tests. When we explicitly specify an ABI of 'none', no native dependencies are
+ // added. When another ABI is specified explicitly, we're just going to build that ABI. In all other
+ // cases, all ABIs are built.
+ // When invoking from the command line, set `-Pmapbox.abis=...` to only build the desired architectures.
+ // When building from Android Studio, gradle.properties sets `android.buildOnlyTargetAbi=true` so that
+ // only the architecture for the device you're running on gets built.
+ def abi = 'all'
+ if (!project.hasProperty('android.injected.invoked.from.ide')) {
+ // Errors when the user invokes Gradle from the command line and didn't set mapbox.abis
+ abi = project.getProperty("mapbox.abis")
+ }
+
+ if (abi != 'none') {
+ externalNativeBuild {
+ cmake {
+ path "../../../CMakeLists.txt"
+ }
+ }
+ }
+
+ defaultConfig {
+ if (abi != 'none') {
+ externalNativeBuild {
+ cmake {
+ arguments "-DANDROID_TOOLCHAIN=clang"
+ arguments "-DANDROID_STL=c++_static"
+ arguments "-DANDROID_CPP_FEATURES=rtti;exceptions"
+ arguments "-DMBGL_PLATFORM=android"
+ arguments "-DMASON_PLATFORM=android"
+ arguments "-DNodeJS_EXECUTABLE=" + rootProject.ext.node
+ arguments "-Dnpm_EXECUTABLE=" + rootProject.ext.npm
+
+ // Enable ccache if the user has installed it.
+ if (rootProject.ext.ccache?.trim()) {
+ arguments "-DANDROID_CCACHE=" + rootProject.ext.ccache
+ // ccache splits up the compile command until multiple invocations and uses -E
+ // with one of them, and clang doesn't like unused arguments in that case.
+ cFlags "-Qunused-arguments"
+ cppFlags "-Qunused-arguments"
+ }
+
+ targets "mapbox-gl"
+ targets "example-custom-layer"
+ if (project.hasProperty("mapbox.with_test")) {
+ targets "mbgl-test"
+ }
+
+ if (abi != 'all') {
+ abiFilters abi.split(' ')
+ } else {
+ abiFilters "armeabi", "armeabi-v7a", "mips", "x86", "arm64-v8a", "x86_64"
+ }
+ }
+ }
+ }
+ }
+
// avoid naming conflicts, force usage of prefix
resourcePrefix 'mapbox_'