import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id "kotlin"
    id "java-gradle-plugin"
}

ext.supportRootFolder = project.projectDir.getParentFile().getParentFile()

apply from: "../../buildSrc/build_dependencies.gradle"
apply from: "../../buildSrc/kotlin-dsl-dependency.gradle"

dependencies {
    implementation(project(":jetpad-integration"))

    compileOnly(findGradleKotlinDsl())
    implementation(gradleApi())

    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${build_versions.kotlin}")

    implementation(build_libs.agp)
    implementation(build_libs.dex_member_list)
    implementation(build_libs.kotlin.gradle_plugin)
    implementation(build_libs.kotlinpoet)

    implementation("org.jetbrains.dokka:dokka-gradle-plugin:${build_versions.dokka}")
    implementation("org.jetbrains.dokka:dokka-android-gradle-plugin:${build_versions.dokka}")

    // Not really sure about these:
    implementation("androidx.benchmark:benchmark-gradle-plugin:1.0.0")
    implementation("com.google.protobuf:protobuf-gradle-plugin:0.8.13")
    implementation("org.anarres.jarjar:jarjar-gradle:1.0.1")
    implementation("com.github.jengelman.gradle.plugins:shadow:5.2.0")
}

sourceSets {
    main.java.srcDirs += "${supportRootFolder}/buildSrc/src/main/kotlin"
    main.java.srcDirs += "${supportRootFolder}/inspection/inspection-gradle-plugin/src/main/kotlin"
    main.resources.srcDirs += "${supportRootFolder}/inspection/inspection-gradle-plugin/src/main/resources"
}

version = "0.1.0"
group = "androidx.build"

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

tasks.withType(KotlinCompile).all {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Werror"]
    }
}

gradlePlugin {
    plugins {
        AndroidXPlugin {
            id = "AndroidXPlugin"
            implementationClass = "androidx.build.AndroidXPlugin"
        }
        AndroidXUiPlugin {
            id = "AndroidXUiPlugin"
            implementationClass = "androidx.build.AndroidXUiPlugin"
        }
    }
}
