-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPackage.swift
More file actions
112 lines (103 loc) · 3.28 KB
/
Copy pathPackage.swift
File metadata and controls
112 lines (103 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// swift-tools-version: 6.3
// SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
//
// SPDX-License-Identifier: Apache-2.0
// Root manifest for `reallyme-codec`.
//
// SwiftPM and Xcode only read `Package.swift` at the repository root when a
// package is consumed by URL, e.g.
//
// .package(url: "https://github.com/reallyme/codec", from: "0.2.1")
// .product(name: "ReallyMeCodec", package: "codec")
//
// The Swift sources live under `packages/swift/` to keep symmetry with the
// other language lanes; this manifest points its targets there explicitly so
// there is a single source of truth.
import PackageDescription
import Foundation
let ffiArtifactChecksumPlaceholder =
"0000000000000000000000000000000000000000000000000000000000000000"
let ffiArtifactChecksum = "348d6525669c530ee846f7989aadb861233e125422b7759f5cdde8e8715de9cf"
let ffiArtifactVersion = "0.2.1"
let ffiArtifactLocalPathOverride = ""
let hasReleasedFfiArtifact = ffiArtifactChecksum != ffiArtifactChecksumPlaceholder
let useRuntimeFfiProvider =
ProcessInfo.processInfo.environment["REALLYME_CODEC_SWIFTPM_RUNTIME_FFI"] == "1"
var codecTargetDependencies: [Target.Dependency] = []
var codecSwiftSettings: [SwiftSetting] = []
var packageTargets: [Target] = []
codecTargetDependencies.append("ReallyMeCodecProto")
if hasReleasedFfiArtifact && !useRuntimeFfiProvider {
codecTargetDependencies.append("ReallyMeCodecFFI")
codecSwiftSettings.append(.define("REALLYME_CODEC_LINKED_FFI"))
if ffiArtifactLocalPathOverride.isEmpty {
packageTargets.append(
.binaryTarget(
name: "ReallyMeCodecFFI",
url: "https://github.com/reallyme/codec/releases/download/v\(ffiArtifactVersion)/ReallyMeCodecFFI.xcframework.zip",
checksum: ffiArtifactChecksum
)
)
} else {
packageTargets.append(
.binaryTarget(
name: "ReallyMeCodecFFI",
path: ffiArtifactLocalPathOverride
)
)
}
}
codecTargetDependencies.append(
.product(name: "SwiftProtobuf", package: "swift-protobuf")
)
packageTargets.append(
.target(
name: "ReallyMeCodec",
dependencies: codecTargetDependencies,
path: "packages/swift/Sources/ReallyMeCodec",
swiftSettings: codecSwiftSettings
)
)
packageTargets.append(
.target(
name: "ReallyMeCodecProto",
dependencies: [
.product(name: "SwiftProtobuf", package: "swift-protobuf"),
],
path: "gen/swift"
)
)
packageTargets.append(
.testTarget(
name: "ReallyMeCodecTests",
dependencies: [
"ReallyMeCodec",
"ReallyMeCodecProto",
],
path: "packages/swift/Tests/ReallyMeCodecTests"
)
)
let package = Package(
name: "reallyme-codec",
platforms: [
.macOS(.v13),
.iOS(.v16),
],
products: [
.library(
name: "ReallyMeCodec",
targets: ["ReallyMeCodec"]
),
.library(
name: "ReallyMeCodecProto",
targets: ["ReallyMeCodecProto"]
),
],
dependencies: [
.package(
url: "https://github.com/apple/swift-protobuf.git",
from: "1.38.1"
),
],
targets: packageTargets
)