Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Revert "Support macros when cross-compiling (#7118)" (#7352)" #7353

Merged
merged 23 commits into from
Apr 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
be939ca
Revert "Revert "Support macros when cross-compiling (#7118)" (#7352)"
MaxDesiatov Feb 20, 2024
d069f29
Merge branch 'main' of github.com:apple/swift-package-manager into re…
MaxDesiatov Mar 8, 2024
14482e0
Fix build issues after conflicts resolution
MaxDesiatov Mar 8, 2024
47dd496
Fix `SourceKitLSPAPITests`
MaxDesiatov Mar 8, 2024
10c7cd1
Make change conditional on `--experimental-macros-cross-compilation`
MaxDesiatov Mar 8, 2024
698440d
Merge branch 'main' of github.com:apple/swift-package-manager into re…
MaxDesiatov Mar 20, 2024
d5c9831
Revert "Make change conditional on `--experimental-macros-cross-compi…
MaxDesiatov Mar 20, 2024
1a2f110
Add tests for macros testing modules graph per the status quo
MaxDesiatov Mar 20, 2024
aae5a2c
Add a trivial graph x-compilation test, fix plugins test
MaxDesiatov Mar 21, 2024
244b4cc
Fix `testMacrosTests`
MaxDesiatov Mar 25, 2024
23a6a9f
Update Sources/Build/BuildDescription/ResolvedTarget+BuildDescription…
MaxDesiatov Mar 31, 2024
9299868
Merge branch 'main' of github.com:apple/swift-package-manager into re…
MaxDesiatov Apr 4, 2024
cb23884
Update mock package graph to reflect real template
MaxDesiatov Apr 6, 2024
e4cd951
Refine `description` prop on `Resolved*` types
MaxDesiatov Apr 7, 2024
ef47bd2
More thorough cross-compiled modules graph tests
MaxDesiatov Apr 8, 2024
30e6b92
Build tests and their dependencies for the host triple
MaxDesiatov Apr 9, 2024
7cf279b
Fix `WorkspaceTests`
MaxDesiatov Apr 9, 2024
4c6cf46
Fix `*DiscoveryTests` derived target build triple and parameters
MaxDesiatov Apr 9, 2024
f1432af
Fix tests entrypoint module build triple
MaxDesiatov Apr 9, 2024
bdaf51d
Merge branch 'main' into revert-7352-maxd/revert-cross-compilation
MaxDesiatov Apr 9, 2024
4dea6bf
Merge branch 'main' of github.com:apple/swift-package-manager into re…
MaxDesiatov Apr 16, 2024
4856296
Address PR feedback
MaxDesiatov Apr 16, 2024
fedf3b4
Clean up deprecation
MaxDesiatov Apr 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
19 changes: 17 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
Note: This is in reverse chronological order, so newer entries are added to the top.

Swift Next
Swift 6.0
-----------

* [#7202]

Package manifests can now access information about the Git repository the given package is in via the context object's
`gitInformation` property. This allows to determine the current tag (if any), the current commit and whether or not there are uncommited changes.

* [#7201]

`// swift-tools-version:` can now be specified on subsequent lines of `Package.swift`, for example when first few lines are required to contain a licensing comment header.

* [#7118]

Macros cross-compiled by SwiftPM with Swift SDKs are now correctly built, loaded, and evaluated for the host triple.

Swift 5.10
-----------

* [#7010]

On macOS, `swift build` and `swift run` now produce binaries that allow backtraces in debug builds. Pass `SWIFT_BACKTRACE=enable=yes` environment variable to enable backtraces on such binaries when running them.

* [7101]
* [#7101]

Binary artifacts are now cached along side repository checkouts so they do not need to be re-downloaded across projects.

Expand Down Expand Up @@ -387,4 +398,8 @@ Swift 3.0
[#6276]: https://github.com/apple/swift-package-manager/pull/6276
[#6540]: https://github.com/apple/swift-package-manager/pull/6540
[#6663]: https://github.com/apple/swift-package-manager/pull/6663
[#7010]: https://github.com/apple/swift-package-manager/pull/7010
[#7101]: https://github.com/apple/swift-package-manager/pull/7101
[#7118]: https://github.com/apple/swift-package-manager/pull/7118
[#7201]: https://github.com/apple/swift-package-manager/pull/7201
[#7202]: https://github.com/apple/swift-package-manager/pull/7202
11 changes: 10 additions & 1 deletion Sources/Basics/Collections/IdentifiableSet.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,22 @@ public struct IdentifiableSet<Element: Identifiable>: Collection {
}

public subscript(id: Element.ID) -> Element? {
self.storage[id]
get {
self.storage[id]
}
set {
self.storage[id] = newValue
}
}

public func index(after i: Index) -> Index {
Index(storageIndex: self.storage.index(after: i.storageIndex))
}

public mutating func insert(_ element: Element) {
self.storage[element.id] = element
}

public func union(_ otherSequence: some Sequence<Element>) -> Self {
var result = self
for element in otherSequence {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ package final class ClangTargetBuildDescription {

/// Path to the bundle generated for this module (if any).
var bundlePath: AbsolutePath? {
guard !resources.isEmpty else {
guard !self.resources.isEmpty else {
return .none
}

Expand Down Expand Up @@ -133,7 +133,7 @@ package final class ClangTargetBuildDescription {
self.target = target
self.toolsVersion = toolsVersion
self.buildParameters = buildParameters
self.tempsPath = buildParameters.buildPath.appending(component: target.c99name + ".build")
self.tempsPath = target.tempsPath(buildParameters)
self.derivedSources = Sources(paths: [], root: tempsPath.appending("DerivedSources"))

// We did not use to apply package plugins to C-family targets in prior tools-versions, this preserves the behavior.
Expand Down Expand Up @@ -225,7 +225,7 @@ package final class ClangTargetBuildDescription {
if self.buildParameters.triple.isDarwin() {
args += ["-fobjc-arc"]
}
args += try buildParameters.targetTripleArgs(for: target)
args += try self.buildParameters.tripleArgs(for: target)

args += optimizationArguments
args += activeCompilationConditions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ package final class ProductBuildDescription: SPMBuildCore.ProductBuildDescriptio
// setting is the package-level right now. We might need to figure out a better
// answer for libraries if/when we support specifying deployment target at the
// target-level.
args += try self.buildParameters.targetTripleArgs(for: self.product.targets[self.product.targets.startIndex])
args += try self.buildParameters.tripleArgs(for: self.product.targets[self.product.targets.startIndex])

// Add arguments from declared build settings.
args += self.buildSettingsFlags
Expand Down Expand Up @@ -356,7 +356,7 @@ package final class ProductBuildDescription: SPMBuildCore.ProductBuildDescriptio
// Library search path for the toolchain's copy of SwiftSyntax.
#if BUILD_MACROS_AS_DYLIBS
if product.type == .macro {
args += try ["-L", buildParameters.toolchain.hostLibDir.pathString]
args += try ["-L", defaultBuildParameters.toolchain.hostLibDir.pathString]
}
#endif

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2015-2023 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
//
//===----------------------------------------------------------------------===//

import struct Basics.AbsolutePath
import struct PackageGraph.ResolvedModule

import SPMBuildCore

extension ResolvedModule {
func tempsPath(_ buildParameters: BuildParameters) -> AbsolutePath {
let suffix = buildParameters.suffix(triple: self.buildTriple)
return buildParameters.buildPath.appending(component: "\(self.c99name)\(suffix).build")
}
}