import org.jetbrains.compose.compose import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension buildscript { repositories { mavenLocal() mavenCentral() google() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") } } plugins { kotlin("multiplatform") id("org.jetbrains.compose") } version = "1.0-SNAPSHOT" repositories { mavenLocal() mavenCentral() gradlePluginPortal() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") google()} kotlin { jvm("desktop") js(IR) { browser() binaries.executable() } macosX64 { binaries { executable { entryPoint = "main" freeCompilerArgs += listOf( "-linker-option", "-framework", "-linker-option", "Metal" ) } } } macosArm64 { binaries { executable { entryPoint = "main" freeCompilerArgs += listOf( "-linker-option", "-framework", "-linker-option", "Metal" ) } } } iosX64("uikitX64") { binaries { executable() { entryPoint = "main" freeCompilerArgs += listOf( "-linker-option", "-framework", "-linker-option", "Metal", "-linker-option", "-framework", "-linker-option", "CoreText", "-linker-option", "-framework", "-linker-option", "CoreGraphics" ) } } } iosArm64("uikitArm64") { binaries { executable() { entryPoint = "main" freeCompilerArgs += listOf( "-linker-option", "-framework", "-linker-option", "Metal", "-linker-option", "-framework", "-linker-option", "CoreText", "-linker-option", "-framework", "-linker-option", "CoreGraphics" ) // TODO: the current compose binary surprises LLVM, so disable checks for now. freeCompilerArgs += "-Xdisable-phases=VerifyBitcode" } } } sourceSets { val commonMain by getting { dependencies { implementation(compose.ui) implementation(compose.foundation) implementation(compose.material) implementation(compose.runtime) } } val commonTest by getting { dependencies { implementation(kotlin("test-common")) implementation(kotlin("test-annotations-common")) } } val desktopMain by getting { dependencies { implementation(compose.desktop.currentOs) } } val jsMain by getting { } val nativeMain by creating { dependsOn(commonMain) } val macosMain by creating { dependsOn(nativeMain) } val macosX64Main by getting { dependsOn(macosMain) } val macosArm64Main by getting { dependsOn(macosMain) } val uikitMain by creating { dependsOn(nativeMain) } val uikitX64Main by getting { dependsOn(uikitMain) } val uikitArm64Main by getting { dependsOn(uikitMain) } } } compose.desktop { application { mainClass = "Main_desktopKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "Falling Balls" packageVersion = "1.0.0" windows { menuGroup = "Compose Examples" // see https://wixtoolset.org/documentation/manual/v3/howtos/general/generate_guids.html upgradeUuid = "18159995-d967-4CD2-8885-77BFA97CFA9F" } } } } compose.experimental { web.application {} uikit.application {} } tasks.withType { kotlinOptions.jvmTarget = "11" } kotlin { targets.withType { binaries.all { // TODO: the current compose binary surprises LLVM, so disable checks for now. freeCompilerArgs += "-Xdisable-phases=VerifyBitcode" } } } // a temporary workaround for a bug in jsRun invocation - see https://youtrack.jetbrains.com/issue/KT-48273 afterEvaluate { rootProject.extensions.configure { versions.webpackDevServer.version = "4.0.0" versions.webpackCli.version = "4.9.0" nodeVersion = "16.0.0" } } // TODO: remove when https://youtrack.jetbrains.com/issue/KT-50778 fixed project.tasks.withType(org.jetbrains.kotlin.gradle.dsl.KotlinJsCompile::class.java).configureEach { kotlinOptions.freeCompilerArgs += listOf( "-Xir-dce-runtime-diagnostic=log" ) }