4
4
import Foundation
5
5
import PackageDescription
6
6
7
- let isXcodeEnv = ProcessInfo . processInfo. environment [ " __CFBundleIdentifier " ] == " com.apple.dt.Xcode "
7
+ func envEnable( _ key: String , default defaultValue: Bool = false ) -> Bool {
8
+ guard let value = Context . environment [ key] else {
9
+ return defaultValue
10
+ }
11
+ if value == " 1 " {
12
+ return true
13
+ } else if value == " 0 " {
14
+ return false
15
+ } else {
16
+ return defaultValue
17
+ }
18
+ }
19
+
20
+ let isXcodeEnv = Context . environment [ " __CFBundleIdentifier " ] == " com.apple.dt.Xcode "
21
+
8
22
// Xcode use clang as linker which supports "-iframework" while SwiftPM use swiftc as linker which supports "-Fsystem"
9
23
let systemFrameworkSearchFlag = isXcodeEnv ? " -iframework " : " -Fsystem "
10
24
25
+ var sharedSwiftSettings : [ SwiftSetting ] = [
26
+ . enableExperimentalFeature( " AccessLevelOnImport " ) ,
27
+ . define( " OPENSWIFTUI_SUPPRESS_DEPRECATED_WARNINGS " ) ,
28
+ ]
29
+
30
+ let warningsAsErrorsCondition = envEnable ( " OPENSWIFTUI_WERROR " , default: isXcodeEnv)
31
+ if warningsAsErrorsCondition {
32
+ sharedSwiftSettings. append ( . unsafeFlags( [ " -warnings-as-errors " ] ) )
33
+ }
34
+
11
35
let openSwiftUITarget = Target . target (
12
36
name: " OpenSwiftUI " ,
13
37
dependencies: [
14
38
" OpenSwiftUIShims " ,
15
39
. target( name: " CoreServices " , condition: . when( platforms: [ . iOS] ) ) ,
16
40
. product( name: " OpenGraphShims " , package : " OpenGraph " ) ,
17
41
] ,
18
- swiftSettings: [
19
- . enableExperimentalFeature( " AccessLevelOnImport " ) ,
20
- . define( " OPENSWIFTUI_SUPPRESS_DEPRECATED_WARNINGS " ) ,
21
- ]
42
+ swiftSettings: sharedSwiftSettings
22
43
)
23
44
let openSwiftUITestTarget = Target . testTarget (
24
45
name: " OpenSwiftUITests " ,
25
46
dependencies: [
26
47
" OpenSwiftUI " ,
27
48
] ,
28
- exclude: [ " README.md " ]
49
+ exclude: [ " README.md " ] ,
50
+ swiftSettings: sharedSwiftSettings
51
+ )
52
+ let openSwiftUITempTestTarget = Target . testTarget (
53
+ name: " OpenSwiftUITempTests " ,
54
+ dependencies: [
55
+ " OpenSwiftUI " ,
56
+ ] ,
57
+ exclude: [ " README.md " ] ,
58
+ swiftSettings: sharedSwiftSettings
29
59
)
30
60
let openSwiftUICompatibilityTestTarget = Target . testTarget (
31
61
name: " OpenSwiftUICompatibilityTests " ,
32
- exclude: [ " README.md " ]
62
+ exclude: [ " README.md " ] ,
63
+ swiftSettings: sharedSwiftSettings
33
64
)
34
65
35
66
let package = Package (
@@ -64,19 +95,6 @@ let package = Package(
64
95
]
65
96
)
66
97
67
- func envEnable( _ key: String , default defaultValue: Bool = false ) -> Bool {
68
- guard let value = ProcessInfo . processInfo. environment [ key] else {
69
- return defaultValue
70
- }
71
- if value == " 1 " {
72
- return true
73
- } else if value == " 0 " {
74
- return false
75
- } else {
76
- return defaultValue
77
- }
78
- }
79
-
80
98
#if os(macOS)
81
99
let attributeGraphCondition = envEnable ( " OPENGRAPH_ATTRIBUTEGRAPH " , default: true )
82
100
#else
@@ -98,6 +116,7 @@ extension Target {
98
116
if attributeGraphCondition {
99
117
openSwiftUITarget. addAGSettings ( )
100
118
openSwiftUITestTarget. addAGSettings ( )
119
+ openSwiftUITempTestTarget. addAGSettings ( )
101
120
openSwiftUICompatibilityTestTarget. addAGSettings ( )
102
121
}
103
122
@@ -139,12 +158,19 @@ if swiftLogCondition {
139
158
let swiftTestingCondition = envEnable ( " OPENSWIFTUI_SWIFT_TESTING " , default: true )
140
159
if swiftTestingCondition {
141
160
package . dependencies. append (
142
- . package ( url: " https://github.com/apple/swift-testing " , from: " 0.3.0 " )
161
+ // Fix it to be 0.3.0 before we bump to Swift 5.10
162
+ . package ( url: " https://github.com/apple/swift-testing " , exact: " 0.3.0 " )
143
163
)
144
164
openSwiftUITestTarget. dependencies. append (
145
165
. product( name: " Testing " , package : " swift-testing " )
146
166
)
147
167
package . targets. append ( openSwiftUITestTarget)
168
+
169
+ openSwiftUITempTestTarget. dependencies. append (
170
+ . product( name: " Testing " , package : " swift-testing " )
171
+ )
172
+ package . targets. append ( openSwiftUITempTestTarget)
173
+
148
174
openSwiftUICompatibilityTestTarget. dependencies. append (
149
175
. product( name: " Testing " , package : " swift-testing " )
150
176
)
0 commit comments