236 lines
6.6 KiB
Groovy
236 lines
6.6 KiB
Groovy
description = 'Kotlin Standard Library for JVM'
|
|
|
|
apply plugin: 'kotlin-platform-jvm'
|
|
|
|
archivesBaseName = 'kotlin-stdlib'
|
|
|
|
JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)
|
|
|
|
configurePublishing(project)
|
|
configureJavadocJar()
|
|
configureSourcesJar()
|
|
|
|
configurations {
|
|
distSources
|
|
}
|
|
|
|
sourceSets {
|
|
compileOnlyDeclarations {
|
|
java {
|
|
srcDir 'compileOnly'
|
|
}
|
|
}
|
|
main {
|
|
java {
|
|
srcDir "${rootDir}/core/builtins/src"
|
|
srcDir 'runtime'
|
|
srcDir 'src'
|
|
}
|
|
}
|
|
mainJdk7 {
|
|
kotlin {
|
|
srcDir '../jdk7/src'
|
|
}
|
|
}
|
|
mainJdk8 {
|
|
kotlin {
|
|
srcDir '../jdk8/src'
|
|
}
|
|
}
|
|
test {
|
|
kotlin {
|
|
srcDir 'test'
|
|
srcDir '../jdk7/test'
|
|
srcDir '../jdk8/test'
|
|
}
|
|
}
|
|
longRunningTest {
|
|
kotlin {
|
|
srcDir 'testLongRunning'
|
|
}
|
|
}
|
|
java9 {
|
|
java {
|
|
srcDir 'java9'
|
|
}
|
|
}
|
|
}
|
|
|
|
LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib', [sourceSets.main.output, sourceSets.mainJdk7.output, sourceSets.mainJdk8.output])
|
|
|
|
configurations {
|
|
commonSources
|
|
longRunningTestCompile.extendsFrom(testCompile)
|
|
builtins {
|
|
attributes {
|
|
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR))
|
|
}
|
|
}
|
|
compileOnly.extendsFrom(builtins)
|
|
mainJdk7CompileOnly.extendsFrom(compileClasspath)
|
|
mainJdk8CompileOnly.extendsFrom(compileClasspath)
|
|
testCompileOnly.extendsFrom(builtins)
|
|
}
|
|
|
|
dependencies {
|
|
expectedBy project(":kotlin-stdlib-common")
|
|
|
|
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
|
|
|
|
api group: 'org.jetbrains', name: 'annotations', version:'13.0'
|
|
|
|
compileOnly sourceSets.compileOnlyDeclarations.output
|
|
mainJdk7Api sourceSets.main.output
|
|
mainJdk8Api sourceSets.main.output
|
|
mainJdk8Api sourceSets.mainJdk7.output
|
|
|
|
testApi project(':kotlin-test:kotlin-test-junit')
|
|
if (BuildPropertiesKt.getKotlinBuildProperties(project).inIdeaSync) {
|
|
testCompileOnly sourceSets.mainJdk7.output
|
|
testCompileOnly sourceSets.mainJdk8.output
|
|
}
|
|
|
|
builtins project(':core:builtins')
|
|
}
|
|
|
|
jar {
|
|
dependsOn(configurations.builtins)
|
|
manifestAttributes(manifest, project, 'Main', true)
|
|
from {
|
|
zipTree(configurations.builtins.singleFile)
|
|
}
|
|
from sourceSets.mainJdk7.output
|
|
from sourceSets.mainJdk8.output
|
|
from sourceSets.java9.output
|
|
}
|
|
|
|
sourcesJar {
|
|
from "${rootDir}/core/builtins/native"
|
|
from(sourceSets.mainJdk7.allSource) {
|
|
into 'jdk7'
|
|
}
|
|
from(sourceSets.mainJdk8.allSource) {
|
|
into 'jdk8'
|
|
}
|
|
}
|
|
|
|
task distSourcesJar(type: Jar) {
|
|
dependsOn(sourcesJar, configurations.commonSources)
|
|
destinationDirectory = file("$buildDir/lib/dist")
|
|
archiveClassifier.set('sources')
|
|
duplicatesStrategy = DuplicatesStrategy.FAIL
|
|
|
|
from zipTree(sourcesJar.outputs.files.singleFile)
|
|
|
|
from(zipTree(configurations.commonSources.singleFile)) {
|
|
it.includeEmptyDirs = false
|
|
exclude 'META-INF/*'
|
|
into 'common'
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
archives sourcesJar
|
|
sources sourcesJar
|
|
distSources distSourcesJar
|
|
}
|
|
|
|
DexMethodCountKt.dexMethodCount(project) { task ->
|
|
task.from(jar)
|
|
task.ownPackages = ['kotlin']
|
|
}
|
|
|
|
compileKotlin {
|
|
kotlinJavaToolchain.toolchain.use(JvmToolchain.getToolchainLauncherFor(project, JdkMajorVersion.JDK_1_6))
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
freeCompilerArgs = [
|
|
"-Xallow-kotlin-package",
|
|
"-Xmultifile-parts-inherit",
|
|
"-opt-in=kotlin.RequiresOptIn",
|
|
"-opt-in=kotlin.ExperimentalMultiplatform",
|
|
"-opt-in=kotlin.contracts.ExperimentalContracts",
|
|
"-Xuse-14-inline-classes-mangling-scheme",
|
|
"-Xbuiltins-from-sources",
|
|
"-XXLanguage:+RangeUntilOperator",
|
|
"-Xno-new-java-annotation-targets",
|
|
"-Xuse-old-innerclasses-logic",
|
|
]
|
|
moduleName = "kotlin-stdlib"
|
|
}
|
|
}
|
|
|
|
compileMainJdk7Kotlin {
|
|
kotlinJavaToolchain.toolchain.use(JvmToolchain.getToolchainLauncherFor(project, JdkMajorVersion.JDK_1_7))
|
|
kotlinOptions.jvmTarget = "1.8"
|
|
kotlinOptions.freeCompilerArgs = [
|
|
"-Xallow-kotlin-package",
|
|
"-Xmultifile-parts-inherit",
|
|
"-Xno-new-java-annotation-targets",
|
|
"-opt-in=kotlin.RequiresOptIn",
|
|
"-opt-in=kotlin.contracts.ExperimentalContracts",
|
|
]
|
|
kotlinOptions.moduleName = "kotlin-stdlib-jdk7"
|
|
}
|
|
|
|
compileMainJdk8Kotlin {
|
|
kotlinOptions.freeCompilerArgs = [
|
|
"-Xallow-kotlin-package",
|
|
"-Xmultifile-parts-inherit",
|
|
"-Xno-new-java-annotation-targets",
|
|
]
|
|
kotlinOptions.moduleName = "kotlin-stdlib-jdk8"
|
|
}
|
|
|
|
compileCompileOnlyDeclarationsKotlin {
|
|
kotlinOptions {
|
|
freeCompilerArgs = [
|
|
"-Xallow-kotlin-package",
|
|
]
|
|
}
|
|
}
|
|
|
|
compileTestKotlin {
|
|
kotlinOptions {
|
|
freeCompilerArgs += [
|
|
"-opt-in=kotlin.RequiresOptIn",
|
|
"-opt-in=kotlin.ExperimentalUnsignedTypes",
|
|
"-opt-in=kotlin.ExperimentalStdlibApi",
|
|
"-opt-in=kotlin.io.path.ExperimentalPathApi",
|
|
"-opt-in=kotlin.io.encoding.ExperimentalEncodingApi",
|
|
"-XXLanguage:+RangeUntilOperator",
|
|
"-Xallow-kotlin-package", // TODO: maybe rename test packages
|
|
]
|
|
if (project.kotlinBuildProperties.useFir) {
|
|
freeCompilerArgs += "-Xuse-k2"
|
|
}
|
|
// This is needed for JavaTypeTest; typeOf for non-reified type parameters doesn't work otherwise, for implementation reasons.
|
|
def args = new ArrayList(freeCompilerArgs)
|
|
args.remove("-Xno-optimized-callable-references")
|
|
freeCompilerArgs = args
|
|
}
|
|
}
|
|
|
|
[JdkMajorVersion.JDK_9_0, JdkMajorVersion.JDK_10_0, JdkMajorVersion.JDK_11_0].forEach { jvmVersion ->
|
|
check.dependsOn(tasks.register("jdk${jvmVersion.majorVersion}Test", Test) { thisTask ->
|
|
group = "verification"
|
|
thisTask.javaLauncher.set(JvmToolchain.getToolchainLauncherFor(project, jvmVersion))
|
|
})
|
|
}
|
|
|
|
compileLongRunningTestKotlin {
|
|
kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.ExperimentalStdlibApi"
|
|
}
|
|
|
|
configureFrontendIr(project)
|
|
|
|
task longRunningTest(type: Test, dependsOn: longRunningTestClasses) {
|
|
group = "verification"
|
|
testClassesDirs = sourceSets.longRunningTest.output.classesDirs
|
|
classpath = sourceSets.longRunningTest.runtimeClasspath
|
|
}
|
|
|
|
if (project.hasProperty("kotlin.stdlib.test.long.running")) {
|
|
check.dependsOn(longRunningTest)
|
|
}
|