Files
kotlin-fork/kotlin-native/backend.native/build.gradle
T

151 lines
4.9 KiB
Groovy

/*
* Copyright 2010-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
buildscript {
apply from: "../../kotlin-native/gradle/kotlinGradlePlugin.gradle"
}
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: "maven-publish"
sourceSets {
compiler {
kotlin {
srcDir 'compiler/ir/backend.native/src/'
}
resources.srcDir 'compiler/ir/backend.native/resources/'
}
}
compileCompilerKotlin {
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
compilerOptions.optIn.addAll([
'kotlin.RequiresOptIn',
"kotlinx.cinterop.BetaInteropApi",
"kotlinx.cinterop.ExperimentalForeignApi",
"org.jetbrains.kotlin.backend.konan.InternalKotlinNativeApi",
])
compilerOptions.freeCompilerArgs.add('-Xskip-prerelease-check')
}
tasks.withType(KotlinCompilationTask.class).configureEach {
compilerOptions.optIn.add("org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI")
}
configurations {
kotlin_compiler_jar
kotlin_stdlib_jar
kotlin_reflect_jar
kotlin_script_runtime_jar
trove4j_jar
compilerApiElements {
extendsFrom apiElements
extendsFrom compilerApi
}
}
dependencies {
kotlin_compiler_jar kotlinCompilerModule
kotlin_stdlib_jar kotlinStdLibModule
use(RepoDependencies) {
trove4j_jar commonDependency("org.jetbrains.intellij.deps:trove4j")
kotlin_reflect_jar commonDependency("org.jetbrains.kotlin:kotlin-reflect")
compilerApi(commonDependency("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil")) { setTransitive(false) }
compilerApi(commonDependency("org.jetbrains.intellij.deps:log4j")) { setTransitive(false) }
compilerApi(commonDependency("org.jetbrains.intellij.deps:jdom"))
compilerApi(commonDependency("com.fasterxml:aalto-xml")) { setTransitive(false) }
compilerApi(commonDependency("org.codehaus.woodstox:stax2-api")) { setTransitive(false) }
}
kotlin_script_runtime_jar project(":kotlin-script-runtime")
compilerApi project(":native:objcexport-header-generator")
compilerApi project(":native:objcexport-header-generator-k1")
compilerApi project(":native:base")
compilerApi project(path: ":kotlin-native:llvmInterop", configuration: "llvmInteropStubs")
compilerApi project(":native:kotlin-native-utils")
compilerApi project(":core:descriptors")
compilerApi project(":core:compiler.common.native")
compilerApi project(":compiler:ir.tree")
compilerApi project(":compiler:ir.backend.common")
compilerApi project(":compiler:ir.inline")
compilerApi project(":compiler:ir.objcinterop")
compilerApi project(":compiler:util")
compilerApi project(":native:frontend.native")
compilerApi project(":compiler:cli-common")
compilerApi project(":compiler:cli-base")
compilerApi project(":compiler:cli")
compilerApi project(":kotlin-util-klib")
compilerApi project(":kotlin-util-klib-metadata")
compilerApi project(":compiler:ir.serialization.common")
compilerApi project(":compiler:ir.serialization.native")
compilerApi project(":compiler:fir:fir-serialization")
compilerApi project(":compiler:fir:native")
compilerApi project(":compiler:ir.psi2ir")
use(IntellijDependenciesKt) {
compilerApi(intellijCore())
compileOnly(jpsModel())
}
}
classes.dependsOn 'compilerClasses'
tasks.named("jar") {
from sourceSets.compiler.output
dependsOn 'external_jars'
}
def externalJars = ['compiler', 'stdlib', 'reflect', 'script_runtime']
tasks.register("trove4jCopy", Copy) {
from configurations.named("trove4j_jar") {
include "trove4j*.jar"
rename "trove4j(.*).jar", "trove4j.jar"
into 'build/external_jars'
}
}
externalJars.each { arg ->
def jar = arg.replace('_', '-') // :(
tasks.register("${arg}Copy", Copy) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from configurations.named("kotlin_${arg}_jar") {
include "kotlin-${jar}*.jar"
rename "kotlin-${jar}(.*).jar", "kotlin-${jar}.jar"
into 'build/external_jars'
}
}
}
tasks.register("external_jars", Copy) {
dependsOn externalJars.collect { "${it}Copy" }
dependsOn trove4jCopy
}
tasks.register("debugCompiler", JavaExec) {
dependsOn ':dist'
mainClass = 'org.jetbrains.kotlin.cli.bc.K2NativeKt'
classpath = project.fileTree("${distDir.canonicalPath}/konan/lib/") {
include '*.jar'
}
jvmArgs "-Dorg.jetbrains.kotlin.native.home=${distDir.canonicalPath}"
enableAssertions = true
args = findProperty("konan.debug.args").toString().tokenize() ?: []
}
RepoArtifacts.sourcesJar(project) {
it.from(sourceSets["compiler"].allSource)
}
RepoArtifacts.javadocJar(project)