-
Notifications
You must be signed in to change notification settings - Fork 1
/
Package.swift
116 lines (107 loc) · 3.52 KB
/
Package.swift
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
113
114
115
116
// swift-tools-version: 5.9
import PackageDescription
let currentDirectory = Context.packageDirectory
let swiftSettings: [SwiftSetting] = [
.unsafeFlags(["-I\(currentDirectory)/vendor/sentry-native/include"])
]
var clientLinkerSettings: [LinkerSetting] = []
// Generate the linker paths that are required on different platforms
let linkerBase = "-L\(currentDirectory)/vendor/sentry-native/lib"
let platforms: [(String, Platform)] = [
("macOS", .macOS),
("linux64", .linux),
("win64", .windows)
]
clientLinkerSettings += platforms.map {
.unsafeFlags(["\(linkerBase)/\($0.0)"], .when(platforms: [$0.1]))
}
let guiLinkerSettings: [LinkerSetting] = [
.unsafeFlags(["-Xlinker", "/SUBSYSTEM:WINDOWS"], .when(configuration: .release)),
// Update the entry point to point to the generated swift function, this lets us keep the same main method
// for debug/release
.unsafeFlags(["-Xlinker", "/ENTRY:mainCRTStartup"], .when(configuration: .release)),
]
let package = Package(
name: "swift-sentry",
platforms: [
.macOS(.v10_15),
],
products: [
.library(
name: "swift-sentry",
targets: ["SwiftSentry"]
)
],
targets: [
.target(
name: "sentry",
publicHeadersPath: "include",
swiftSettings: swiftSettings,
linkerSettings: clientLinkerSettings
),
.target(
name: "SwiftSentry",
dependencies: ["sentry"],
swiftSettings: swiftSettings
),
.testTarget(
name: "SwiftSentryTests",
dependencies: ["SwiftSentry"],
swiftSettings: swiftSettings
),
]
)
#if os(macOS)
package.products += [
.executable(
name: "SentryExampleMacOS",
targets: ["SentryExampleMacOS"]
)
]
package.targets += [
.executableTarget(
name: "SentryExampleMacOS",
dependencies: ["SwiftSentry"],
path: "Examples/SentryExampleMacOS",
swiftSettings: swiftSettings + [.unsafeFlags(["-parse-as-library"])]
)
]
#endif
#if os(Windows)
package.products += [
.executable(
name: "SentryExampleWin",
targets: ["SentryExampleWin"]
)
]
package.dependencies += [
// This revision is important since it's the first one before the swift-win32 repo moved to versioned symlinks
// for different swift-tools-versions.
.package(url: "https://github.com/compnerd/swift-win32", revision: "07e91e67e86f173743329c6753d9e66ac4727830"),
.package(url: "https://github.com/thebrowsercompany/swift-windowsappsdk", branch: "main"),
.package(url: "https://github.com/thebrowsercompany/swift-windowsfoundation", branch: "main"),
.package(url: "https://github.com/thebrowsercompany/swift-winui", branch: "main"),
]
package.targets += [
.executableTarget(
name: "SentryExampleWin",
dependencies: [
"SwiftSentry",
.product(name: "SwiftWin32", package: "swift-win32"),
],
path: "Examples/SentryExampleWin",
swiftSettings: swiftSettings + [.unsafeFlags(["-parse-as-library"])]
),
.executableTarget(
name: "SentryExampleWinUI",
dependencies: [
"SwiftSentry",
.product(name: "WinUI", package: "swift-winui"),
.product(name: "WindowsFoundation", package: "swift-windowsfoundation"),
],
path: "Examples/SentryExampleWinUI",
swiftSettings: swiftSettings + [.unsafeFlags(["-parse-as-library"])],
linkerSettings: guiLinkerSettings
),
]
#endif