/**
 * *** THIS FILE IS DEPRECATED ***
 *
 * Most apps should be building against the internal maven prebuilts for support libs and therefore
 * use standalone-rules.gradle instead.
 *
 * Build the file with local dependencies. The difference between this and standalone.gradle is that
 * this will build the dependencies like support libraries from source, whereas standalone.gradle
 * will get it from maven central.
 *
 * For example, you can include the following in your settings.gradle file:
 *      include ':setup-wizard-lib'
 *      project(':setup-wizard-lib').projectDir = new File(PATH_TO_THIS_DIRECTORY)
 *
 * And then you can include the :setup-wizard-lib project as one of your dependencies
 *      dependencies {
 *          compile project(path: ':setup-wizard-lib', configuration: 'gingerbreadCompatRelease')
 *      }
 */

ext {
    // For builds in the Android tree we want to build the dependencies from source for reproducible
    // builds. To add a dependency, you want to specify something like this:
    //      ext {
    //          deps = ['project-name': project(':project-path')]
    //      }
    //
    // And then in rules.gradle you can reference the dependency by
    //      dependencies {
    //          compile deps['project-name']
    //      }
    //
    deps = [
        'support-annotations': project(':support-annotations'),
        'support-appcompat-v7': project(':support-appcompat-v7'),
        'support-recyclerview-v7': project(':support-recyclerview-v7')
    ]
}

apply from: 'rules.gradle'
