pluginManagement {
    plugins {
        id "com.android.application" version "7.4.0"
        id "com.android.library" version "7.4.0"
        id "com.github.johnrengelman.shadow" version "7.1.2"
        id "com.github.kt3k.coveralls" version "2.12.2"
        id "com.google.cloud.tools.appengine" version "2.4.4"
        id "com.google.cloud.tools.jib" version "3.3.1"
        id "com.google.osdetector" version "1.7.3"
        id "com.google.protobuf" version "0.9.3"
        id "me.champeau.gradle.japicmp" version "0.4.1"
        id "me.champeau.jmh" version "0.7.1"
        id "net.ltgt.errorprone" version "3.1.0"
        id "ru.vyarus.animalsniffer" version "1.7.0"
    }
    resolutionStrategy {
        eachPlugin {
            if (target.id.namespace == "com.android") {
                useModule("com.android.tools.build:gradle:${target.version}")
            }
            if (requested.id.id.startsWith('com.google.cloud.tools.appengine')) {
                useModule("com.google.cloud.tools:appengine-gradle-plugin:${requested.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
}
