-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathPackage.swift
More file actions
95 lines (86 loc) · 2.67 KB
/
Package.swift
File metadata and controls
95 lines (86 loc) · 2.67 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
// swift-tools-version: 6.0
import Foundation
import PackageDescription
let env = ProcessInfo.processInfo.environment
let includeBenchmarks = env["TOMLDECODER_BENCHMARKS"] == "1"
let includeDocs = env["TOMLDECODER_DOCS"] == "1" || env["SPI_GENERATE_DOCS"] != nil
let includeFormatting = env["TOMLDECODER_FORMATTING"] == "1"
var benchmarksDeps: [Package.Dependency] = includeBenchmarks ? [
.package(
url: "https://github.com/ordo-one/package-benchmark",
exact: "1.29.6"
),
] : []
var docsDeps: [Package.Dependency] = includeDocs ? [
.package(
// prevent Swift Package Index from using this dependency
url: "https://github.com/apple/swift-docc-plugin",
exact: "1.4.5"
),
] : []
var formattingDeps: [Package.Dependency] = includeFormatting ? [
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.58.6"),
] : []
var targets: [Target] = [
.executableTarget(
name: "compliance",
dependencies: ["TOMLDecoder"]
),
.target(
name: "TOMLDecoder",
exclude: ["gyb"],
swiftSettings: [
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("InternalImportsByDefault"),
.enableUpcomingFeature("MemberImportVisibility"),
]
),
]
var testTargets: [Target] = [
.target(
name: "Resources",
exclude: ["fixtures"]
),
.target(
name: "ProlepticGregorianTestHelpers",
publicHeadersPath: "include"
),
.testTarget(
name: "TOMLDecoderTests",
dependencies: [
"ProlepticGregorianTestHelpers",
"Resources",
"TOMLDecoder",
],
exclude: [
"gyb",
"invalid_fixtures",
"valid_fixtures",
]
),
]
var benchmarkTargets: [Target] = includeBenchmarks ? [
.executableTarget(
name: "TOMLDecoderBenchmarks",
dependencies: [
"TOMLDecoder",
"Resources",
.product(name: "Benchmark", package: "package-benchmark"),
],
path: "Benchmarks/TOMLDecoderBenchmarks",
plugins: [
.plugin(name: "BenchmarkPlugin", package: "package-benchmark"),
]
),
] : []
let package = Package(
name: "TOMLDecoder",
platforms: [.iOS(.v13), .tvOS(.v13), .watchOS(.v6), .macOS(includeBenchmarks ? .v13 : .v10_15), .visionOS(.v1)],
products: [
.executable(name: "compliance", targets: ["compliance"]),
.library(name: "TOMLDecoder", targets: ["TOMLDecoder"]),
],
dependencies: benchmarksDeps + docsDeps + formattingDeps,
targets: targets + testTargets + benchmarkTargets,
cxxLanguageStandard: .cxx20
)