//import org.gradle.kotlin.dsl.implementation import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) } kotlin { compilerOptions { freeCompilerArgs.add("-Xcontext-parameters") optIn.add("kotlin.uuid.ExperimentalUuidApi") } jvm("desktop") @OptIn(ExperimentalWasmDsl::class) wasmJs { browser { val rootDirPath = project.rootDir.path val projectDirPath = project.projectDir.path commonWebpackConfig { outputFileName = "composeApp.js" devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { static(rootDirPath) static(projectDirPath) } } } binaries.executable() } applyDefaultHierarchyTemplate() sourceSets { val desktopMain by getting val nonWeb by creating { dependsOn(commonMain.get()) dependencies { } } desktopMain.dependsOn(nonWeb) commonMain.dependencies { implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.ui) implementation(libs.compose.components.resources) implementation(libs.compose.material3) implementation(libs.androidx.lifecycle.viewmodel) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.ktor.client.core) implementation(libs.ktor.client.logging) implementation(libs.ktor.client.auth) implementation(libs.ktor.client.content.negotiation) implementation(libs.kotlinx.datetime) implementation(libs.kotlinx.serialization) implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktor.client.auth) implementation(libs.ktor.client.logging) implementation(project(":common")) implementation(kotlin("reflect")) implementation(libs.compose.backhandler) implementation(libs.kotlinx.atomic) implementation(libs.lucide) implementation(libs.koala) implementation(libs.kolor) } desktopMain.dependencies { implementation(compose.desktop.currentOs) implementation(libs.kotlinx.coroutines.swing) implementation(libs.ktor.client.okhttp) implementation(libs.slf4j.simple) implementation(libs.java.keystore) } wasmJsMain.dependencies { implementation(libs.ktor.client.js) } } } compose.desktop { application { mainClass = "com.jaytux.phoebench.clients.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "com.jaytux.phoebench.clients" packageVersion = rootProject.version.toString().split('-')[0] jvmArgs += listOf("--enable-native-access=ALL-UNNAMED") includeAllModules = true buildTypes.release.proguard { configurationFiles.from(file("proguard-rules.pro")) } } } }