Files
photophetch/build.gradle.kts
Kyle Bolen d128835c0d Add JavaFX module args and auto-detect mac/mac-aarch64 platform
--add-modules javafx.media,javafx.swing,javafx.graphics needed for
native codec loading on macOS (AVFoundation for MOV playback).
Platform auto-detects mac-aarch64 vs mac based on os.arch.
2026-07-30 06:18:10 +00:00

79 lines
2.6 KiB
Plaintext

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<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
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"
jvmArgs(
"--add-modules", "javafx.media,javafx.swing,javafx.graphics",
"--add-opens", "javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
)
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
}
}
}