// 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}/out.gradle"
init.chooseBuildSrcBuildDir()

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"
        ]
        languageVersion = "1.8"
        apiVersion = "1.8"
    }
}
