diff --git a/Sources/Build/XCFrameworkInfo.swift b/Sources/Build/XCFrameworkInfo.swift index ea9607dc73e..258642e2fe8 100644 --- a/Sources/Build/XCFrameworkInfo.swift +++ b/Sources/Build/XCFrameworkInfo.swift @@ -9,6 +9,7 @@ See http://swift.org/CONTRIBUTORS.txt for Swift project authors */ import TSCBasic +import TSCUtility import PackageModel import SPMBuildCore import Foundation diff --git a/Sources/PackageLoading/ManifestLoader.swift b/Sources/PackageLoading/ManifestLoader.swift index 89a47e5ffce..8060b822c68 100644 --- a/Sources/PackageLoading/ManifestLoader.swift +++ b/Sources/PackageLoading/ManifestLoader.swift @@ -494,6 +494,7 @@ public final class ManifestLoader: ManifestLoaderProtocol { } } + private static var _hostTriple: Triple? private static var _packageDescriptionMinimumDeploymentTarget: String? /// Parse the manifest at the given path to JSON. @@ -558,11 +559,15 @@ public final class ManifestLoader: ManifestLoaderProtocol { // Use the same minimum deployment target as the PackageDescription library (with a fallback of 10.15). #if os(macOS) + if Self._hostTriple == nil { + Self._hostTriple = Triple.getHostTriple(usingSwiftCompiler: resources.swiftCompiler) + } + let triple = Self._hostTriple! if Self._packageDescriptionMinimumDeploymentTarget == nil { Self._packageDescriptionMinimumDeploymentTarget = (try MinimumDeploymentTarget.computeMinimumDeploymentTarget(of: macOSPackageDescriptionPath))?.versionString ?? "10.15" } let version = Self._packageDescriptionMinimumDeploymentTarget! - cmd += ["-target", "x86_64-apple-macosx\(version)"] + cmd += ["-target", "\(triple.tripleString(forPlatformVersion: version))"] #endif cmd += compilerFlags diff --git a/Sources/SPMBuildCore/CMakeLists.txt b/Sources/SPMBuildCore/CMakeLists.txt index 96d22dca625..c1d686340f0 100644 --- a/Sources/SPMBuildCore/CMakeLists.txt +++ b/Sources/SPMBuildCore/CMakeLists.txt @@ -11,8 +11,7 @@ add_library(SPMBuildCore BuildSystem.swift BuiltTestProduct.swift Sanitizers.swift - Toolchain.swift - Triple.swift) + Toolchain.swift) # NOTE(compnerd) workaround for CMake not setting up include flags yet set_target_properties(SPMBuildCore PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}) diff --git a/Tests/BuildTests/BuildPlanTests.swift b/Tests/BuildTests/BuildPlanTests.swift index d5ef71bcd0b..e321097c8d6 100644 --- a/Tests/BuildTests/BuildPlanTests.swift +++ b/Tests/BuildTests/BuildPlanTests.swift @@ -59,7 +59,7 @@ final class BuildPlanTests: XCTestCase { config: BuildConfiguration = .debug, flags: BuildFlags = BuildFlags(), shouldLinkStaticSwiftStdlib: Bool = false, - destinationTriple: Triple = hostTriple, + destinationTriple: TSCUtility.Triple = hostTriple, indexStoreMode: BuildParameters.IndexStoreMode = .off ) -> BuildParameters { return BuildParameters( @@ -75,7 +75,7 @@ final class BuildPlanTests: XCTestCase { } func mockBuildParameters(environment: BuildEnvironment) -> BuildParameters { - let triple: Triple + let triple: TSCUtility.Triple switch environment.platform { case .macOS: triple = Triple.macOS @@ -1765,7 +1765,7 @@ final class BuildPlanTests: XCTestCase { ) XCTAssertNoDiagnostics(diagnostics) - func createResult(for dest: Triple) throws -> BuildPlanResult { + func createResult(for dest: TSCUtility.Triple) throws -> BuildPlanResult { return BuildPlanResult(plan: try BuildPlan( buildParameters: mockBuildParameters(destinationTriple: dest), graph: graph, diagnostics: diagnostics, @@ -2207,7 +2207,8 @@ final class BuildPlanTests: XCTestCase { ]) } - func testBinaryTargets(platform: String, arch: String, destinationTriple: Triple) throws { + func testBinaryTargets(platform: String, arch: String, destinationTriple: TSCUtility.Triple) + throws { let fs = InMemoryFileSystem(emptyFiles: "/Pkg/Sources/exe/main.swift", "/Pkg/Sources/Library/Library.swift", @@ -2345,9 +2346,9 @@ final class BuildPlanTests: XCTestCase { func testBinaryTargets() throws { try testBinaryTargets(platform: "macos", arch: "x86_64", destinationTriple: .macOS) - let arm64Triple = try Triple("arm64-apple-macosx") + let arm64Triple = try TSCUtility.Triple("arm64-apple-macosx") try testBinaryTargets(platform: "macos", arch: "arm64", destinationTriple: arm64Triple) - let arm64eTriple = try Triple("arm64e-apple-macosx") + let arm64eTriple = try TSCUtility.Triple("arm64e-apple-macosx") try testBinaryTargets(platform: "macos", arch: "arm64e", destinationTriple: arm64eTriple) } @@ -2481,7 +2482,7 @@ fileprivate extension TargetBuildDescription { } } -fileprivate extension Triple { +fileprivate extension TSCUtility.Triple { static let x86_64Linux = try! Triple("x86_64-unknown-linux-gnu") static let arm64Linux = try! Triple("aarch64-unknown-linux-gnu") static let arm64Android = try! Triple("aarch64-unknown-linux-android") diff --git a/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt b/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt index f7db9246dfe..d7dff6f761a 100644 --- a/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt +++ b/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt @@ -29,6 +29,7 @@ add_library(TSCUtility SimplePersistence.swift StringExtensions.swift StringMangling.swift + Triple.swift URL.swift Verbosity.swift Version.swift diff --git a/Sources/SPMBuildCore/Triple.swift b/swift-tools-support-core/Sources/TSCUtility/Triple.swift similarity index 100% rename from Sources/SPMBuildCore/Triple.swift rename to swift-tools-support-core/Sources/TSCUtility/Triple.swift