/**
 * Include this gradle file if you are building against this as a standalone gradle library project,
 * as opposed to building it as part of the git-tree. This is typically the file you want to include
 * if you create a new project in Android Studio.
 *
 * 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)
 *      project(':setup-wizard-lib').buildFileName = 'standalone.gradle'
 *
 * And then you can include the :setup-wizard-lib project as one of your dependencies
 *      dependencies {
 *          compile project(path: ':setup-wizard-lib', configuration: 'icsCompatRelease')
 *      }
 */

ext {
    // For standalone project clients, since the source may not be available, we fetch the
    // dependencies from maven. To add a dependency, you want to specify something like this:
    //      ext {
    //          deps = ['project-name': 'com.example.group:project-name:1.0.0']
    //      }
    //
    // And then in rules.gradle you can reference the dependency by
    //      dependencies {
    //          compile deps['project-name']
    //      }
    //
    deps = ['support-appcompat-v7': 'com.android.support:appcompat-v7:21.0.0']
}

apply from: 'rules.gradle'

android.compileSdkVersion 21
android.buildToolsVersion '21.1.0'
