// 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) { 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"
    }
}
