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 d5c07422a27..1870713f2f4 100644 --- a/Sources/PackageLoading/ManifestLoader.swift +++ b/Sources/PackageLoading/ManifestLoader.swift @@ -592,6 +592,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. @@ -660,11 +661,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 33937eefc71..72a84e8b0e3 100644 --- a/Tests/BuildTests/BuildPlanTests.swift +++ b/Tests/BuildTests/BuildPlanTests.swift @@ -62,7 +62,7 @@ final class BuildPlanTests: XCTestCase { toolchain: SPMBuildCore.Toolchain = MockToolchain(), flags: BuildFlags = BuildFlags(), shouldLinkStaticSwiftStdlib: Bool = false, - destinationTriple: SPMBuildCore.Triple = hostTriple, + destinationTriple: TSCUtility.Triple = hostTriple, indexStoreMode: BuildParameters.IndexStoreMode = .off, useExplicitModuleBuild: Bool = false ) -> BuildParameters { @@ -81,7 +81,7 @@ final class BuildPlanTests: XCTestCase { } func mockBuildParameters(environment: BuildEnvironment) -> BuildParameters { - let triple: SPMBuildCore.Triple + let triple: TSCUtility.Triple switch environment.platform { case .macOS: triple = Triple.macOS @@ -1869,7 +1869,7 @@ final class BuildPlanTests: XCTestCase { ) XCTAssertNoDiagnostics(diagnostics) - func createResult(for dest: SPMBuildCore.Triple) throws -> BuildPlanResult { + func createResult(for dest: TSCUtility.Triple) throws -> BuildPlanResult { return BuildPlanResult(plan: try BuildPlan( buildParameters: mockBuildParameters(destinationTriple: dest), graph: graph, diagnostics: diagnostics, @@ -2313,7 +2313,7 @@ final class BuildPlanTests: XCTestCase { ]) } - func testBinaryTargets(platform: String, arch: String, destinationTriple: SPMBuildCore.Triple) + func testBinaryTargets(platform: String, arch: String, destinationTriple: TSCUtility.Triple) throws { let fs = InMemoryFileSystem(emptyFiles: "/Pkg/Sources/exe/main.swift", @@ -2458,9 +2458,9 @@ final class BuildPlanTests: XCTestCase { func testBinaryTargets() throws { try testBinaryTargets(platform: "macos", arch: "x86_64", destinationTriple: .macOS) - let arm64Triple = try SPMBuildCore.Triple("arm64-apple-macosx") + let arm64Triple = try TSCUtility.Triple("arm64-apple-macosx") try testBinaryTargets(platform: "macos", arch: "arm64", destinationTriple: arm64Triple) - let arm64eTriple = try SPMBuildCore.Triple("arm64e-apple-macosx") + let arm64eTriple = try TSCUtility.Triple("arm64e-apple-macosx") try testBinaryTargets(platform: "macos", arch: "arm64e", destinationTriple: arm64eTriple) } @@ -2594,7 +2594,7 @@ fileprivate extension TargetBuildDescription { } } -fileprivate extension SPMBuildCore.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 f10d56bb70d..c0492d11163 100644 --- a/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt +++ b/swift-tools-support-core/Sources/TSCUtility/CMakeLists.txt @@ -32,6 +32,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