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
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
public import SWBUtil
public struct BuildConfiguration: Sendable {
public struct MacroBindingSource: Sendable {
// The key, including any conditions if present.
public let key: String
public let value: MacroExpressionSource
public init(key: String, value: MacroExpressionSource) {
self.key = key
self.value = value
}
}
public let name: String
public let buildSettings: [MacroBindingSource]
public let baseConfigurationFileReferenceGUID: String?
public let impartedBuildProperties: ImpartedBuildProperties
public init(name: String, buildSettings: [MacroBindingSource], baseConfigurationFileReferenceGUID: String?, impartedBuildProperties: ImpartedBuildProperties) {
self.name = name
self.buildSettings = buildSettings
self.baseConfigurationFileReferenceGUID = baseConfigurationFileReferenceGUID
self.impartedBuildProperties = impartedBuildProperties
}
}
// MARK: SerializableCodable
extension BuildConfiguration: PendingSerializableCodable {
public func legacySerialize<T: Serializer>(to serializer: T) {
serializer.serializeAggregate(4) {
serializer.serialize(name)
serializer.serialize(buildSettings)
serializer.serialize(baseConfigurationFileReferenceGUID)
serializer.serialize(impartedBuildProperties)
}
}
public init(fromLegacy deserializer: any Deserializer) throws {
try deserializer.beginAggregate(4)
self.name = try deserializer.deserialize()
self.buildSettings = try deserializer.deserialize()
self.baseConfigurationFileReferenceGUID = try deserializer.deserialize()
self.impartedBuildProperties = try deserializer.deserialize()
}
}
extension BuildConfiguration.MacroBindingSource: PendingSerializableCodable {
public func legacySerialize<T: Serializer>(to serializer: T) {
serializer.serializeAggregate(2) {
serializer.serialize(key)
serializer.serialize(value)
}
}
public init(fromLegacy deserializer: any Deserializer) throws {
try deserializer.beginAggregate(2)
self.key = try deserializer.deserialize()
self.value = try deserializer.deserialize()
}
}
|