author Nick Alexander <>
Thu, 22 Feb 2018 16:11:14 -0800
changeset 473898 d8c9882a3b3ca27904d6169567829e79c458e567
parent 465334 b909b93e90f9bdde2cefe9c09f55b0c8b68722ef
child 504564 e22dc234a52fe16f8ce2ae86b1b63b86211c1572
permissions -rw-r--r--
Bug 1444546 - Part 2: Build annotationProcessors with Gradle. r=jchen We want annotationProcessors to be compiled and archived into a JAR at build time, ready to generate JNI wrappers. (That is, until we turn the whole thing into a real annotation processor.) But even if we do use a real annotation processor, we still need to generate SDK bindings, which is less clearly expressed as an annotation processor. (It's more of a build step.) Gradle provides a huge number of ways to organize build logic to achieve this: see Unfortunately, the best such way -- putting the code into $topsrcdir/buildSrc -- has key disadvantages: 1) it pollutes the top-level $topsrcdir, and there's no way to change the location of buildSrc (; 2) it's complicated to have a dependent project (mobile/android/annotations) expose its code via a buildSrc project; 3) using buildSrc at all appears to conflict with the Android-Gradle plugin version that we are using. Therefore, this commit does something much simpler: it adds a Java-only project and uses the resulting Gradle "Jar" task and archive output as input to the existing Gradle "generate JNI wrappers" task. MozReview-Commit-ID: 2OyYLPneE1M

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at

# DBM support in NSS
# ==============================================================
@depends(build_project, '--help')
def dbm_default(build_project, _):
    return build_project != 'mobile/android'

option('--enable-dbm', default=dbm_default, help='Enable building DBM')

set_config('NSS_DISABLE_DBM', depends('--enable-dbm')(lambda x: not x))