Skip to content

Commit 0c22d23

Browse files
authored
PackageModel, CoreCommands: fix build flags not passed (#6380)
When computing `SwiftTool/_buildParameters`, command-line options that customize `BuildFlags` values are not merged with `BuildFlags` from the computed toolchain/destination. Added `mutating func append(_: BuildFlags)` on the `BuildFlags` type for easier merging of multiple values into one, which is then used in `SwiftTool/_buildParameters`. rdar://106077959
1 parent 57e03a6 commit 0c22d23

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Sources/CoreCommands/SwiftTool.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,12 +726,15 @@ public final class SwiftTool {
726726
let dataPath = self.scratchDirectory.appending(
727727
component: destinationTriple.platformBuildPathComponent(buildSystem: options.build.buildSystem)
728728
)
729+
var buildFlags = options.build.buildFlags
730+
buildFlags.append(destinationToolchain.extraFlags)
731+
729732
return try BuildParameters(
730733
dataPath: dataPath,
731734
configuration: options.build.configuration,
732735
toolchain: destinationToolchain,
733736
destinationTriple: destinationTriple,
734-
flags: options.build.buildFlags,
737+
flags: buildFlags,
735738
pkgConfigDirectories: options.locations.pkgConfigDirectories,
736739
architectures: options.build.architectures,
737740
workers: options.build.jobs ?? UInt32(ProcessInfo.processInfo.activeProcessorCount),

Sources/PackageModel/BuildFlags.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,20 @@ public struct BuildFlags: Equatable, Encodable {
4040
self.linkerFlags = linkerFlags
4141
self.xcbuildFlags = xcbuildFlags
4242
}
43+
44+
/// Appends corresponding properties of a different `BuildFlags` value into `self`.
45+
/// - Parameter buildFlags: a `BuildFlags` value to merge flags from.
46+
public mutating func append(_ buildFlags: BuildFlags) {
47+
cCompilerFlags += buildFlags.cCompilerFlags
48+
cxxCompilerFlags += buildFlags.cxxCompilerFlags
49+
swiftCompilerFlags += buildFlags.swiftCompilerFlags
50+
linkerFlags += buildFlags.linkerFlags
51+
52+
if var xcbuildFlags, let newXcbuildFlags = buildFlags.xcbuildFlags {
53+
xcbuildFlags += newXcbuildFlags
54+
self.xcbuildFlags = xcbuildFlags
55+
} else if let xcbuildFlags = buildFlags.xcbuildFlags {
56+
self.xcbuildFlags = xcbuildFlags
57+
}
58+
}
4359
}

0 commit comments

Comments
 (0)