Commit Graph

1728 Commits

Author SHA1 Message Date
Mishal Shah
1082d64b06 Bump the Swift version to 6.2.1 2025-08-14 23:21:36 -07:00
Yuta Saito
b7c3ceac0f [6.2][wasm] Rename wasm32-unknown-wasi to wasm32-unknown-wasip1 (#83199)
- **Explanation**: Renames the WebAssembly target triple from `wasm32-unknown-wasi` to `wasm32-unknown-wasip1` to align with the broader WebAssembly ecosystem's naming conventions. It's important to include this in 6.2, which is going to be the first stable release of Swift SDK for Wasm, so that we won't introduce a breaking triple change in the stable version series later.

  The WebAssembly ecosystem has been migrating from the generic wasi target name to more explicit version-specific names like `wasip1` and `wasip2`. This change has been adopted across multiple toolchains and language ecosystems:

  - Rust: Renamed `wasm32-wasi` to `wasm32-wasip1` (https://github.com/rust-lang/compiler-team/issues/607)
  - wasi-sdk: Renamed `wasm32-wasi` to `wasm32-wasip1` (https://github.com/WebAssembly/wasi-sdk/pull/386)
  - Go: Already uses `wasip1` naming convention (https://github.com/golang/go/issues/58141)

  The "p1" suffix explicitly indicates WASI Preview 1, which helps distinguish it from the newer WASI Preview 2 (wasip2) and provides clarity about which version of the WASI specification is being targeted.

  Also we already use `wasm32-unknown-wasip1` for Embedded WASI target, and having different names for Embedded and non-Embedded is confusing users.

- **Scope**: Narrow, only affects Wasm Swift SDK.
- **Original PRs**: https://github.com/swiftlang/swift/pull/83167
- **Risk**: Low, just a change to Wasm Swift SDK
- **Testing**: CI.
- **Reviewers**: @MaxDesiatov
2025-07-22 11:23:07 -07:00
finagolfin
d746436d94 Merge pull request #82986 from finagolfin/droid
[6.2][android] Small test and build tweaks
2025-07-18 15:22:47 +05:30
finagolfin
43970ac2f0 [android] Fix an install path and the displayed NDK in the build log (#82620)
I just noticed the install issue when cross-compiling Testing with a
freshly-built compiler, which I'd never done before. Also, fix the NDK
path shown in the CMake output.
2025-07-11 16:21:18 +05:30
Ben Barham
3abc025579 Merge pull request #82018 from al45tair/fix-freestanding-deployment-version
[Build] Fix the minimal-stdlib build by setting a deployment version.
2025-07-08 11:25:17 +01:00
Alastair Houghton
0813e95569 Merge pull request #81440 from al45tair/currentos-availability
[Concurrency][Stdlib] Add SwiftStdlibCurrentOS availability, use it.
2025-07-07 12:04:00 +01:00
Konrad `ktoso` Malawski
c8a8183d26 [6.2][Concurrency][SE-review update] Task names update (#81132)
**Description**: This adds "task name" parameter to all task creating
functions.

This is done in a few ways, e.g. we can backdeploy this to 5.1 in APIs
which do not accept the `TaskExecutor` but it they do we provide a
version for 6.0+ etc. This was requested in the SE acceptable of this
proposal [Acceptance post
SE-0469](https://forums.swift.org/t/accepted-with-modifications-se-0469-task-naming/79438).

This moves all these declarations to gyb since going through them one by
one has become unmaintainable otherwise.

**Scope/Impact**: All task creation APIs now gain a new task name
parameter.
**Risk:** Medium, changes existing APIs rather than adding "even more
overloads" though this risk was discussed in the team and accepted. This
has a potential to be source breaking it someone used Task.init and
friends as function.
**Testing**: CI testing, source compatibility suite testing
**Reviewed by**: 

**Original PR:** 
- https://github.com/swiftlang/swift/pull/81107 build changes required
for this
- https://github.com/swiftlang/swift/pull/80984


**Radar:**

---------

Co-authored-by: Kuba Mracek <mracek@apple.com>
2025-05-29 07:52:33 +09:00
3405691582
44df123056 Unconditionally add -z,origin on OpenBSD. (#80897)
This is a little less than ideal, since as I understand it, it only
makes sense to add -z,origin when $ORIGIN expansion is required, but
doing this surgically per target is rather cumbersome. I don't believe
there are any significant drawbacks to doing it unconditionally like
this, however.
2025-04-30 20:05:35 -04:00
Evan Wilde
30b4aa5a58 SILOptimizer: Disable invalid passes in C++-only compiler
The SimplifyCFG and LoopRotate passes result in verification failures
when built in a compiler that is not built with Swift sources enabled.

 - Scope: Disables optimizers passes in C++-only compiler for
   bootstrapping purposes. Has no impact on full Swift compiler build.
 - Risk: Low. This change has no impact in build environments where a
   Swift compiler is available.
 - Reviewers: @eeckstein
 - Testing: PR testing -- Full PR testing fails if passes are
   accidentally disabled.

Fixes: rdar://146357242

(cherry picked from commit bca1378fdb)
2025-04-23 14:07:35 -07:00
3405691582
fdf70a2b57 Use -z,nobtcfi when BTCFI is disabled on OpenBSD.
This was accidentally left off from #80389, and will properly ensure
BTCFI enforcement is disabled on the platform when required.
2025-04-15 16:07:38 -04:00
Rintaro Ishizaki
90340a069a Merge pull request #79918 from rintaro/cmake-no-emit-module-separately
[CMake] '-no-emit-module-separately-wmo' for swift modules
2025-03-17 11:38:18 -07:00
Rintaro Ishizaki
ca5a020e21 [CMake] '-no-emit-module-separately-wmo' for swift modules
Emitting modules in separate frontend job doesn't give any benefits
because single add_library is just a single job from CMake's point of
view. Clients need to wait for `.dylib`/`.so` being emitted before using
the `.swiftmodule`. *Not* emitting modules separately is actually faster
in CMake because it doesn't parse and typecheck the source code twice.
2025-03-11 13:33:34 -07:00
Rintaro Ishizaki
860ea2c967 [CMake] Fix package CMO capability chekcing logic
Package CMO requires '-enable-library-evolution' in 6.1+ compilers.
Otherwise:
  <unknown>:0: error: Library evolution must be enabled for Package CMO

rdar://146673779
2025-03-10 11:09:47 -07:00
Yuta Saito
9595425717 Merge pull request #79344 from kateinoigakukun/pr-c16855f8d94328f5545bcc3105985cd5286ce69f
[build] Configure library naming conventions for WebAssembly platforms
2025-02-14 13:32:43 +09:00
Yuta Saito
bf008af355 Merge pull request #79343 from kateinoigakukun/pr-fba68e2574f281558869dcf2006c48d8cf894e99
[build] Add initial support for Emscripten SDK
2025-02-14 13:32:20 +09:00
Yuta Saito
720327727f [build] Configure library naming conventions for WebAssembly platforms
Use the same conventions used in wasi-libc and Emscripten
2025-02-13 00:54:13 +00:00
Yuta Saito
9d4e5b6911 [build] Add initial support for Emscripten SDK
This patch adds initial support for Emscripten SDK alongside the existing
support for WASI SDK. This is a first step towards building a part of
Swift compiler for Emscripten target (which will be used to build LLDB
with Swift to WebAssembly target).
2025-02-13 00:53:45 +00:00
Yuta Saito
6e3d401b41 [build] Stop assuming llvm is always the top-level in unified build
Even with unified build, llvm is not always the top-level project but it
can be a part of a larger build. (e.g. [^1]) In that case,
`CMAKE_BINARY_DIR` is not the binary directory of llvm but the binary
directory of the top-level project. This patch fixes the issue by using
`LLVM_BINARY_DIR` instead.

[^1]: 9b4b907079/extensions/cxx_debugging/CMakeLists.txt (L105)
2025-02-13 00:27:02 +00:00
Hamish Knight
d260bd8ddb [build-script] Remove Xcode generation support
This was quite brittle and has now been superseded
by swift-xcodegen. Remove the CMake/build-script
logic for it, leaving the option behind to inform
users to switch to using xcodegen instead.
2025-02-12 12:19:21 +00:00
Michael Chiu
c6d9efa553 Remove FreeBSD version from SDK triple 2025-02-01 12:05:39 -08:00
Cyndy Ishida
3232df4d67 Reapply '[BuildSystem] Stop building for i386-watch-simulator (#77692)' (#79018)
* Reapply '[BuildSystem] Stop building for i386-watch-simulator (#77692)'

    * [BuildSystem] Stop building for i386-watch-simulator

    In Xcode16 it is not supported.

This initially broke client projects who were still building the legacy
architecture but now that's resolved.
2025-01-31 15:04:28 -08:00
Stefan Gränitz
76243a25db [windows][toolchain] Build sanitizers and builtins standalone for all SDKs (#78861)
Unified builds of compiler-rt together with LLVM failed for the Android SDKs. It got too complicated to redirect the way LLVM would configure the nested build-trees. Standalone builds slightly increase build time, but they turned out much simpler and we end up with less duplication of definitions.
2025-01-28 22:08:07 +01:00
Rintaro Ishizaki
6f6742f060 Merge pull request #78622 from rintaro/sanitizer-rdar142516855
[CMake] Globally set sanitizer options for Swift targets
2025-01-28 04:56:44 -08:00
Alastair Houghton
ab8e561583 Merge pull request #78516 from al45tair/eng/PR-124913332
[Backtracing] Implement API per SE-0419
2025-01-28 10:48:33 +00:00
Saleem Abdulrasool
4ea5c33224 Merge pull request #78687 from Steelskin/fabrice/add-stdlib-cache-macos
[caches] Add cache files for macOS Runtime builds
2025-01-22 17:00:28 -08:00
Saleem Abdulrasool
7d6ff86132 Merge pull request #78688 from Steelskin/fabrice/use-correct-darwin-arm64-triple
[caches] Use `arm64-apple-darwin` triple
2025-01-22 17:00:02 -08:00
Saleem Abdulrasool
78ec9a7af6 Merge pull request #78774 from compnerd/unknown-silence
build: silence C4067 on Windows (NFCI)
2025-01-22 08:26:16 -08:00
Saleem Abdulrasool
6b58947382 build: silence C4067 on Windows (NFCI)
This silences a warning that the MSVC compiler emits about unknown
pragmas. This helps clear up the build a small amount so real issues do
not get hidden.
2025-01-21 09:37:11 -08:00
Saleem Abdulrasool
c9e4dff925 build: only add compiler flag if it is supported
This ensures that we only add the flag if it is supported by the
compiler rather than doing it unconditionally.
2025-01-21 09:35:24 -08:00
Alastair Houghton
18496c5626 [Backtracing] Remove support for implicit import of _Backtracing.
We're going to rename the module to Runtime, and it isn't going to be an
implicit import, so we don't need any of this.

rdar://124913332
2025-01-17 10:09:36 +00:00
Fabrice de Gans
982f934f0d [caches] Use arm64-apple-darwin triple
`LLVM_DEFAULT_TARGET_TRIPLE` was previously set to
`aarch64-apple-darwin` for Darwin Arm64 platforms. The correct value
should be `arm64-apple-darwin`.
2025-01-16 12:19:48 -08:00
Fabrice de Gans
5d90af9f23 [caches] Add cache files for macOS Runtime builds 2025-01-16 12:11:00 -08:00
Rintaro Ishizaki
84a09071cb [CMake] Globally set sanitizer options Swift targets
For C/CXX targets, sanitizer options are set by 'CMAKE_{C|CXX}_FLAGS' in
HandleLLVMComfig.cmake. However for Swift targets, they are set for each
target. That caused some mismatch issues. Instead set them globally for
Swift targets too.

rdar://142516855
2025-01-13 15:54:39 -08:00
Hiroshi Yamauchi
32832dd1e1 Revert "[windows][toolchain] Enable builtins and sanitizers"
Revert https://github.com/swiftlang/swift/pull/77770

To fix CI https://ci-external.swift.org/job/swift-main-windows-toolchain-arm64/785/consoleText
2024-12-06 14:22:30 -08:00
Saleem Abdulrasool
3ab2a3ee4c Merge pull request #77770 from weliveindetail/windows-toolchain-sanitizers
[windows][toolchain] Enable builtins and sanitizers
2024-12-05 15:46:46 -08:00
Cyndy Ishida
1b869ef828 Revert "[BuildSystem] Stop building for i386-watch-simulator" (#77911)
* Revert "[Build] Fix swift_build_support tests."

This reverts commit fc2d1b3b23.

* Revert "[BuildSystem] Stop building for i386-watch-simulator (#77692)"

This reverts commit 1ab968d2b6.

This change can't be made without other issues fixed downstream first.
2024-12-03 23:17:12 -08:00
Saleem Abdulrasool
ce09887cb2 Merge pull request #77862 from compnerd/manifest-xml
build: enable libxml2 in the toolchain, use `llvm-mt`
2024-12-03 21:13:02 -08:00
Stefan Gränitz
53d0781937 fixup! Enable builtins for all runtime targets in CMake cache file 2024-12-03 17:19:15 +01:00
Saleem Abdulrasool
020d67330c build: enable libxml2 in the toolchain, use llvm-mt
Enable support for libxml2 on Windows to allow `llvm-mt` to be usable.
This then allows us to use `llvm-mt` as the manifest tool when building
for Windows. Remove the then obsoleted workaround of `-D CMAKE_MT=mt`.
This reduces the dependency on the MSVC toolchain and paves the path to
enabling the use of the manifest tool in SPM.
2024-12-02 17:05:20 -08:00
Mishal Shah
e1c5216c61 Merge pull request #77799 from swiftlang/bump-swift-version-6.2
Bump the Swift version to 6.2
2024-12-02 13:14:06 -08:00
3405691582
301a0c49fc Swift on OpenBSD supports arm64.
However, to do this, we end up changing how amd64 is supported too.
Previously, I had tried to keep some meaningful separation between
platform spelling and LLVM spelling, but this is becoming more difficult
to meaningfully maintain.

Target specifications are trivially converted LLVM triples, and the
module files are looked up by LLVM triples. We can make sure that the
targets align, but then the Glibc to SwiftGlibc import breaks. That could
also be addressed, but then we get to a point where the targets set up
by build-script and referenced by cmake begin to misalign. There are
references in build-script-impl for a potential renaming site, but it's
not quite enough.

It's far simpler to give up and rename to LLVM spellings right at the
beginning. This does mean that this commit is less constrained to just
adding the necessary parts to enable arm64, but it should mean less
headaches overall from differing architecture spellings.
2024-11-30 16:33:46 -05:00
Stefan Gränitz
cf748a9dd0 Exclude Anroid targets for the moment 2024-11-28 17:06:33 +01:00
Stefan Gränitz
5bd3ed3577 Fix CMAKE_ANDROID_ARCH_ABI=x86 for i686-unknown-linux-android 2024-11-28 13:00:53 +01:00
Stefan Gränitz
e391a11a2c Align settings for builtins and runtimes in CMake cache for aarch64 hosts 2024-11-27 17:07:25 +01:00
Stefan Gränitz
76be949750 Align default targets for builtins and runtimes on x86_64 hosts 2024-11-26 16:56:56 +01:00
Mishal Shah
9a48056f15 Bump the Swift version to 6.2 2024-11-22 01:04:37 -08:00
Stefan Gränitz
c7da7185ab Enable builtins for all runtime targets in CMake cache file 2024-11-21 15:23:07 +01:00
Stefan Gränitz
1857d1c2af Initial patch for early feedback 2024-11-21 14:50:19 +01:00
Cyndy Ishida
1ab968d2b6 [BuildSystem] Stop building for i386-watch-simulator (#77692)
* [BuildSystem] Stop building for i386-watch-simulator

In Xcode16 it is not supported.
2024-11-20 08:57:19 -08:00
Saleem Abdulrasool
cc27c83fc8 build: adjust the early swift-driver handling
Windows has a strict limit on the file path, and use of extended names
for the build is not possible. Rather than hardcoding the location of
the early swift-driver build, allow the user to specify the path. If the
path is specified, we will attempt to copy `swift-driver` and
`swift-help` from that location. Adjust the code to account for the
build executable suffix. This should allow Windows to experiment with an
early swift-driver build.
2024-11-13 10:14:22 -08:00