33import Foundation
44import PackageDescription
55
6+ // MARK: - Parse build arguments
7+
8+ func hasEnvironmentVariable( _ name: String ) -> Bool {
9+ return ProcessInfo . processInfo. environment [ name] != nil
10+ }
11+
12+ /// Set when building swift-syntax using swift-syntax-dev-utils or in Swift CI in general.
13+ ///
14+ /// Modifies the build in the following ways
15+ /// - Enables assertions even in release builds
16+ /// - Removes the dependency of swift-syntax on os_log
17+ let buildScriptEnvironment = hasEnvironmentVariable ( " SWIFT_BUILD_SCRIPT_ENVIRONMENT " )
18+
19+ /// Check that the layout of the syntax tree is correct.
20+ ///
21+ /// See CONTRIBUTING.md for more information
22+ let rawSyntaxValidation = hasEnvironmentVariable ( " SWIFTSYNTAX_ENABLE_RAWSYNTAX_VALIDATION " )
23+
24+ /// Mutate the input of `assertParse` test cases.
25+ ///
26+ /// See CONTRIBUTING.md for more information
27+ let alternateTokenIntrospection = hasEnvironmentVariable ( " SWIFTPARSER_ENABLE_ALTERNATE_TOKEN_INTROSPECTION " )
28+
29+ /// Assume that swift-argument-parser is checked out next to swift-syntax and use that instead of fetching a remote dependency.
30+ let useLocalDependencies = hasEnvironmentVariable ( " SWIFTCI_USE_LOCAL_DEPS " )
31+
32+ // MARK: - Compute custom build settings
33+
34+ // These build settings apply to the target and the corresponding test target.
635var swiftSyntaxSwiftSettings : [ SwiftSetting ] = [ ]
736var swiftSyntaxBuilderSwiftSettings : [ SwiftSetting ] = [ ]
837var swiftParserSwiftSettings : [ SwiftSetting ] = [ ]
938
10- /// If we are in a controlled CI environment, we can use internal compiler flags
11- /// to speed up the build or improve it.
12- if ProcessInfo . processInfo. environment [ " SWIFT_BUILD_SCRIPT_ENVIRONMENT " ] != nil {
39+ if buildScriptEnvironment {
1340 swiftSyntaxSwiftSettings += [
1441 . define( " SWIFTSYNTAX_ENABLE_ASSERTIONS " )
1542 ]
1643 swiftSyntaxBuilderSwiftSettings += [
1744 . define( " SWIFTSYNTAX_NO_OSLOG_DEPENDENCY " )
1845 ]
19- swiftParserSwiftSettings += [
20- . define( " SWIFTSYNTAX_NO_OSLOG_DEPENDENCY " )
21- ]
2246}
2347
24- if ProcessInfo . processInfo . environment [ " SWIFTSYNTAX_ENABLE_RAWSYNTAX_VALIDATION " ] != nil {
48+ if rawSyntaxValidation {
2549 swiftSyntaxSwiftSettings += [
2650 . define( " SWIFTSYNTAX_ENABLE_RAWSYNTAX_VALIDATION " )
2751 ]
2852}
2953
30- if ProcessInfo . processInfo . environment [ " SWIFTPARSER_ENABLE_ALTERNATE_TOKEN_INTROSPECTION " ] != nil {
54+ if alternateTokenIntrospection {
3155 swiftParserSwiftSettings += [
3256 . define( " SWIFTPARSER_ENABLE_ALTERNATE_TOKEN_INTROSPECTION " )
3357 ]
3458}
3559
60+ // MARK: - Build the package
61+
3662let package = Package (
3763 name: " swift-syntax " ,
3864 platforms: [
@@ -153,10 +179,11 @@ let package = Package(
153179
154180 . testTarget(
155181 name: " SwiftSyntaxTest " ,
156- dependencies: [ " _SwiftSyntaxTestSupport " , " SwiftSyntax " , " SwiftSyntaxBuilder " ]
182+ dependencies: [ " _SwiftSyntaxTestSupport " , " SwiftSyntax " , " SwiftSyntaxBuilder " ] ,
183+ swiftSettings: swiftSyntaxSwiftSettings
157184 ) ,
158185
159- // MARK: Verison marker modules
186+ // MARK: Version marker modules
160187
161188 . target(
162189 name: " SwiftSyntax509 " ,
@@ -174,7 +201,8 @@ let package = Package(
174201
175202 . testTarget(
176203 name: " SwiftSyntaxBuilderTest " ,
177- dependencies: [ " _SwiftSyntaxTestSupport " , " SwiftSyntaxBuilder " ]
204+ dependencies: [ " _SwiftSyntaxTestSupport " , " SwiftSyntaxBuilder " ] ,
205+ swiftSettings: swiftSyntaxBuilderSwiftSettings
178206 ) ,
179207
180208 // MARK: SwiftSyntaxMacros
@@ -303,7 +331,7 @@ package.targets.append(
303331 )
304332)
305333
306- if ProcessInfo . processInfo . environment [ " SWIFTCI_USE_LOCAL_DEPS " ] == nil {
334+ if useLocalDependencies {
307335 // Building standalone.
308336 package . dependencies += [
309337 . package ( url: " https://github.com/apple/swift-argument-parser.git " , from: " 1.2.2 " )
0 commit comments