mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
68 lines
2.2 KiB
Swift
68 lines
2.2 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import SKSupport
|
|
|
|
@preconcurrency import struct PackageModel.BuildFlags
|
|
import struct TSCBasic.AbsolutePath
|
|
|
|
/// Build configuration
|
|
public struct BuildSetup: Sendable {
|
|
|
|
/// Default configuration
|
|
public static let `default` = BuildSetup(
|
|
configuration: nil,
|
|
defaultWorkspaceType: nil,
|
|
path: nil,
|
|
flags: BuildFlags()
|
|
)
|
|
|
|
/// Build configuration (debug|release).
|
|
public var configuration: BuildConfiguration?
|
|
|
|
/// Default workspace type (buildserver|compdb|swiftpm). Overrides workspace type selection logic.
|
|
public var defaultWorkspaceType: WorkspaceType?
|
|
|
|
/// Build artifacts directory path. If nil, the build system may choose a default value.
|
|
public var path: AbsolutePath?
|
|
|
|
/// Additional build flags
|
|
public var flags: BuildFlags
|
|
|
|
public init(
|
|
configuration: BuildConfiguration?,
|
|
defaultWorkspaceType: WorkspaceType?,
|
|
path: AbsolutePath?,
|
|
flags: BuildFlags
|
|
) {
|
|
self.configuration = configuration
|
|
self.defaultWorkspaceType = defaultWorkspaceType
|
|
self.path = path
|
|
self.flags = flags
|
|
}
|
|
|
|
/// Create a new `BuildSetup` merging this and `other`.
|
|
///
|
|
/// For any option that only takes a single value (like `configuration`), `other` takes precedence. For all array
|
|
/// arguments, `other` is appended to the options provided by this setup.
|
|
public func merging(_ other: BuildSetup) -> BuildSetup {
|
|
var flags = self.flags
|
|
flags = flags.merging(other.flags)
|
|
return BuildSetup(
|
|
configuration: other.configuration ?? self.configuration,
|
|
defaultWorkspaceType: other.defaultWorkspaceType ?? self.defaultWorkspaceType,
|
|
path: other.path ?? self.path,
|
|
flags: flags
|
|
)
|
|
}
|
|
}
|