// This file applies configuration common to projects in buildSrc

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

apply plugin: "kotlin"

buildscript {
    project.ext.supportRootFolder = buildscript.sourceFile.parentFile.parentFile
    apply from: "${buildscript.sourceFile.parent}/repos.gradle"
    repos.addMavenRepositories(repositories)
    dependencies {
        classpath(libs.kotlinGradlePluginz)
    }
}

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

apply from: "${buildscript.sourceFile.parent}/shared-dependencies.gradle"

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

project.tasks.withType(Jar).configureEach { task ->
    task.reproducibleFileOrder = true
    task.preserveFileTimestamps = false
}

project.repos.addMavenRepositories(project.repositories)
tasks.withType(KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "17"
        freeCompilerArgs += [
                "-Werror",
                "-Xskip-metadata-version-check",
                "-Xjdk-release=17",
        ]
        languageVersion = "1.8"
        apiVersion = "1.8"
    }
}
