meldestelle/client/desktop-app/build.gradle.kts
2025-08-28 21:07:20 +02:00

90 lines
3.0 KiB
Plaintext

import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.compose.multiplatform)
alias(libs.plugins.compose.compiler)
}
kotlin {
jvm {
compilations.all {
// compileTaskProvider.configure{
// compilerOptions {
// freeCompilerArgs.add("-Xjvm-default=all")
// freeCompilerArgs.add("-Xcontext-receivers")
// freeCompilerArgs.add("-Xno-param-assertions")
// freeCompilerArgs.add("-Xno-call-assertions")
// freeCompilerArgs.add("-Xno-receiver-assertions")
// freeCompilerArgs.add("-Xno-optimize")
// freeCompilerArgs.add("-Xno-param-assertions")
// freeCompilerArgs.add("-Xno-receiver-assertions")
// freeCompilerArgs.add("-Xno-optimize")
// freeCompilerArgs.add("-Xno-check-impl")
// freeCompilerArgs.add("-Xno-optimize")
// }
compilerOptions.configure {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21)
}
}
}
sourceSets {
val jvmMain by getting {
dependencies {
// Project dependencies
implementation(project(":client:common-ui"))
// Compose Desktop
implementation(compose.desktop.currentOs)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.uiTooling)
implementation(compose.runtime)
implementation(compose.foundation)
// Serialization support
implementation(libs.kotlinx.serialization.json)
// HTTP Client & Coroutines
implementation(libs.ktor.client.cio)
implementation(libs.ktor.client.contentNegotiation)
implementation(libs.ktor.client.serialization.kotlinx.json)
implementation(libs.kotlinx.coroutines.swing)
// Logging
implementation(libs.kotlin.logging.jvm)
}
}
val jvmTest by getting {
dependencies {
implementation(libs.bundles.testing.jvm)
}
}
}
}
compose.desktop {
application {
mainClass = "at.mocode.client.desktop.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Deb, TargetFormat.Dmg, TargetFormat.Msi)
packageName = "Meldestelle Desktop"
packageVersion = "1.0.0"
windows {
iconFile.set(project.file("src/jvmMain/resources/icon.ico"))
}
linux {
iconFile.set(project.file("src/jvmMain/resources/icon.png"))
}
macOS {
iconFile.set(project.file("src/jvmMain/resources/icon.icns"))
}
}
}
}