pluginManagement {
    plugins {
        id "com.android.application" version "4.2.0"
        id "com.android.library" version "4.2.0"
        id "com.github.johnrengelman.shadow" version "7.1.2"
        id "com.github.kt3k.coveralls" version "2.12.0"
        id "com.google.cloud.tools.jib" version "3.3.1"
        id "com.google.osdetector" version "1.7.1"
        id "com.google.protobuf" version "0.9.1"
        id "digital.wup.android-maven-publish" version "3.6.3"
        id "me.champeau.gradle.japicmp" version "0.3.0"
        id "me.champeau.jmh" version "0.6.8"
        id "net.ltgt.errorprone" version "3.0.1"
        id "ru.vyarus.animalsniffer" version "1.6.0"
    }
    resolutionStrategy {
        eachPlugin {
            if (target.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:${target.version}")
            }
        }
    }
    repositories {
        gradlePluginPortal()
        google()
    }
}

rootProject.name = "grpc"
include ":grpc-api"
include ":grpc-core"
include ":grpc-context"
include ":grpc-stub"
include ":grpc-census"
include ":grpc-auth"
include ":grpc-okhttp"
include ":grpc-protobuf"
include ":grpc-protobuf-lite"
include ":grpc-netty"
include ":grpc-netty-shaded"
include ":grpc-googleapis"
include ":grpc-grpclb"
include ":grpc-testing"
include ":grpc-testing-proto"
include ":grpc-interop-testing"
include ":grpc-gae-interop-testing-jdk8"
include ":grpc-all"
include ":grpc-alts"
include ":grpc-benchmarks"
include ":grpc-services"
include ":grpc-servlet"
include ":grpc-servlet-jakarta"
include ":grpc-xds"
include ":grpc-bom"
include ":grpc-rls"
include ":grpc-authz"
include ":grpc-gcp-observability"
include ":grpc-gcp-observability:interop"
include ":grpc-istio-interop-testing"

project(':grpc-api').projectDir = "$rootDir/api" as File
project(':grpc-core').projectDir = "$rootDir/core" as File
project(':grpc-context').projectDir = "$rootDir/context" as File
project(':grpc-stub').projectDir = "$rootDir/stub" as File
project(':grpc-census').projectDir = "$rootDir/census" as File
project(':grpc-auth').projectDir = "$rootDir/auth" as File
project(':grpc-okhttp').projectDir = "$rootDir/okhttp" as File
project(':grpc-protobuf').projectDir = "$rootDir/protobuf" as File
project(':grpc-protobuf-lite').projectDir = "$rootDir/protobuf-lite" as File
project(':grpc-netty').projectDir = "$rootDir/netty" as File
project(':grpc-netty-shaded').projectDir = "$rootDir/netty/shaded" as File
project(':grpc-googleapis').projectDir = "$rootDir/googleapis" as File
project(':grpc-grpclb').projectDir = "$rootDir/grpclb" as File
project(':grpc-testing').projectDir = "$rootDir/testing" as File
project(':grpc-testing-proto').projectDir = "$rootDir/testing-proto" as File
project(':grpc-interop-testing').projectDir = "$rootDir/interop-testing" as File
project(':grpc-gae-interop-testing-jdk8').projectDir = "$rootDir/gae-interop-testing/gae-jdk8" as File
project(':grpc-all').projectDir = "$rootDir/all" as File
project(':grpc-alts').projectDir = "$rootDir/alts" as File
project(':grpc-benchmarks').projectDir = "$rootDir/benchmarks" as File
project(':grpc-services').projectDir = "$rootDir/services" as File
project(':grpc-servlet').projectDir = "$rootDir/servlet" as File
project(':grpc-servlet-jakarta').projectDir = "$rootDir/servlet/jakarta" as File
project(':grpc-xds').projectDir = "$rootDir/xds" as File
project(':grpc-bom').projectDir = "$rootDir/bom" as File
project(':grpc-rls').projectDir = "$rootDir/rls" as File
project(':grpc-authz').projectDir = "$rootDir/authz" as File
project(':grpc-gcp-observability').projectDir = "$rootDir/gcp-observability" as File
project(':grpc-gcp-observability:interop').projectDir = "$rootDir/gcp-observability/interop" as File
project(':grpc-istio-interop-testing').projectDir = "$rootDir/istio-interop-testing" as File

if (settings.hasProperty('skipCodegen') && skipCodegen.toBoolean()) {
    println '*** Skipping the build of codegen and compilation of proto files because skipCodegen=true'
} else {
    include ":grpc-compiler"
    project(':grpc-compiler').projectDir = "$rootDir/compiler" as File
}

if (settings.hasProperty('skipAndroid') && skipAndroid.toBoolean()) {
    println '  * Skipping the build of Android projects because skipAndroid=true'
} else {
    println '*** Android SDK is required. To avoid building Android projects, set -PskipAndroid=true'
    include ":grpc-cronet"
    project(':grpc-cronet').projectDir = "$rootDir/cronet" as File
    include ":grpc-android"
    project(':grpc-android').projectDir = "$rootDir/android" as File
    include ":grpc-android-interop-testing"
    project(':grpc-android-interop-testing').projectDir = "$rootDir/android-interop-testing" as File
    include ":grpc-binder"
    project(':grpc-binder').projectDir = "$rootDir/binder" as File
}
