buildscript {
    def supportRootFolder = project.projectDir.getParentFile()
    repositories {
        maven {
            url "${supportRootFolder}/../../prebuilts/tools/common/m2/repository"
        }
    }

    apply from: "build_dependencies.gradle"

    dependencies {
        classpath build_libs.kotlin.gradle_plugin
    }
}
def runningInBuildServer = System.env.DIST_DIR != null && System.env.OUT_DIR != null
if (runningInBuildServer) {
    System.setProperty("kotlin.compiler.execution.strategy", "in-process")
}

apply from: "build_dependencies.gradle"

ext.supportRootFolder = project.projectDir.getParentFile()
apply from: 'repos.gradle'

repos.addMavenRepositories(repositories)

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'kotlin'

compileGroovy {
    dependsOn tasks.getByPath('compileKotlin')
    classpath += files(compileKotlin.destinationDir)
}
dependencies {
    compile build_libs.gradle
    compile build_libs.jacoco
    compile build_libs.error_prone
    compile build_libs.jarjar_gradle
    compile gradleApi()
}
