Skip to content

Commit f16efc5

Browse files
committed
Build SwiftBuild as part of CMake bootstrapping
1 parent c4f0e4b commit f16efc5

10 files changed

+18
-22
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ if(FIND_PM_DEPS)
4545
find_package(SwiftASN1 CONFIG REQUIRED)
4646
find_package(SwiftCertificates CONFIG REQUIRED)
4747
find_package(SwiftCrypto CONFIG REQUIRED)
48+
find_package(SwiftBuild CONFIG REQUIRED)
4849
endif()
4950

5051
find_package(dispatch QUIET)

Sources/SwiftBuildSupport/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ target_link_libraries(SwiftBuildSupport PUBLIC
2323
TSCBasic
2424
TSCUtility
2525
PackageGraph
26+
SwiftBuild::SwiftBuild
27+
SwiftBuild::SWBBuildService
2628
)
2729

2830
set_target_properties(SwiftBuildSupport PROPERTIES

Sources/SwiftBuildSupport/PackagePIFBuilder+Helpers.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import struct PackageGraph.ResolvedProduct
5555

5656
import func PackageLoading.pkgConfigArgs
5757

58-
#if canImport(SwiftBuild)
5958
import enum SwiftBuild.PIF
6059

6160
// MARK: - PIF GUID Helpers
@@ -1108,4 +1107,3 @@ extension UserDefaults {
11081107
}
11091108
}
11101109

1111-
#endif

Sources/SwiftBuildSupport/PackagePIFBuilder+Plugins.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import let Basics.localFileSystem
1717
import enum Basics.Sandbox
1818
import struct Basics.SourceControlURL
1919

20-
#if canImport(SwiftBuild)
2120
import enum SwiftBuild.PIF
2221

2322
extension PIFPackageBuilder {
@@ -134,4 +133,3 @@ extension PIFPackageBuilder {
134133
}
135134
}
136135

137-
#endif

Sources/SwiftBuildSupport/PackagePIFBuilder.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import struct PackageGraph.ModulesGraph
3030
import struct PackageGraph.ResolvedModule
3131
import struct PackageGraph.ResolvedPackage
3232

33-
#if canImport(SwiftBuild)
3433
import enum SwiftBuild.PIF
3534

3635
/// A builder for generating the PIF object from a package.
@@ -670,4 +669,3 @@ public struct SourceLocation: Sendable {
670669
}
671670
}
672671

673-
#endif

Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import class PackageModel.SystemLibraryModule
2525
import struct PackageGraph.ResolvedModule
2626
import struct PackageGraph.ResolvedPackage
2727

28-
#if canImport(SwiftBuild)
2928
import enum SwiftBuild.PIF
3029

3130
/// Extension to create PIF **modules** for a given package.
@@ -815,4 +814,3 @@ extension PackagePIFProjectBuilder {
815814
self.builtModulesAndProducts.append(systemModule)
816815
}
817816
}
818-
#endif

Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import struct PackageGraph.ResolvedModule
2727
import struct PackageGraph.ResolvedPackage
2828
import struct PackageGraph.ResolvedProduct
2929

30-
#if canImport(SwiftBuild)
3130
import enum SwiftBuild.PIF
3231

3332
/// Extension to create PIF **products** for a given package.
@@ -898,4 +897,3 @@ private struct PackageRegistrySignature: Encodable {
898897
let formatVersion = 2
899898
}
900899

901-
#endif

Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import struct PackageGraph.ResolvedPackage
3030
import struct PackageLoading.FileRuleDescription
3131
import struct PackageLoading.TargetSourcesBuilder
3232

33-
#if canImport(SwiftBuild)
3433
import enum SwiftBuild.PIF
3534
import struct SwiftBuild.SwiftBuildFileType
3635

@@ -479,4 +478,3 @@ struct PackagePIFProjectBuilder {
479478
}
480479
}
481480

482-
#endif

Sources/SwiftBuildSupport/SwiftBuildSystem.swift

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,10 @@ import func TSCBasic.withTemporaryFile
3030

3131
import enum TSCUtility.Diagnostics
3232

33-
#if canImport(SwiftBuild)
3433
import Foundation
3534
import SWBBuildService
3635
import SwiftBuild
37-
#endif
3836

39-
#if canImport(SwiftBuild)
4037

4138
struct SessionFailedError: Error {
4239
var error: Error
@@ -155,7 +152,6 @@ private final class PlanningOperationDelegate: SWBPlanningOperationDelegate, Sen
155152
.deferred
156153
}
157154
}
158-
#endif
159155

160156
public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
161157
private let buildParameters: BuildParameters
@@ -232,7 +228,6 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
232228
}
233229

234230
public func build(subset: BuildSubset) async throws {
235-
#if canImport(SwiftBuild)
236231
guard !buildParameters.shouldSkipBuilding else {
237232
return
238233
}
@@ -244,12 +239,9 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
244239

245240
try await startSWBuildOperation(pifTargetName: subset.pifTargetName)
246241

247-
#else
248-
fatalError("Swift Build support is not linked in.")
249-
#endif
242+
250243
}
251244

252-
#if canImport(SwiftBuild)
253245
private func startSWBuildOperation(pifTargetName: String) async throws {
254246
let buildStartTime = ContinuousClock.Instant.now
255247

@@ -495,7 +487,6 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
495487
return pifBuilder
496488
}
497489
}
498-
#endif
499490

500491
public func cancel(deadline: DispatchTime) throws {}
501492

Utilities/bootstrap

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ def parse_global_args(args):
243243
args.source_dirs["swift-certificates"] = os.path.join(args.project_root, "..", "swift-certificates")
244244
args.source_dirs["swift-asn1"] = os.path.join(args.project_root, "..", "swift-asn1")
245245
args.source_dirs["swift-syntax"] = os.path.join(args.project_root, "..", "swift-syntax")
246+
args.source_dirs["swift-build"] = os.path.join(args.project_root, "..", "swift-build")
246247
args.source_root = os.path.join(args.project_root, "Sources")
247248

248249
if platform.system() == 'Darwin':
@@ -442,6 +443,16 @@ def build(args):
442443
build_dependency(args, "swift-certificates",
443444
["-DSwiftASN1_DIR=" + os.path.join(args.build_dirs["swift-asn1"], "cmake/modules"),
444445
"-DSwiftCrypto_DIR=" + os.path.join(args.build_dirs["swift-crypto"], "cmake/modules")])
446+
swift_build_cmake_flags = [
447+
get_llbuild_cmake_arg(args),
448+
"-DSwiftSystem_DIR=" + os.path.join(args.build_dirs["swift-system"], "cmake/modules"),
449+
"-DSwiftASN1_DIR=" + os.path.join(args.build_dirs["swift-asn1"], "cmake/modules"),
450+
"-DSwiftCrypto_DIR=" + os.path.join(args.build_dirs["swift-crypto"], "cmake/modules"),
451+
"-DTSC_DIR=" + os.path.join(args.build_dirs["tsc"], "cmake/modules"),
452+
"-DArgumentParser_DIR=" + os.path.join(args.build_dirs["swift-argument-parser"], "cmake/modules"),
453+
"-DSwiftDriver_DIR=" + os.path.join(args.build_dirs["swift-driver"], "cmake/modules"),
454+
]
455+
build_dependency(args, "swift-build", swift_build_cmake_flags)
445456
build_swiftpm_with_cmake(args)
446457

447458
build_swiftpm_with_swiftpm(args,integrated_swift_driver=False)
@@ -717,6 +728,7 @@ def build_swiftpm_with_cmake(args):
717728
"-DSwiftCrypto_DIR=" + os.path.join(args.build_dirs["swift-crypto"], "cmake/modules"),
718729
"-DSwiftASN1_DIR=" + os.path.join(args.build_dirs["swift-asn1"], "cmake/modules"),
719730
"-DSwiftCertificates_DIR=" + os.path.join(args.build_dirs["swift-certificates"], "cmake/modules"),
731+
"-DSwiftBuild_DIR=" + os.path.join(args.build_dirs["swift-build"], "cmake/modules"),
720732
"-DSWIFTPM_PATH_TO_SWIFT_SYNTAX_SOURCE=" + args.source_dirs["swift-syntax"],
721733
]
722734

@@ -737,6 +749,7 @@ def build_swiftpm_with_cmake(args):
737749
add_rpath_for_cmake_build(args, os.path.join(args.build_dirs["swift-collections"], "lib"))
738750
add_rpath_for_cmake_build(args, os.path.join(args.build_dirs["swift-asn1"], "lib"))
739751
add_rpath_for_cmake_build(args, os.path.join(args.build_dirs["swift-certificates"], "lib"))
752+
add_rpath_for_cmake_build(args, os.path.join(args.build_dirs["swift-build"], "lib"))
740753

741754
# rpaths for compatibility libraries
742755
for lib_path in get_swift_backdeploy_library_paths(args):
@@ -874,6 +887,7 @@ def get_swiftpm_env_cmd(args):
874887
os.path.join(args.build_dirs["swift-collections"], "lib"),
875888
os.path.join(args.build_dirs["swift-asn1"], "lib"),
876889
os.path.join(args.build_dirs["swift-certificates"], "lib"),
890+
os.path.join(args.build_dirs["swift-build"], "lib"),
877891
]
878892

879893
if platform.system() == 'Darwin':

0 commit comments

Comments
 (0)