|  | 
| 1 | 1 | // swift-tools-version:6.1 | 
| 2 | 2 | import CompilerPluginSupport | 
| 3 | 3 | import PackageDescription | 
| 4 |  | -import typealias Foundation.ProcessInfo | 
|  | 4 | +import class Foundation.ProcessInfo | 
|  | 5 | + | 
|  | 6 | +let useSwiftSyntaxXcf: Bool = ProcessInfo.processInfo.environment["ORDO_USE_SWIFT_SYNTAX_XCF"] ?? "true" == "true" | 
|  | 7 | + | 
|  | 8 | +func makeSwiftSyntaxDependency() -> [Package.Dependency] { | 
|  | 9 | +    let xcFrameworksRepo: String = "https://github.com/ordo-one/swift-syntax-xcframeworks" | 
|  | 10 | +    let officialSyntaxRepo: String = "https://github.com/swiftlang/swift-syntax" | 
|  | 11 | + | 
|  | 12 | +    let syntaxUrl: String | 
|  | 13 | +    #if os(iOS) | 
|  | 14 | +        syntaxUrl = xcFrameworksRepo | 
|  | 15 | +    #elseif os(Linux) | 
|  | 16 | +        syntaxUrl = officialSyntaxRepo | 
|  | 17 | +    #else | 
|  | 18 | +        syntaxUrl = useSwiftSyntaxXcf ? xcFrameworksRepo : officialSyntaxRepo | 
|  | 19 | +    #endif | 
|  | 20 | + | 
|  | 21 | +    return [.package(url: syntaxUrl, from: "601.0.1")] | 
|  | 22 | +} | 
|  | 23 | + | 
|  | 24 | +func makeSwiftSyntaxTargetDependencies() -> [Target.Dependency] { | 
|  | 25 | +    let xcFrameworkDependencies: [Target.Dependency] = [ | 
|  | 26 | +        .product(name: "SwiftSyntaxWrapper", package: "swift-syntax-xcframeworks") | 
|  | 27 | +    ] | 
|  | 28 | + | 
|  | 29 | +    let standardSyntaxDependencies: [Target.Dependency] = [ | 
|  | 30 | +        .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), | 
|  | 31 | +        .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), | 
|  | 32 | +    ] | 
|  | 33 | + | 
|  | 34 | +    #if os(iOS) | 
|  | 35 | +        return xcFrameworkDependencies | 
|  | 36 | +    #elseif os(Linux) | 
|  | 37 | +        return standardSyntaxDependencies | 
|  | 38 | +    #else | 
|  | 39 | +        if useSwiftSyntaxXcf { | 
|  | 40 | +            return xcFrameworkDependencies | 
|  | 41 | +        } | 
|  | 42 | +        return standardSyntaxDependencies | 
|  | 43 | +    #endif | 
|  | 44 | +} | 
| 5 | 45 | 
 | 
| 6 | 46 | let package: Package = .init( | 
| 7 | 47 |     name: "bijection", | 
| 8 | 48 |     platforms: [.macOS(.v15), .iOS(.v18), .tvOS(.v18), .visionOS(.v2), .watchOS(.v11)], | 
| 9 | 49 |     products: [ | 
| 10 | 50 |         .library(name: "Bijection", targets: ["Bijection"]), | 
| 11 | 51 |     ], | 
| 12 |  | -    dependencies: [ | 
| 13 |  | -        .package(url: "https://github.com/swiftlang/swift-syntax", from: "601.0.0"), | 
| 14 |  | -    ], | 
|  | 52 | +    dependencies: makeSwiftSyntaxDependency(), | 
| 15 | 53 |     targets: [ | 
| 16 | 54 |         .macro( | 
| 17 | 55 |             name: "BijectionMacro", | 
| 18 |  | -            dependencies: [ | 
| 19 |  | -                .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), | 
| 20 |  | -                .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), | 
| 21 |  | -            ] | 
|  | 56 | +            dependencies: makeSwiftSyntaxTargetDependencies(), | 
| 22 | 57 |         ), | 
| 23 | 58 |         .target( | 
| 24 | 59 |             name: "Bijection", | 
|  | 
0 commit comments