Files
kotlin-fork/libraries/stdlib/common/build.gradle
T
2023-12-13 15:40:25 +00:00

114 lines
3.2 KiB
Groovy

plugins {
id("kotlin-platform-common")
id("maven-publish")
}
description = 'Kotlin Common Standard Library'
JvmToolchain.updateJvmTarget(project, "1.8")
def commonSrcDir = "../src"
def commonTestSrcDir = "../test"
sourceSets {
main {
if (!BuildPropertiesKt.getKotlinBuildProperties(project).inIdeaSync)
kotlin {
srcDir 'src'
srcDir commonSrcDir
srcDir '../unsigned/src'
if(!BuildPropertiesKt.getKotlinBuildProperties(project).inIdeaSync) {
srcDir "$rootDir/core/builtins/src/kotlin/internal"
}
}
}
test {
}
}
dependencies {
}
compileKotlinCommon {
dependsOn(":prepare:build.version:writeStdlibVersion")
// dependsOn ":prepare:compiler:prepare-compiler-with-bootstrap-runtime"
// compilerJarFile = compilerJarWithBootstrapRuntime
}
compileKotlinCommon {
kotlinOptions {
freeCompilerArgs = [
"-module-name", project.name,
"-opt-in=kotlin.RequiresOptIn",
"-opt-in=kotlin.ExperimentalMultiplatform",
"-opt-in=kotlin.contracts.ExperimentalContracts",
"-Xallow-kotlin-package",
"-Xexpect-actual-classes",
]
}
}
compileTestKotlinCommon {
kotlinOptions {
freeCompilerArgs += [
"-opt-in=kotlin.RequiresOptIn",
"-opt-in=kotlin.ExperimentalUnsignedTypes",
"-opt-in=kotlin.ExperimentalStdlibApi",
"-opt-in=kotlin.io.encoding.ExperimentalEncodingApi",
]
}
}
tasks.named("jar", Jar) {
LibrariesCommon.manifestAttributes(project, manifest, 'Main')
}
RepoArtifacts.sourcesJar(project)
RepoArtifacts.javadocJar(project)
tasks.named("sourcesJar").configure { it.dependsOn(":prepare:build.version:writeStdlibVersion") }
classes.setDependsOn(classes.dependsOn.findAll { it != "compileJava" })
def stdlibCommonElements = configurations.create("stdlibCommonElements") {
canBeResolved = false
canBeConsumed = true
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
}
}
dependencies {
add(stdlibCommonElements.name, project(":kotlin-stdlib"))
}
class ComponentsFactoryAccess {
SoftwareComponentFactory factory
@javax.inject.Inject
ComponentsFactoryAccess(SoftwareComponentFactory factory) {
this.factory = factory
}
}
SoftwareComponentFactory componentFactory = objects.newInstance(ComponentsFactoryAccess).factory
def rootComponent = componentFactory.adhoc("root")
rootComponent.addVariantsFromConfiguration(stdlibCommonElements) {
mapToOptional()
}
plugins.KotlinBuildPublishingPluginKt.configureDefaultPublishing(project)
publishing {
publications {
def mainPublication = register("main", MavenPublication) {
from(rootComponent)
artifact(jar)
artifact(sourcesJar)
artifact(javadocJar)
plugins.KotlinBuildPublishingPluginKt.configureKotlinPomAttributes(it, project, "Kotlin Common Standard Library (legacy, use kotlin-stdlib instead)", "jar")
}
SbomKt.configureSbom(project, "Main", "kotlin-stdlib-common", ["compileClasspath"], mainPublication)
}
}