Skip to content

Commit e866497

Browse files
committed
Update Package.swift to conditionally include StaticInternalSwiftSyntaxParser as a dependency of SwiftSyntax
1 parent 75e6047 commit e866497

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

Package.swift

+19-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.1
1+
// swift-tools-version:5.3
22

33
import PackageDescription
44
import Foundation
@@ -16,6 +16,21 @@ let package = Package(
1616
]
1717
)
1818

19+
// Include the parser library as a binary dependency if both the host and the target are macOS.
20+
// - We need to require that the host is macOS (checked by `#if os(macOS)`) because package resolve will download and unzip the referenced framework, which requires `unzip` to be installed. Only macOS guarantees that `unzip` is installed, the Swift Docker images don’t have unzip installed, so package resolve would fail.
21+
// - We need to require that the target is macOS (checked by `.when`) because binary dependencies are only supported by SwiftPM on macOS.
22+
#if os(macOS)
23+
let parserLibraryTargets: [Target] = [.binaryTarget(
24+
name: "lib_InternalSwiftSyntaxParser",
25+
url: "https://github.com/keith/StaticInternalSwiftSyntaxParser/releases/download/5.5.2/lib_InternalSwiftSyntaxParser.xcframework.zip",
26+
checksum: "96bbc9ab4679953eac9ee46778b498cb559b8a7d9ecc658e54d6679acfbb34b8"
27+
)]
28+
let parserLibraryDependency: [Target.Dependency] = [.target(name: "lib_InternalSwiftSyntaxParser", condition: .when(platforms: [.macOS]))]
29+
#else
30+
let parserLibraryTargets: [Target] = []
31+
let parserLibraryDependency: [Target.Dependency] = []
32+
#endif
33+
1934
let swiftSyntaxTarget: PackageDescription.Target
2035

2136
/// If we are in a controlled CI environment, we can use internal compiler flags
@@ -32,13 +47,14 @@ if ProcessInfo.processInfo.environment["SWIFT_BUILD_SCRIPT_ENVIRONMENT"] != nil
3247
// Disable it when we're in a controlled CI environment.
3348
swiftSyntaxUnsafeFlags += ["-enforce-exclusivity=unchecked"]
3449

35-
swiftSyntaxTarget = .target(name: "SwiftSyntax", dependencies: ["_CSwiftSyntax"],
50+
swiftSyntaxTarget = .target(name: "SwiftSyntax", dependencies: ["_CSwiftSyntax"] + parserLibraryDependency,
3651
swiftSettings: [.unsafeFlags(swiftSyntaxUnsafeFlags)]
3752
)
3853
} else {
39-
swiftSyntaxTarget = .target(name: "SwiftSyntax", dependencies: ["_CSwiftSyntax"])
54+
swiftSyntaxTarget = .target(name: "SwiftSyntax", dependencies: ["_CSwiftSyntax"] + parserLibraryDependency)
4055
}
4156

57+
package.targets.append(contentsOf: parserLibraryTargets)
4258
package.targets.append(swiftSyntaxTarget)
4359

4460
let libraryType: Product.Library.LibraryType

0 commit comments

Comments
 (0)