From d566dfd84efa5004857a5f429e64f1ea683092cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Doln=C3=ADk?= Date: Wed, 5 Jun 2024 17:42:22 +0200 Subject: [PATCH] Add a convenience configuration to enable distributable builds. --- .../configuration/SkieBuildConfiguration.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/SKIE/skie-gradle/plugin-api/src/common/kotlin/co/touchlab/skie/plugin/configuration/SkieBuildConfiguration.kt b/SKIE/skie-gradle/plugin-api/src/common/kotlin/co/touchlab/skie/plugin/configuration/SkieBuildConfiguration.kt index ece136ab..78600ab2 100644 --- a/SKIE/skie-gradle/plugin-api/src/common/kotlin/co/touchlab/skie/plugin/configuration/SkieBuildConfiguration.kt +++ b/SKIE/skie-gradle/plugin-api/src/common/kotlin/co/touchlab/skie/plugin/configuration/SkieBuildConfiguration.kt @@ -1,4 +1,4 @@ -@file:Suppress("MemberVisibilityCanBePrivate") +@file:Suppress("MemberVisibilityCanBePrivate", "unused") package co.touchlab.skie.plugin.configuration @@ -47,6 +47,19 @@ abstract class SkieBuildConfiguration @Inject constructor(objects: ObjectFactory */ val freeSwiftCompilerArgs: ListProperty = objects.listProperty(String::class.java) + /** + * Configures SKIE to produce distributable frameworks. + * + * This option is only needed when the produced framework will be compiled against on another machine. + * On the other hand, this option is unnecessary when the framework is only used locally, including as a dependency for a binary that is then distributed to other machines. + * + * Enables Swift Library Evolution and `-no-clang-module-breadcrumbs` flag. + */ + fun produceDistributableFramework() { + enableSwiftLibraryEvolution.set(true) + noClangModuleBreadcrumbsInStaticFrameworks.set(true) + } + internal fun buildConfigurationFlags(): Set = setOfNotNull( SkieConfigurationFlag.Build_SwiftLibraryEvolution takeIf enableSwiftLibraryEvolution,