Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion api/multiplatform-swiftpackage.api
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
public final class com/chromaticnoise/multiplatformswiftpackage/MultiplatformSwiftPackagePlugin : org/gradle/api/Plugin {
public static final field Companion Lcom/chromaticnoise/multiplatformswiftpackage/MultiplatformSwiftPackagePlugin$Companion;
public fun <init> ()V
public synthetic fun apply (Ljava/lang/Object;)V
public fun apply (Lorg/gradle/api/Project;)V
Expand Down
22 changes: 13 additions & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.jetbrains.kotlinx:binary-compatibility-validator:0.2.4")
classpath("org.jetbrains.kotlinx:binary-compatibility-validator:0.9.0")
}
}

Expand All @@ -20,16 +19,16 @@ plugins {
version = "2.0.3"

repositories {
jcenter()
mavenCentral()
}

dependencies {
compileOnly(kotlin("gradle-plugin"))
testImplementation("io.kotest:kotest-runner-junit5:4.3.0")
testImplementation("io.kotest:kotest-assertions-core:4.3.0")
testImplementation("io.kotest:kotest-property:4.3.0")
testImplementation("io.mockk:mockk:1.10.0")
testImplementation(kotlin("gradle-plugin"))
compileOnly(kotlin("gradle-plugin", "1.6.21"))
testImplementation("io.kotest:kotest-runner-junit5:5.2.3")
testImplementation("io.kotest:kotest-assertions-core:5.2.3")
testImplementation("io.kotest:kotest-property:5.2.3")
testImplementation("io.mockk:mockk:1.12.3")
testImplementation(kotlin("gradle-plugin", "1.6.21"))
}

java {
Expand All @@ -44,6 +43,11 @@ tasks.withType<Test> {
useJUnitPlatform()
}

project.tasks.named("processResources", Copy::class.java) {
// https://github.com/gradle/gradle/issues/17236
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

extensions.findByName("buildScan")?.withGroovyBuilder {
setProperty("termsOfServiceUrl", "https://gradle.com/terms-of-service")
setProperty("termsOfServiceAgree", "yes")
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package com.chromaticnoise.multiplatformswiftpackage

import com.chromaticnoise.multiplatformswiftpackage.domain.AppleTarget
import com.chromaticnoise.multiplatformswiftpackage.domain.platforms
import com.chromaticnoise.multiplatformswiftpackage.task.*
import com.chromaticnoise.multiplatformswiftpackage.task.registerCreateSwiftPackageTask
import com.chromaticnoise.multiplatformswiftpackage.task.registerCreateUniversalIosSimulatorFrameworkTask
import com.chromaticnoise.multiplatformswiftpackage.task.registerCreateXCFrameworkTask
import com.chromaticnoise.multiplatformswiftpackage.task.registerCreateZipFileTask
import org.gradle.api.Plugin
Expand All @@ -25,6 +27,10 @@ public class MultiplatformSwiftPackagePlugin : Plugin<Project> {
nativeTargets = kmpExtension.targets.toList(),
platforms = extension.targetPlatforms.platforms
)
project.registerCreateUniversalMacosFrameworkTask()
project.registerCreateUniversalIosSimulatorFrameworkTask()
project.registerCreateUniversalWatchosSimulatorFrameworkTask()
project.registerCreateUniversalTvosSimulatorFrameworkTask()
project.registerCreateXCFrameworkTask()
project.registerCreateZipFileTask()
project.registerCreateSwiftPackageTask()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.chromaticnoise.multiplatformswiftpackage.domain

import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBinary
import java.io.File

internal class AppleFramework(
val outputFile: AppleFrameworkOutputFile,
val name: AppleFrameworkName,
val linkTask: AppleFrameworkLinkTask
val linkTask: AppleFrameworkLinkTask,
val framework: Framework? = null
) {

val dsymFile: File get() = File(outputFile.parent, "${name.value}.framework.dSYM")
Expand All @@ -18,7 +20,8 @@ internal fun AppleFramework.Companion.of(binary: NativeBinary?): AppleFramework?
AppleFramework(
AppleFrameworkOutputFile(it.outputFile),
AppleFrameworkName(it.baseName),
AppleFrameworkLinkTask(it.linkTaskName)
AppleFrameworkLinkTask(it.linkTaskName),
binary as Framework
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@ package com.chromaticnoise.multiplatformswiftpackage.domain
internal enum class TargetName(val identifier: String) {
IOSarm64("iosArm64"),
IOSx64("iosX64"),
IOSSimulatorArm64("iosSimulatorArm64"),
WatchOSarm32("watchosArm32"),
WatchOSarm64("watchosArm64"),
WatchOSx86("watchosX86"),
WatchOSx64("watchosX64"),
WatchOSSimulatorArm64("watchosSimulatorArm64"),
TvOSarm64("tvosArm64"),
TvOSx64("tvosX64"),
MacOSx64("macosX64");
TvOSSimulatorArm64("tvosSimulatorArm64"),
MacOSx64("macosX64"),
MacOSArm64("macosArm64");

internal companion object {
private val map = values().associateBy(TargetName::identifier)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@ internal val Collection<Either<List<PluginConfiguration.PluginConfigurationError
internal val TargetName.konanTarget: KonanTarget get() = when (this) {
TargetName.IOSarm64 -> KonanTarget.IOS_ARM64
TargetName.IOSx64 -> KonanTarget.IOS_X64
TargetName.IOSSimulatorArm64 -> KonanTarget.IOS_SIMULATOR_ARM64
TargetName.WatchOSarm32 -> KonanTarget.WATCHOS_ARM32
TargetName.WatchOSarm64 -> KonanTarget.WATCHOS_ARM64
TargetName.WatchOSx86 -> KonanTarget.WATCHOS_X86
TargetName.WatchOSx64 -> KonanTarget.WATCHOS_X64
TargetName.WatchOSSimulatorArm64 -> KonanTarget.WATCHOS_SIMULATOR_ARM64
TargetName.TvOSarm64 -> KonanTarget.TVOS_ARM64
TargetName.TvOSx64 -> KonanTarget.TVOS_X64
TargetName.TvOSSimulatorArm64 -> KonanTarget.TVOS_SIMULATOR_ARM64
TargetName.MacOSx64 -> KonanTarget.MACOS_X64
TargetName.MacOSArm64 -> KonanTarget.MACOS_ARM64
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import groovy.lang.Closure
import org.gradle.util.ConfigureUtil

/**
* DSL to create instances of [TargetPlatform].
*/
* DSL to create instances of [TargetPlatform].
*/
public class TargetPlatformDsl {
internal var targetPlatforms = mutableListOf<Either<List<PluginConfigurationError>, TargetPlatform>>()

Expand All @@ -21,7 +21,14 @@ public class TargetPlatformDsl {
* @param version builder for an instance of [PlatformVersion]
*/
public fun iOS(version: PlatformVersionDsl.() -> Unit) {
targetsInternal(listOf(Either.Right(TargetName.IOSarm64), Either.Right(TargetName.IOSx64)), version)
targetsInternal(
listOf(
Either.Right(TargetName.IOSarm64),
Either.Right(TargetName.IOSx64),
Either.Right(TargetName.IOSSimulatorArm64)
),
version
)
}

public fun iOS(version: Closure<PlatformVersionDsl>) {
Expand All @@ -34,11 +41,14 @@ public class TargetPlatformDsl {
* @param version builder for an instance of [PlatformVersion]
*/
public fun watchOS(version: PlatformVersionDsl.() -> Unit) {
targetsInternal(listOf(
Either.Right(TargetName.WatchOSarm32),
Either.Right(TargetName.WatchOSarm64),
Either.Right(TargetName.WatchOSx86),
Either.Right(TargetName.WatchOSx64)),
targetsInternal(
listOf(
Either.Right(TargetName.WatchOSarm32),
Either.Right(TargetName.WatchOSarm64),
Either.Right(TargetName.WatchOSx86),
Either.Right(TargetName.WatchOSx64),
Either.Right(TargetName.WatchOSSimulatorArm64)
),
version
)
}
Expand All @@ -53,7 +63,14 @@ public class TargetPlatformDsl {
* @param version builder for an instance of [PlatformVersion]
*/
public fun tvOS(version: PlatformVersionDsl.() -> Unit) {
targetsInternal(listOf(Either.Right(TargetName.TvOSarm64), Either.Right(TargetName.TvOSx64)), version)
targetsInternal(
listOf(
Either.Right(TargetName.TvOSarm64),
Either.Right(TargetName.TvOSx64),
Either.Right(TargetName.TvOSSimulatorArm64)
),
version
)
}

public fun tvOS(version: Closure<PlatformVersionDsl>) {
Expand All @@ -66,7 +83,13 @@ public class TargetPlatformDsl {
* @param version builder for an instance of [PlatformVersion]
*/
public fun macOS(version: PlatformVersionDsl.() -> Unit) {
targetsInternal(listOf(Either.Right(TargetName.MacOSx64)), version)
targetsInternal(
listOf(
Either.Right(TargetName.MacOSx64),
Either.Right(TargetName.MacOSArm64)
),
version
)
}

public fun macOS(version: Closure<PlatformVersionDsl>) {
Expand Down
Loading