|
| 1 | +// swift-tools-version: 6.1 |
| 2 | +// The swift-tools-version declares the minimum version of Swift required to build this package. |
| 3 | + |
| 4 | +import PackageDescription |
| 5 | + |
| 6 | +func envEnable(_ key: String, default defaultValue: Bool = false) -> Bool { |
| 7 | + guard let value = Context.environment[key] else { |
| 8 | + return defaultValue |
| 9 | + } |
| 10 | + if value == "1" { |
| 11 | + return true |
| 12 | + } else if value == "0" { |
| 13 | + return false |
| 14 | + } else { |
| 15 | + return defaultValue |
| 16 | + } |
| 17 | +} |
| 18 | + |
| 19 | +var sharedSwiftSettings: [SwiftSetting] = [ |
| 20 | + .swiftLanguageMode(.v6), |
| 21 | +] |
| 22 | + |
| 23 | +#if os(macOS) |
| 24 | +// NOTE: #if os(macOS) check is not accurate if we are cross compiling for Linux platform. So we add an env key to specify it. |
| 25 | +let buildForDarwinPlatform = envEnable("OPENGRAPHICS_BUILD_FOR_DARWIN_PLATFORM", default: true) |
| 26 | +#else |
| 27 | +let buildForDarwinPlatform = envEnable("OPENGRAPHICS_BUILD_FOR_DARWIN_PLATFORM") |
| 28 | +#endif |
| 29 | + |
| 30 | +let coreGraphicsCondition = envEnable("OPENGRAPHICS_COREGRAPHICS", default: buildForDarwinPlatform) |
| 31 | +if coreGraphicsCondition { |
| 32 | + sharedSwiftSettings.append(.define("OPENGRAPHICS_COREGRAPHICS")) |
| 33 | +} |
| 34 | + |
| 35 | +let warningsAsErrorsCondition = envEnable("OPENGRAPHICS_WERROR", default: true) |
| 36 | +if warningsAsErrorsCondition { |
| 37 | + sharedSwiftSettings.append(.unsafeFlags(["-warnings-as-errors"])) |
| 38 | +} |
| 39 | + |
| 40 | +let package = Package( |
| 41 | + name: "OpenGraphics", |
| 42 | + products: [ |
| 43 | + .library(name: "OpenGraphics", targets: ["OpenGraphics"]), |
| 44 | + .library(name: "OpenGraphicsShims", targets: ["OpenGraphicsShims"]), |
| 45 | + ], |
| 46 | + dependencies: [ |
| 47 | + .package(url: "https://github.com/apple/swift-numerics", from: "1.0.3"), |
| 48 | + ], |
| 49 | + targets: [ |
| 50 | + .target(name: "OpenGraphics"), |
| 51 | + .target( |
| 52 | + name: "OpenGraphicsShims", |
| 53 | + dependencies: ["OpenGraphics"], |
| 54 | + swiftSettings: sharedSwiftSettings, |
| 55 | + linkerSettings: [ |
| 56 | + .linkedFramework("CoreGraphics", .when(platforms: .darwinPlatforms)), |
| 57 | + ] |
| 58 | + ), |
| 59 | + .testTarget( |
| 60 | + name: "OpenGraphicsShimsTests", |
| 61 | + dependencies: [ |
| 62 | + "OpenGraphicsShims", |
| 63 | + .product(name: "Numerics", package: "swift-numerics"), |
| 64 | + ], |
| 65 | + swiftSettings: sharedSwiftSettings |
| 66 | + ), |
| 67 | + ] |
| 68 | +) |
| 69 | + |
| 70 | +extension [Platform] { |
| 71 | + static var darwinPlatforms: [Platform] { |
| 72 | + [.iOS, .macOS, .tvOS, .watchOS, .visionOS, .macCatalyst] |
| 73 | + } |
| 74 | + |
| 75 | + static var nonDarwinPlatforms: [Platform] { |
| 76 | + [.linux, .android, .wasi, .openbsd, .windows] |
| 77 | + } |
| 78 | +} |
0 commit comments