From 7168467cc02b330b459910ecf014b9796e9f8cff Mon Sep 17 00:00:00 2001 From: "Bassam (Sam) Khouri" Date: Wed, 2 Apr 2025 09:08:54 -0400 Subject: [PATCH] Sever TSC/Driver dependencies if using SwiftBuild Framework The SwiftBuild project has a dependency on Swift Driver, which has a dependency on Swift Tools Support Core (STSC). Swift Package Manager (SwiftPM) executable targets also have a dependency on STSC. Sever SwiftPM package dependency on STSC if the SWIFTPM_SWBUILD_FRAMEWORK environment variable is set so we can indirectly pull the STCS dependency on the dynamic library that will be pulled in via SwiftDriver. --- Package.swift | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/Package.swift b/Package.swift index 9fbb3157f9b..da40a0ec1ab 100644 --- a/Package.swift +++ b/Package.swift @@ -100,6 +100,27 @@ if ProcessInfo.processInfo.environment["SWIFTCI_INSTALL_RPATH_OS"] == "android" */ let autoProducts = [swiftPMProduct, swiftPMDataModelProduct] +let shoudUseSwiftBuildFramework = (ProcessInfo.processInfo.environment["SWIFTPM_SWBUILD_FRAMEWORK"] != nil) + +let swiftDriverDeps: [Target.Dependency] +let swiftTSCBasicsDeps: [Target.Dependency] +let swiftToolsCoreSupportAutoDeps: [Target.Dependency] + +if shoudUseSwiftBuildFramework { + swiftDriverDeps = [] + swiftTSCBasicsDeps = [] + swiftToolsCoreSupportAutoDeps = [] +} else { + swiftDriverDeps = [ + .product(name: "SwiftDriver", package: "swift-driver") + ] + swiftTSCBasicsDeps = [ + .product(name: "TSCBasic", package: "swift-tools-support-core"), + ] + swiftToolsCoreSupportAutoDeps = [ + .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core") + ] +} let package = Package( name: "SwiftPM", platforms: [ @@ -244,9 +265,8 @@ let package = Package( .product(name: "SwiftToolchainCSQLite", package: "swift-toolchain-sqlite", condition: .when(platforms: [.windows, .android])), .product(name: "DequeModule", package: "swift-collections"), .product(name: "OrderedCollections", package: "swift-collections"), - .product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"), .product(name: "SystemPackage", package: "swift-system"), - ], + ] + swiftToolsCoreSupportAutoDeps, exclude: ["CMakeLists.txt", "Vendor/README.md"], swiftSettings: swift6CompatibleExperimentalFeatures + [ .enableExperimentalFeature("StrictConcurrency"), @@ -309,8 +329,7 @@ let package = Package( name: "SwiftFixIt", dependencies: [ "Basics", - .product(name: "TSCBasic", package: "swift-tools-support-core"), - ] + swiftSyntaxDependencies( + ] + swiftTSCBasicsDeps + swiftSyntaxDependencies( ["SwiftDiagnostics", "SwiftIDEUtils", "SwiftParser", "SwiftSyntax"] ), exclude: ["CMakeLists.txt"], @@ -474,10 +493,9 @@ let package = Package( "PackageGraph", "SPMBuildCore", "SPMLLBuild", - .product(name: "SwiftDriver", package: "swift-driver"), .product(name: "OrderedCollections", package: "swift-collections"), "DriverSupport", - ], + ] + swiftDriverDeps, exclude: ["CMakeLists.txt"], swiftSettings: commonExperimentalFeatures + [ .unsafeFlags(["-static"]), @@ -488,8 +506,7 @@ let package = Package( dependencies: [ "Basics", "PackageModel", - .product(name: "SwiftDriver", package: "swift-driver"), - ], + ] + swiftDriverDeps, exclude: ["CMakeLists.txt"], swiftSettings: commonExperimentalFeatures + [ .unsafeFlags(["-static"]), @@ -1095,7 +1112,7 @@ if ProcessInfo.processInfo.environment["ENABLE_APPLE_PRODUCT_TYPES"] == "1" { } } -if ProcessInfo.processInfo.environment["SWIFTPM_SWBUILD_FRAMEWORK"] == nil { +if !shoudUseSwiftBuildFramework { let swiftbuildsupport: Target = package.targets.first(where: { $0.name == "SwiftBuildSupport" } )! swiftbuildsupport.dependencies += [