apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDirs = ['src/']
        }
        resources {
            srcDirs = ['res/']
        }
    }
}
// TODO put this function in a plugin
String findToolsJar() {
    new ByteArrayOutputStream().withStream { os ->
        project.exec {
            executable "../../build/core/find-jdk-tools-jar.sh"

            standardOutput = os
        }
        return os.toString().trim()
    }
}


if (project.hasProperty("usePrebuilts") && project.usePrebuilts == "true") {
    repositories {
        maven { url '../../prebuilts/tools/common/m2/repository' }
    }

    dependencies {
        compile files(findToolsJar())
        compile files('../../prebuilts/misc/common/antlr/antlr-3.4-complete.jar')
        compile 'com.google.jsilver:jsilver:1.0.0'
        // TODO add tagsoup to prebuils to fully support building using prebuilts
        compile project(':tagsoup')
        // required by jsilver
        compile 'com.google.guava:guava:15.0'
        //compile project(path: ':junit', configuration: 'target')
    }
} else {
    dependencies {
        compile files(findToolsJar())
        compile project(path: ':antlr', configuration: 'antlrRuntime')
        compile project(':jsilver')
        compile project(':tagsoup')
    }
}
