description = 'Kotlin Standard Library JDK 7 extension'

apply plugin: 'kotlin'

JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)

RepoArtifacts.publish(project)
RepoArtifacts.sourcesJar(project)
RepoArtifacts.javadocJar(project)

sourceSets {
    main {
        kotlin {
        }
    }
    test {
        kotlin {
        }
    }
    java9 {
        java {
            srcDir 'java9'
        }
    }
}

dependencies {
    api project(':kotlin-stdlib')
}

jar {
    LibrariesCommon.manifestAttributes(project, manifest, 'Main', true)
    from sourceSets.java9.output
}

sourcesJar {
    from sourceSets.java9.allSource
}


artifacts {
    archives sourcesJar
    sources sourcesJar
}

compileKotlin {
    kotlinJavaToolchain.toolchain.use(JvmToolchain.getToolchainLauncherFor(project, JdkMajorVersion.JDK_11_0))
    kotlinOptions.jvmTarget = "1.8"
    kotlinOptions.moduleName = project.name
    kotlinOptions.freeCompilerArgs = [ "-Xjdk-release=7" ]
}

compileTestKotlin {
}

LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib.jdk7')


