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.2.1"
        id "com.google.osdetector" version "1.7.0"
        id "com.google.protobuf" version "0.8.19"
        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.6"
        id "net.ltgt.errorprone" version "2.0.2"
        id "ru.vyarus.animalsniffer" version "1.5.4"
    }
    resolutionStrategy {
        eachPlugin {
            if (target.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:${target.version}")
            }
        }
    }
    repositories {
        gradlePluginPortal()
        google()
    }
}

enableFeaturePreview('VERSION_CATALOGS')

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-xds"
include ":grpc-bom"
include ":grpc-rls"
include ":grpc-authz"
include ":grpc-gcp-observability"
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-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-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
}
