Commit Graph

441 Commits

Author SHA1 Message Date
Luke Howard
451f309935 build with 64-bit time_t on 32-bit platforms (#82595)
It is good practice to build with 64-bit `time_t`/timeval on 32-bit
platforms to avoid the Y2038 issue. This is the default when building on
Yocto for armv7, for example. Unfortunately `suseconds_t` is not an
alias to a type of the correct width (unlike time_t).

Question: on release/6.1, tv_usec is assumed to be `Int32`, but on main
it is `Int`, but appears to be the same commit hash?

#### git blame main stdlib/public/Platform/Platform.swift

```
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 350) @available(SwiftStdlib 5.7, *)
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 351) extension timeval {
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 352)   @available(SwiftStdlib 5.7, *)
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 353)   public init(_ duration: Duration) {
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 354)     let comps = duration.components
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 355)   // Linux platforms define timeval as Int/Int
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 356)   self.init(tv_sec: Int(comps.seconds),
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 357)               tv_usec: Int(comps.attoseconds / 1_000_000_000_000))
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 358)   }
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 359) }
```

#### git blame release/6.1 stdlib/public/Platform/Platform.swift

```
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 455) @available(SwiftStdlib 5.7, *)
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 456) extension timeval {
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 457)   @available(SwiftStdlib 5.7, *)
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 458)   public init(_ duration: Duration) {
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 459)     let comps = duration.components
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 460) #if os(Linux)
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 461)   // Linux platforms define timeval as Int/Int
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 462)   self.init(tv_sec: Int(comps.seconds),
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 463)               tv_usec: Int(comps.attoseconds / 1_000_000_000_000))
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 464) #else
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 465)     // Darwin platforms define timeval as Int/Int32
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 466)     self.init(tv_sec: Int(comps.seconds),
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 467)               tv_usec: Int32(comps.attoseconds / 1_000_000_000_000))
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 468) #endif
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 469)   }
e675b310f8 (Philippe Hausler    2022-02-17 09:32:46 -0800 470) }
```
2025-06-30 18:19:32 -07:00
Saleem Abdulrasool
2ee8787712 Merge pull request #82343 from compnerd/ntapi
Platform: expose NTAPI
2025-06-18 23:09:01 -07:00
Saleem Abdulrasool
e049493d77 Platform: expose NTAPI
The NTAPIs are sometimes required to access some system information. At
the very least, the types defined here are useful to expose.
2025-06-18 09:51:52 -07:00
(null)
bc870eff36 removed duplicated 2025-06-17 16:07:39 -04:00
(null)
cf041b126e address pltaform orders and other nits 2025-06-17 15:37:49 -04:00
(null)
d6811260a9 Merge commit '665515c781999a81094bbe4f8302a7cb1a6a6b39' into mchiu/freebsd 2025-06-17 15:12:23 -04:00
Fabrice de Gans
4596a04f6a modulemap: Add missing dependency on vcruntime
`stdlib.h` includes `limits.h`, which is defined in the `vcruntime`
module.
2025-06-09 15:20:58 -07:00
Fabrice de Gans
e94cc8626c Platform: Windows SDK 26100.3916 module map update
A minor update to the Windows SDK broke our module maps. This fixes the
issue by re-separating a few modules. For backward-compatibility and
proper export of symbols, the split headers are also included in the
main `ucrt` module.
2025-06-03 11:59:34 -07:00
Fabrice de Gans
72dad03924 Simplify ucrt.modulemap 2025-06-02 15:24:43 -07:00
Fabrice de Gans
6f9876a565 Platform: Update module maps for the static SDK
Building with the Windows static SDK uncovered issues in the Windows
module maps. Some of the headers were missing and others had incorrect
layering. This updates the module maps to build with the static Windows
SDK.
2025-06-02 15:24:17 -07:00
michael-yuji
8738e722bd Merge branch 'main' into mchiu/freebsd 2025-05-28 14:44:11 -07:00
Ian Anderson
15345ef2d5 [CMake][Darwin] Remove support for building the SDK overlays on Apple platforms
The SDK overlays have been provided in the Apple SDKs for many years, and the interface and implementation has diverged in more recent years such that trying to build the Swift version no longer works. Remove all of the dead code.

rdar://151889154
2025-05-23 23:38:08 -07:00
michael-yuji
9a948a9c3b Merge branch 'main' into mchiu/freebsd 2025-05-21 16:29:16 -07:00
Kuba Mracek
6d71f45101 [embedded] Stop using -D__APPLE__ and -D__MACH__ 2025-03-31 15:07:11 -07:00
Fabrice de Gans
d5ea19405d Put float and stddef back inside the ucrt module
These were split out in #79751. However, this split is not needed for
these. Furthermore, modulemaps have bugs when it comes to re-exporting
some modules, resulting in missing exports.
2025-03-21 10:01:01 -07:00
Fabrice de Gans
7a965cee00 Restore legacy_stdio_definitions in ucrt.modulemap
This was removed in #79751 but is required in some cases.
2025-03-19 16:51:38 -07:00
Fabrice de Gans
5e3bd9f90b Merge pull request #79751 from Steelskin/fabrice/update-ucrt-modulemap
Update ucrt.modulemap for Windows SDK 10.0.26100
2025-03-18 09:04:24 -07:00
Michael Chiu
26dd5c3787 FreeBSD cxx stdlib and tests fixes 2025-03-14 02:15:15 -04:00
Michael Chiu
0c47c45303 Adding FreeBSD support
This commit adds required conditional compilation blocks to enable bulding on
FreeBSD (tested on x86_64 FreeBSD 14.1-RELEASE-p6). Also implements FreeBSD
synchronization shims using `_umtx_op(2)`
2025-03-14 02:15:15 -04:00
Saleem Abdulrasool
1dffb688d6 WinSDK: add DDE, OLE, LZ32 submodules
Further modularise the Windows SDK. This adds 3 new submodules to get
better coverage of the Windows SDK.
2025-03-03 13:44:51 -08:00
Saleem Abdulrasool
c4f5831507 Platform: add APINotes for bionic.spawn
Add some APINotes for `bionic.spawn` to correct the nullability
annotations. This allows building Foundation with NDK r26b.
2025-02-27 21:09:23 -08:00
Saleem Abdulrasool
79d2af759b ClangImporter: support modularizing __msvc_string_view.hpp
This header was introduced in a recent STL release. Modularise the
header properly, adding a shim for compatibility with older releases.

Partially based on a change from @egorzhdan.
2025-02-10 12:48:35 -08:00
Finagolfin
22833fbc54 [android] Update to LTS NDK 27c
Add a new bits/ header to the Android overlay, include runtime libraries that are
auto-extracted and listed many times to the list of libraries to be de-duplicated,
enable a C++ interop test that's working again, and update the doc with new
libraries that need to be available to run a simple executable.
2024-11-14 00:11:53 +05:30
Artem Chikin
60538d5918 Revert "Attempt to reduce the number of embedded stdlib targets being built simultaneously."
This reverts commit dfa1bdb1ce.
2024-11-11 14:42:59 -08:00
Artem Chikin
dfa1bdb1ce Attempt to reduce the number of embedded stdlib targets being built simultaneously.
We are seeing strange crashes during embedded stdlib build stage on Ubuntu 24.04. These crashes only seem to occur when we dispatch many stdlib emit-module tasks at the same time. While we root-cause it, this change attempts to slow down the process to only two Embedded StdLib tasks at-a-time.

Workaround for rdar://137674862
2024-11-08 13:55:14 -08:00
furby™
c68b0d8320 Fix typos in VCRuntime modulemap.
* https://github.com/swiftlang/swift/issues/77351

Signed-off-by: furby™ <devs@wabi.foundation>
2024-11-01 19:16:00 -06:00
Egor Zhdan
168413ef61 Merge pull request #76823 from swiftlang/egorzhdan/msvc-bit-module
[cxx-interop] Modularize __msvc_bit_utils on Windows
2024-10-07 12:10:55 +01:00
Egor Zhdan
16e7cbeafa [cxx-interop] Modularize __msvc_bit_utils on Windows
`__msvc_bit_utils.hpp` was added in a recent version of MSVC, and it is causing build errors for SwiftCompilerSources:
```
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\numeric:598:12: error: function '_Select_countr_zero_impl<unsigned long long, (lambda at C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\numeric:598:55)>' with deduced return type cannot be used before it is defined
    return _Select_countr_zero_impl<_Common_unsigned>([=](auto _Countr_zero_impl) {
```

This change references the `__msvc_bit_utils.hpp` header from the modulemap. Since we still need to support older versions of Visual Studio that do not provide `__msvc_bit_utils.hpp`, this also teaches ClangImporter to inject an empty header file named `__msvc_bit_utils.hpp` into the system include directory, unless it already exists.

rdar://137066642
2024-10-04 13:15:20 +01:00
Egor Zhdan
5b9186e445 [Glibc] Remove WASI gyb logic from the modulemap
This is a minor cleanup of the generated Glibc modulemap.

WASI no longer uses the Glibc modulemap since 902d75e6.
2024-10-04 01:00:24 +01:00
Egor Zhdan
0c106006db [Glibc] Remove Android gyb logic from the modulemap
This is a minor cleanup of the generated Glibc modulemap.

Android no longer uses the Glibc modulemap since 57b89d53.
2024-10-03 19:37:11 +01:00
Dmitrii Galimzianov
a8b71ea97f Add -print-diagnostic-groups flag
This change adds the `-print-diagnostic-groups` flag as described by SE-0443.
2024-09-11 13:34:42 +02:00
Yuta Saito
ba63b9f628 Merge pull request #75821 from kateinoigakukun/pr-680047d2b871e809cf13f27c8a4a5abc2f5c31d2
[wasm] Annotate errno as SwiftPrivate by apinotes
2024-08-17 14:35:42 +09:00
Yuta Saito
be08ebb12a [wasm] Annotate errno as SwiftPrivate by apinotes
This patch adds an apinotes file for SwiftWASILibc clang module to mark
`errno` macro hidden from Swift code. This resolves ambiguity between
the C macro definition and the Swift wrapper in WASILibc overlay module.

This change installs the apinotes file to the resource directories for
both lib/swift/apinotes and lib/swift_static/apinotes.
2024-08-16 10:57:24 +00:00
Alex Lorenz
d35af38ce4 Merge pull request #75721 from hyp/eng/75691
[windows] split out complex module from ucrt module, to allow new swi…
2024-08-12 08:30:47 -07:00
Yuta Saito
90799cfdf7 Revert "[wasm] Fix ambiguous errno error when importing WASILibc module"
This reverts commit 164ec0adaa.
2024-08-10 13:29:48 +00:00
Yuta Saito
164ec0adaa [wasm] Fix ambiguous errno error when importing WASILibc module
This commit fixes an ambiguous `errno` error when importing WASILibc
module and SwiftWASILibc Clang module.

The error is caused by the fact that we define a shim for `errno` in
`Platform.swift` file, but wasi-libc defines `errno` in a way
ClangImporter can understand. We don't need to define shims for it,
otherwise we get two candidates for `errno` identifier.
2024-08-07 04:28:29 +00:00
Alex Lorenz
b62eafd866 [windows] split out complex module from ucrt module, to allow new swift-foundation to import ucrt when C++ interoperability is enabled
Fixes https://github.com/swiftlang/swift/issues/75691
2024-08-06 11:33:03 -07:00
Yuta Saito
65f9badbcd [wasm] Add shims for aliased errno constants in WASILibc overlay
We provide shims for errno constants in WASILibc overlay since
wasi-libc's errno.h defines those constants in a way that cannot be
imported by ClangImporter.
However, some errno constants are aliased in wasi-libc, and we didn't
provided shims for them. This patch adds those missing shims.
2024-08-03 07:51:49 +00:00
Alex Lorenz
c03627014e [android] fix path and cmake local build target tracking for posix_filesystem.apinotes
This apinote file needs to be accessible in the locally built Android SDK as it's being built with build.ps1, so that swift-foundation can be built with that file present. This change ensures that the file is copied over into the local build directory for that Android SDK, in addition to being included in the installed component

This change also places the component into lib/swift/apinotes, as that's where the clang importer already looks for API notes
2024-07-25 21:25:25 -07:00
Alexander Cyon
c21b1e68fd [stdlib] Fix typos 2024-07-06 13:09:57 +02:00
Guillaume Lessard
8733ecd012 Merge pull request #75000 from glessard/rdar99047401-err-nosendable
[concurrency/stdlib] declare `POSIXErrorCode` as `Sendable`
2024-07-05 16:58:51 -07:00
Guillaume Lessard
ab117c997d [concurrency] declare POSIXErrorCode as Sendable 2024-07-05 13:34:26 -07:00
Saleem Abdulrasool
f011de6ce8 Merge pull request #74829 from compnerd/android-notes
ClangImporter: add support for Android API Notes
2024-07-01 11:34:46 -07:00
Saleem Abdulrasool
47f9d78990 ClangImporter: add support for Android API Notes
Introduce the first APINotes injection for the Android platform. This
follows the VCRuntime pattern of permitting the SDK to provide API Notes
that augment the system SDK. This adds a workaround for incorrect
nullability on the `fts_open` function in bionic. The system library
itself is fixed at:
https://android-review.googlesource.com/c/platform/bionic/+/3151616
2024-06-28 13:24:04 -07:00
Saleem Abdulrasool
22817ccf1a Platform: add sys_xattr module for Android
This module was left out from the modulariation pass. The declarations
here are required for building swift-foundation for Android.
2024-06-26 12:33:36 -07:00
Kuba Mracek
6eeef12849 [embedded] Add a embedded-libraries CMake target to simplify the test dependencies 2024-06-23 13:08:01 -07:00
Alex Lorenz
98b74d8010 [android] do not import stdatomic from android's libc++
android's libc++ uses an older module map that requires C++23 for stdatomic, and thus it fails to compile with anything else
2024-06-12 10:04:14 -07:00
Alex Lorenz
5aa63fc93e Merge pull request #72634 from hyp/eng/android/ndk-overlay
[android] add an Android NDK Swift overlay
2024-06-05 19:35:13 -07:00
Alex Lorenz
46502f9249 Merge pull request #72161 from hyp/eng/android-ndk-modulemap
[android] add a module map for Android NDK
2024-06-05 19:35:00 -07:00
Alex Lorenz
743a501d1b comment cleanup 2024-06-05 10:53:15 -07:00