import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.compose.multiplatform) } group = "com.bolenpad.photophetch" version = "1.0.0" kotlin { jvmToolchain(21) } tasks.withType { kotlinOptions.jvmTarget = "17" } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } dependencies { implementation(compose.desktop.currentOs) implementation(compose.material3) implementation(compose.materialIconsExtended) implementation(libs.coroutines.core) implementation(libs.coroutines.swing) implementation(libs.serialization.json) implementation(libs.slf4j.api) implementation(libs.logback.classic) // JavaFX media for Live Photo video playback in preview dialog val javafxVersion = "21.0.3" // Detect platform: mac-aarch64 for Apple Silicon, mac for Intel val osArch = System.getProperty("os.arch") ?: "x86_64" val javafxPlatform = when { System.getProperty("os.name").contains("Mac", ignoreCase = true) && osArch.contains("aarch64") -> "mac-aarch64" System.getProperty("os.name").contains("Mac", ignoreCase = true) -> "mac" System.getProperty("os.name").contains("Win", ignoreCase = true) -> "win" else -> "linux" } implementation("org.openjfx:javafx-media:$javafxVersion:$javafxPlatform") implementation("org.openjfx:javafx-swing:$javafxVersion:$javafxPlatform") implementation("org.openjfx:javafx-graphics:$javafxVersion:$javafxPlatform") implementation("org.openjfx:javafx-base:$javafxVersion:$javafxPlatform") implementation("org.openjfx:javafx-controls:$javafxVersion:$javafxPlatform") } compose.desktop { application { mainClass = "com.bolenpad.photophetch.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "PhotoPhetch" packageVersion = "1.0.0" description = "Import photos from phones into PhotoPhile" vendor = "bolenpad" macOS { bundleID = "com.bolenpad.photophetch" iconFile.set(project.file("src/main/resources/icon.icns")) } } // Fat JAR for quick distribution buildTypes.release.proguard { isEnabled = false } } }