Commit Graph

827 Commits

Author SHA1 Message Date
Michael Gottesman
243cfe0719 Merge pull request #79804 from gottesmm/pr-f26aec536f9d333150b49e0faf50a70a9a26ac53
Add a flag to enable-new-runtime-build that enables the new runtime build
2025-03-07 16:03:49 -08:00
Alex Hoppen
67f312cc2f Merge pull request #79834 from ahoppen/remove-syntax-lint
[build-script] Remove option to lint swift-syntax
2025-03-07 06:42:29 -08:00
Alex Hoppen
a4b8878787 Merge pull request #79827 from ahoppen/remove-swiftsyntax-verify-documentation
Remove the documentation verification step
2025-03-07 06:42:07 -08:00
Alex Hoppen
8ad0ca8c17 Remove the documentation verification step
This step is now performed by GitHub Actions.
2025-03-06 18:40:55 -08:00
Alex Hoppen
7256a92775 [build-script] Remove option to lint swift-syntax
This is being verified by GitHub Actions now as of https://github.com/swiftlang/swift-syntax/pull/2998.
2025-03-06 18:38:47 -08:00
Michael Gottesman
7418b42215 Add a flag to enable-new-runtime-build that enables the new runtime build.
What is nice about this is that by not using extra-cmake-args, we can avoid
passing this into LLVM as well when attempting to reproduce failures on the bots
(thus avoiding having to rebuild LLVM as well).
2025-03-05 14:10:26 -08:00
Michael Gottesman
f68e23aaf1 Merge pull request #79329 from gottesmm/pr-295dfc37ee8e5bf71b1249c2717a30c37de1aee2
[build-script] Add an option to force the linker used.
2025-02-14 21:09:09 -08:00
Bassam (Sam) Khouri
ac52024827 Merge pull request #79330 from bkhouri/t/main/support-swifttesting-in-swiftpm-for-toolchain-build
Add verbosity when building swiftpm
2025-02-14 12:39:09 -05:00
Sam Khouri
6e42092751 Add verbosity when building swiftpm 2025-02-12 15:37:03 -05:00
Michael Gottesman
3e2a6f6665 [build-script] Add an option to force the linker used.
I have been doing this using extra-cmake-args/etc... just feels better to have
an actual option to do this.

Just did this quickly while waiting for my Linux build to finish that uses
extra-cmake-args to set the linker.
2025-02-12 11:49:01 -08: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
Sam Khouri
1f3e232de7 swiftpm: Test only running host platform architecture
When adding a Swift Testing test to Swift PM repository, the `test`
portion of t he OSX package pipeline was building against x86_64 and
arm64.

Ensure Swift PM testing only runs against the host platform
architecture.
2025-02-07 10:35:29 -05:00
Eric Miotto
8f9829dce8 build-script-impl: propagate --verbose-build to nested CMake builds
The main goal of this change is to ensure that the new build of the
stdlib matches the same level of verbosity of the compiler build that
spawn it.

For now I'm not matching this behaviour to the regular CMake build
products (which would be needed if want to target external projects
configured in LLVM).

Addresses rdar://144256800
2025-02-05 14:58:46 -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
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
Jesse L. Zamora
57dc1d1578 Fix linting issues in test_llvm_linux_cross_compile.py 2025-01-27 08:26:38 -05:00
Jesse L. Zamora
7205e44795 Merge remote-tracking branch 'origin/main' into #75341-fix-swift-build-support-typo 2025-01-25 17:38:15 -05:00
Jesse L. Zamora
454add736a Add test for testing get_linux_sysroot when cross-compiling LLVM 2025-01-25 15:11:42 -05:00
Jesse L. Zamora
514acac478 Fix typo in get_linux_sysroot that makes cross-compilation fail 2025-01-24 23:52:36 -05:00
Marc Prud'hommeaux
d092105e66 Make swift-testing installable with --install-swift-testing rather than --install-swift-testing-macros (#76840) 2025-01-22 18:32:39 +05:30
Alastair Houghton
c7bb91d8fe [Backtracing] Tweak tests slightly.
`JSONEncoder` by default will escape slashes, which results in a string
that isn't technically valid Base64.  Since that behaviour is optional,
turn it off, and at the same time tell it to output in lexical key
order, which makes the test slightly simpler (no `CHECK-DAG` needed).

Also fixed a typo in `test_swift.py`

rdar://124913332
2025-01-17 10:09:37 +00:00
Alastair Houghton
760cc57bef [Backtracing] Rename _Backtracing to Runtime.
Move the backtracing code into a new Runtime module.  This means renaming
the Swift Runtime's CMake target because otherwise there will be a name
clash.

rdar://124913332
2025-01-17 10:09:36 +00:00
Yuta Saito
c68db65453 Merge pull request #78341 from kateinoigakukun/katei/add-sourcekit-lsp-verify
CI: Add `--sourcekit-lsp-verify-generated-files` build-script option
2025-01-16 01:09:43 +09:00
Anthony Latsis
28160c9d09 Merge pull request #78049 from AnthonyLatsis/nelumbo-lutea
build: Unhardcode Swift source directory name
2025-01-09 11:23:17 +00:00
Anthony Latsis
4a5e0daa9d build: Unhardcode Swift source directory name
This is useful if you maintain several swift worktrees that reside in
the source root directory.
2025-01-07 09:58:47 +00:00
Yuta Saito
57cc7c28b9 CI: Add --sourcekit-lsp-verify-generated-files build-script option
To verify that autogenerated files in the source tree match the ones that
would be generated from source.
2024-12-21 19:03:07 +00:00
Henrik G. Olsson
ef9d2b744d Rename pointer bounds (#78210)
* Make pointer bounds non-experimental

* Rename @PointerBounds to @_SwiftifyImport

* Rename filenames containing PointerBounds

* Add _PointerParam exception to stdlib ABI test

* Add _PointerParam to stdlib API changes

* Rename _PointerParam to _SwiftifyInfo
2024-12-20 11:36:01 +01:00
Ben Barham
c628c9e8e0 [Build] Do not strip swift prefix for WASI SDK bundle
Match the static Linux SDK - leave the `swift-` prefix on the generated
artifact bundle.
2024-12-17 14:47:34 -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
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
Alastair Houghton
fc2d1b3b23 [Build] Fix swift_build_support tests.
This was broken by #77692.

rdar://140313372
2024-11-27 09:52:52 +00:00
Yuta Saito
db33b2bd98 Merge pull request #77747 from kateinoigakukun/yt/enable-libcxx-filesystem 2024-11-21 23:59:13 +09:00
Yuta Saito
afea9c53c2 wasm: Enable filesystem APIs in libcxx
As of a recent fix included in LLVM 17[1] and wasi-libc fix[2], we can
enable `LIBCXX_ENABLE_FILESYSTEM` in libcxx build for WebAssembly/WASI.
This allows us to use `<filesystem>`, `<fstream>`, etc in C++ code.

[1]: 66a562d22e
[2]: https://github.com/WebAssembly/wasi-libc/pull/463
2024-11-20 20:59:30 +00: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
Meghana Gupta
5b5acc64e0 Promote Nonescapable types to a language feature 2024-11-18 18:09:17 -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
Henrik G. Olsson
0678829cf7 Add @PointerBounds macro (#76969)
Add @PointerBounds macro

@PointerBounds is a macro intended to be applied by ClangImporter when
importing functions with pointer parameters from C headers. By
leveraging C attributes we can get insight into bounds, esapability, and
(eventually) lifetimes of pointers, allowing us to map them to safe(r)
and more ergonomic types than UnsafePointer.

This initial macro implementation supports CountedBy and Sizedby, but
not yet EndedBy. It can generate function overloads with and without an
explicit count parameter, as well as with UnsafeBufferPointer or Span
(if marked nonescaping), and any of their combinations. It supports
nullable/optional pointers, and both mutable and immutable pointers.
It supports arbitrary count expressions. These are passed to the macro
as a string literal since any parameters referred to in the count
expression will not have been declared yet when parsing the macro.

It does not support indirect pointers or inout parameters. It supports
functions with return values, but returned pointers can not be bounds
checked yet.

Bounds checked pointers must be of type Unsafe[Mutable]Pointer[?]<T>
or Unsafe[Mutable]RawPointer[?]. Count expressions must conform to
the BinaryInteger protocol, and have an initializer with signature
"init(exactly: Int) -> T?" (or be of type Int).

rdar://137628612

---------

Co-authored-by: Doug Gregor <dgregor@apple.com>
2024-11-11 14:54:25 -08:00
Dave Lee
b8db9d481e [build-script][embedded] Conditionally force compiler-rt baremetal builtins (#77395)
This change allows build-script to be invoked with the following combination:

```
--llvm-targets-to-build=host --build-embedded-stdlib=false
```

When `--build-embedded-stdlib=false` is used, it's unnecessary to force-configure
additional compiler-rt targets. Further, when `--llvm-targets-to-build` is used,
the resulting llvm usually won't support the forced targets of armv6/armv7.
2024-11-05 15:30:32 -08:00
Max Desiatov
91065437aa Flush build step log messages in build_script_invocation.py (#77324)
This ensures that log messages are printed as soon as a corresponding build step starts, instead of printing these messages in the end out of order.

For example, before for SwiftPM

```
--- Cleaning swiftpm ---
--- Building swiftpm ---
--- Running tests for swiftpm ---
--- Finished tests for swiftpm ---
--- Installing swiftpm ---
```

was printed at the end of the CI job log with no actual build phase output in between these markers. Now these build phase markers are printed in the correct order and one can infer which log messages were printed for each build phase.
2024-11-01 12:19:34 -07:00
Yuta Saito
fc2c3c96f4 Merge pull request #77020 from kateinoigakukun/yt/compiler-rt-profile-rebranch
[wasm][build] Enable building compiler-rt/lib/profile
2024-11-01 00:31:37 +09:00
Yuta Saito
375fc598da [wasm] Enable building compiler-rt/lib/profile
This patch enables building `compiler-rt/lib/profile` for WebAssembly
targets. This is necessary to support `-fprofile-instr-generate` for
WebAssembly targets.
2024-10-29 11:34:08 +00:00
Ben Barham
f74b40e37c Revert "build-script: Build core foundation tests without debug info to workaround a linker crash" 2024-10-29 09:25:49 +10:00
Erik Eckstein
ed4fab8445 build-script: Build core foundation tests without debug info to workaround a linker crash
On amazon-linux2 the gold linker (version 1.14) crashes when linking debug info.
rdar://138562663
2024-10-24 21:49:25 +02:00
Erik Eckstein
839d7ae2ef build-script: Build foundation tests without debug info to workaround a linker crash
On amazon-linux2 the gold linker (version 1.14) crashes when linking debug info.
rdar://137760869
2024-10-22 08:40:18 +02:00
Mishal Shah
05ad720f57 Revert "Drop references to clang-pseudo-gen after removal" 2024-10-18 20:58:41 -07:00
Stefan Gränitz
51f41842fe Drop references to clang-pseudo-gen after removal
pseudo was removed from clang-tools-extra in upstream PR https://github.com/llvm/llvm-project/pull/109154
Drop two explicit references in swift and unblock Windows CI
2024-10-17 14:43:18 +02:00
Yuta Saito
d1a26d091d [wasm][build] Disable LLVM unwinder in libcxxabi (#77018)
This change disables the use of llvm libunwind in libcxxabi, which is enabled by default in the rebranched scheme. (https://reviews.llvm.org/D150897) But the llvm libunwind is not supported in the WebAssembly target, so we need to disable it explicitly.

This is a preparation for the upcoming `rebranch` merge.
2024-10-15 16:37:47 +01:00
Alex Hoppen
9c992a7c38 Merge pull request #76730 from ahoppen/ahoppen/lsp-cross-compile
[build] Build sourcekit-lsp for multiple arches and lipo them
2024-10-11 15:14:11 -07:00
Alex Hoppen
04e78e0578 [build] Build sourcekit-lsp for multiple arches and lipo them
Instead of building SourceKit-LSP using SwiftPM's multi-arch xcbuild backend, build it for only one arch at a time and then run `lipo` to merge the two resulting binaries.

This should allow us to share build products between building installing and testing and also eliminates other quirks resulting from the xcbuild backend.
2024-09-26 21:52:49 -07:00
Yuta Saito
24bd384f84 [wasm] Configure LLVM for WebAssembly target independently from the native LLVM build
We have been using the host LLVM build directory to configure the Wasm
Swift stdlib. This has been working fine so far as the stdlib build is
configured with `CMAKE_SYSTEM_NAME` having host system name. However,
we fixed the stdlib build to use `WASI` as the system name properly in
the previous commit. This exposed the issue that the host LLVM build
directory is not suitable for configuring the stdlib build.
2024-09-19 09:11:30 +00:00