buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        // Our project is going to use VDL, so we need to depend on the Vanadium
        // Gradle plugin.
        classpath 'io.v:gradle-plugin:0.1'
        classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
    }
}

apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'io.v.vdl'

repositories {
    mavenCentral()
    maven {
        url 'https://maven.v.io/'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "21.0.2"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
}

dependencies {
    compile 'io.v:vanadium:0.1-SNAPSHOT'
    compile 'io.v:vanadium-android:0.1-SNAPSHOT'
}

vdl {
    // This is where the VDL tool will look for VDL definitions.
    inputPaths += 'common'
}

