import org.jetbrains.compose.desktop.application.dsl.TargetFormat import java.util.* plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.kotlinSerialization) } group = "at.mocode.frontend.shell" version = "1.0.0" val versionProps = Properties().also { props -> rootProject.file("version.properties").inputStream().use { props.load(it) } } val vMajor: String? = versionProps.getProperty("VERSION_MAJOR", "1") val vMinor: String? = versionProps.getProperty("VERSION_MINOR", "0") val vPatch: String? = versionProps.getProperty("VERSION_PATCH", "0") val packageVer = "$vMajor.$vMinor.$vPatch" kotlin { jvm() sourceSets { jvmMain.dependencies { implementation(projects.frontend.core.domain) implementation(projects.core.coreDomain) implementation(projects.frontend.core.designSystem) implementation(projects.frontend.core.navigation) implementation(projects.frontend.core.network) implementation(projects.frontend.core.sync) implementation(projects.frontend.core.localDb) implementation(projects.frontend.core.auth) implementation(projects.core.znsParser) implementation(projects.frontend.features.pingFeature) implementation(projects.frontend.features.nennungFeature) implementation(projects.frontend.features.znsImportFeature) implementation(projects.frontend.features.veranstalterFeature) implementation(projects.frontend.features.veranstaltungFeature) implementation(projects.frontend.features.funktionaerFeature) implementation(projects.frontend.features.profileFeature) implementation(projects.frontend.features.reiterFeature) implementation(projects.frontend.features.pferdeFeature) implementation(projects.frontend.features.vereinFeature) implementation(projects.frontend.features.turnierFeature) implementation(projects.frontend.features.billingFeature) implementation(projects.frontend.features.deviceInitialization) implementation(compose.desktop.currentOs) implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) implementation(compose.materialIconsExtended) implementation(compose.uiTooling) implementation(libs.composeHotReloadApi) implementation(libs.koin.core) implementation(libs.koin.compose) implementation(libs.koin.compose.viewmodel) implementation(libs.kotlinx.coroutines.swing) implementation(libs.bundles.kmp.common) implementation(libs.bundles.compose.common) implementation(libs.logback.classic) } jvmTest.dependencies { implementation(libs.kotlin.test) } } } compose.desktop { application { mainClass = "at.mocode.frontend.shell.desktop.MainKt" nativeDistributions { targetFormats(TargetFormat.Deb, TargetFormat.Rpm, TargetFormat.Msi, TargetFormat.Dmg) packageName = "meldestelle" packageVersion = packageVer description = "ÖTO-konforme Turnier-Meldestelle – Desktop App" vendor = "mo-code.at" copyright = "© 2024–2026 mo-code.at. Alle Rechte vorbehalten." licenseFile.set(rootProject.file("LICENSE")) linux { iconFile.set(project.file("src/jvmMain/resources/icon.png")) packageName = "meldestelle" appCategory = "misc" menuGroup = "Meldestelle" shortcut = true debMaintainer = "support@mo-code.at" } windows { iconFile.set(project.file("src/jvmMain/resources/icon.ico")) upgradeUuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" menuGroup = "Meldestelle" shortcut = true dirChooser = true perUserInstall = false } macOS { iconFile.set(project.file("src/jvmMain/resources/icon.icns")) bundleID = "at.mocode.meldestelle" appCategory = "public.app-category.productivity" } modules( "java.base", "java.desktop", "java.logging", "java.naming", "java.net.http", "java.sql", "jdk.crypto.ec", "jdk.unsupported", ) } jvmArgs( "--enable-native-access=ALL-UNNAMED", "-Xms128m", "-Xmx512m", "-Dfile.encoding=UTF-8", ) } }