// Add dependency on the protobuf plugin
buildscript {
    repositories {
        maven { // The google mirror is less flaky than mavenCentral()
            url "https://maven-central.storage-download.googleapis.com/repos/central/data/" }
    }
    dependencies { classpath libraries.protobuf_plugin }
}

description = "gRPC: XDS plugin"

[compileJava].each() {
    it.options.compilerArgs += [
        // valueOf(int) in RoutingPriority has been deprecated
        "-Xlint:-deprecation",
    ]
}

dependencies {
    compile project(':grpc-protobuf'),
            project(':grpc-stub')
    compile (libraries.protobuf_util) {
        // prefer 20.0 from libraries instead of 19.0
        exclude group: 'com.google.guava', module: 'guava'
    }

    compileOnly libraries.javax_annotation
    signature "org.codehaus.mojo.signature:java17:1.0@signature"
}

if (rootProject.childProjects.containsKey('grpc-compiler')) {
    apply plugin: 'com.google.protobuf'
    sourceSets {
        main {
            proto {
                srcDir 'third_party/envoy/src/main/proto'
                srcDir 'third_party/protoc-gen-validate/src/main/proto'
            }
        }
    }
}

configureProtoCompilation()
