Commit Graph

368 Commits

Author SHA1 Message Date
Kuba Mracek
dba8d5d3a0 Revert "Merge pull request #71278 from kubamracek/embedded-no-mach-defines"
This reverts commit 21eddf0b1a, reversing
changes made to e2d516f3c9.
2024-02-05 09:05:22 -08:00
Kuba Mracek
e22aedbcc3 [embedded] Implicitly define __APPLE__ and __MACH__ when on -apple-none triples 2024-01-31 09:22:31 -08:00
Max Desiatov
633d5bc45a Enable x86_64 and i686 ELF triples for embedded Swift (#70642)
This is just as useful for x86 bare metal as the already enabled `arm*-none-none-eabi` triples.
2024-01-26 21:39:17 +00:00
Kuba Mracek
bb1ba7c95c [embedded] Run DeadFunctionAndGlobalElimination after MandatoryPerformanceOptimizations 2023-12-09 22:39:55 -08:00
Kuba Mracek
2796e150fe [embedded] Disable building Darwin as embedded, unbreak the build and CI 2023-12-06 17:11:23 -08:00
Saleem Abdulrasool
203cace27f Platform: remove cplusplus requirement on XAudio29
The header is usable without C++ interop.  This should make it easier to
use the module in many cases.
2023-12-03 18:58:41 -08:00
Kuba Mracek
7c84cdb83f [embedded] Start installing embedded Concurrency and Darwin modules into the toolchain 2023-11-28 16:18:10 -08:00
Kuba Mracek
fa7da75cdc [embedded] Port and start building Darwin.swiftmodule as embedded 2023-11-27 20:16:58 -08:00
Yuta Saito
35120a110f [wasm] Exclude builtin headers from WASILibc system module
stable/20230725 now rejects including builtin headers in modulemap by
default to avoid module cycles on non-Apple platforms. Builtin headers
are now part of their own `_Builtin_XXX` modules.

See:
- https://github.com/apple/llvm-project/pull/7618
- https://reviews.llvm.org/D159483
- https://reviews.llvm.org/D159064
2023-10-24 00:07:32 +00:00
Saleem Abdulrasool
fa9186863f Merge pull request #69023 from compnerd/models
Platform: add an explicit `AppModel` module for Windows
2023-10-07 09:30:01 -07:00
Saleem Abdulrasool
cdc1a7b5bb Platform: add an explicit AppModel module for Windows
Extract and isolate the AppModel APIs into its own module.  This
corresponds to the contract boundary on Windows.
2023-10-06 12:13:35 -07:00
Yuta Saito
cdc47aabfb [WASILibc] Exclude semaphore APIs from overlay
Since wasi-libc does not support those APIs
2023-10-06 01:49:30 +00:00
STREGA
2832492ca8 Fix incorrect library name 2023-09-29 21:00:04 -04:00
Saleem Abdulrasool
aface3a75f Platform: add missing header for OLE32
We should include `oleauto.h` in the OLE32 module.  This ensures that we
are able to access the BSTR APIs which are used extensively in OLE.
2023-09-28 12:05:05 -07:00
Yuta Saito
902d75e608 [wasm][build] Add WASILibc module and its build support
[wasi-libc](https://github.com/WebAssembly/wasi-libc) is a libc
implementation widely used in WASI toolchains. This patch adds a new
module named WASILibc. Some extra emulation libraries are also added as
wasi_emulated_xxx.
2023-09-23 11:51:00 +00:00
Saleem Abdulrasool
47eb843f02 Merge pull request #67821 from stevapple/stevapple-patch-1-1
Remove `vcruntime._Private.xstddef`
2023-08-09 13:45:34 -07:00
Saleem Abdulrasool
af57672c0f Platform: further modularise vcruntime._Private
Create an explicit module for `xhash` to correct the usage for
`unordered_set`.
2023-08-09 13:45:21 -07:00
YR Chen
7c43dfb986 Remove vcruntime._Private.xstddef
`<xstddef>` was removed since MSVC 14.37. It isn't meant to be used by most users, but the reference will break all clients of `vcruntime`, including Swift standard library itself.
2023-08-09 18:53:00 +08:00
Saleem Abdulrasool
3de765cad3 Platform: correct requirements for std.unordered_set
This module requires C++11, not `unordered_set` which prevents the use
of the module.
2023-08-08 13:28:08 -07:00
Saleem Abdulrasool
81cab33a75 Platform: further modularise ucrt
Add a couple of submodules for these modules to further modularise the
headers.  This might expose additional APIs now as some of these headers
would not have been indirectly included and wind up in the wrong module.
2023-08-06 21:16:40 -07:00
Saleem Abdulrasool
3aec82da29 Platform: make stdint module implicit on Windows
This makes the `stdint` module implicit which repairs the ability to
build some components.  In order to accomplish this, we need to
potentially break the fragile Swift build system.  Due to the incorrect
handling of compilers we need some workarounds to support
cross-compilation.  This removes the injected system header paths when
building on Windows to ensure that the clang resource headers are not
following the system headers which breaks the modules as the clang
resources are dependent on the system headers when running in hosted
mode.
2023-08-04 15:37:59 -07:00
Saleem Abdulrasool
fc72e7cb0e Platform: add missing std._Private modules
Add the missing `std._Private.xstddef`, `std._Private.yvals`, and
`std._Private.yvals_core` modules.  This repairs the use of `std.map` as
a private member variable of a type with an explicit ctor.
2023-07-26 15:50:15 -07:00
Saleem Abdulrasool
d4c5f2a845 Platform: add an additional corecrt submodule
This was detected as missing when trying to re-modularise MSVCPRT.
2023-07-26 15:50:15 -07:00
Saleem Abdulrasool
04742d64e5 Platform: remove some deprecated modules from MSVCPRT
These modules were deprecated and do not exist in the distribution,
remove the commented out form.
2023-07-26 15:50:15 -07:00
Saleem Abdulrasool
e2466d05ab Platform: add some missing C++ modules for MSVCPRT
Add a couple of missing submodules to the modulemap.  This is for
completeness and to help with newer MSVCPRT releases.
2023-07-26 15:50:14 -07:00
Saleem Abdulrasool
39e1a72d56 Platform: add std._Private.xutility for Windows
This adds the `xutility` module to strip that from the first modular
inclusion of the header.
2023-07-26 15:50:14 -07:00
Saleem Abdulrasool
4667c12f48 Platform: introduce a std._Private module for Windows
These headers are not meant to be publicly consumed, introduce a
`_Private` module for internal use for the `std` module.
2023-07-26 15:50:14 -07:00
Saleem Abdulrasool
33f4bcb8b2 Platform: add std.iomanip on Windows
Add the missing submodule for `iomanip` on Windows.
2023-07-26 15:50:13 -07:00
Saleem Abdulrasool
c5fc76d995 Platform: add some version indicators on C++ submodules
Specify the C++ standard required for these submodules.  Although this
has no practical implications, it is useful for isolating the features
with different C++ standards.
2023-07-26 15:50:13 -07:00
Evan Wilde
669285fd17 Merge pull request #65534 from stephank/fix/cmake-3.25
build: fix accidental cmake expansions
2023-07-24 09:44:14 -07:00
Saleem Abdulrasool
a0500be652 Platform: add URL Monikers to the WinSDK overlay
Add a module definition for importing the URL Monikers interfaces.  This
is in service of DocC.
2023-07-23 14:33:57 -07:00
Stéphan Kochen
7b460ce495 build: fix accidental cmake expansions
As of CMake 3.25, there are now global variables `LINUX=1`, `ANDROID=1`,
etc. These conflict with expressions that used these names as unquoted
strings in positions where CMake accepts 'variable|string', for example:

- `if(sdk STREQUAL LINUX)` would fail, because `LINUX` is now defined and
  expands to 1, where it would previously coerce to a string.

- `if(${sdk} STREQUAL "LINUX")` would fail if `sdk=LINUX`, because the
  left-hand side expands twice.

In this patch, I looked for a number of patterns to fix up, sometimes a
little defensively:

- Quoted right-hand side of `STREQUAL` where I was confident it was
  intended to be a string literal.

- Removed manual variable expansion on left-hand side of `STREQUAL`,
  `MATCHES` and `IN_LIST` where I was confident it was unintended.

Fixes #65028.
2023-07-17 21:50:50 +02:00
Max Desiatov
7581e7241c stdlib/public/platform: rename ALPINE to MUSL in CMakeLists.txt 2023-07-06 15:45:16 +01:00
Max Desiatov
115ddf96d5 List all musl headers directly in musl.modulemap 2023-07-05 22:39:47 +01:00
Max Desiatov
0f5617e909 stdlib: add modulemap for Musl, add Musl platform module
This change is necessary to allow building Musl platform module when targeting Alpine Linux.
2023-07-05 22:26:55 +01:00
STREGA
9cc41fa80d Add DirectInput 2023-06-23 14:33:44 -04:00
Saleem Abdulrasool
8a4c6225ec Windows: add wincred.h to the modulemap
This adds the Windows credentials API to the modulemap for the Windows
SDK module.
2023-04-14 16:47:26 -07:00
Matt Jacobson
2febbb4aaf stdlib: implement POSIXErrorCode for FreeBSD
It shares many of the same values as OpenBSD (which both inherited from 4.4BSD),
and we wouldn't expect those to diverge due to the respective platforms'
bincompat goals.
2023-03-16 01:20:56 -04:00
Saleem Abdulrasool
90cacaa359 Platform: install Windows auxiliary files
These are now referenced directly by the compiler so install them as
part of the package.
2023-03-08 14:07:10 -08:00
Saleem Abdulrasool
19a0eaaa77 Windows: add conio and corecrt.conio
This adds `conio` and `corecrt.conio` modules to the ucrt modulemap to expose these interfaces to Swift.

Fixes: #63024
2023-01-30 11:43:06 -08:00
Evan Wilde
f8a54181a9 Zipper all the things!
This patch goes through and adds zippering and the swift module
dependencies to a bunch of pieces of the swift runtimes. Here's to
hoping I hit everything that needed to be hit. :D

With this patch, I'm seeing the appropriate modules under
lib/swift/maccatalyst, so things seem to be working right.
2022-12-22 13:41:59 -08:00
Matt Jacobson
8e6ce5c087 stdlib: install SwiftGlibc.h in static resources directory
When SwiftGlibc.h was added in #32404, no cmake code was added to copy it to the
static resources.  Copy it along with glibc.modulemap, which references it.
2022-11-18 07:27:04 -05:00
Egor Zhdan
ba31ca4ea6 [build] Remove unused GLIBC_INCLUDE_PATH macro
This macro was previously substituted when generating `glibc.modulemap` file during the compiler build. Now Swift detects the location of Glibc dynamically and injects `glibc.modulemap` into it using LLVM VFS. The last usage of `GLIBC_INCLUDE_PATH` was removed in `78c0540b`.

This also removes `SWIFT_SDK_${sdk}_ARCH_${arch}_LIBC_INCLUDE_DIRECTORY` which doesn't have any usages left.
2022-09-05 18:57:29 +01:00
Egor Zhdan
78c0540b6f [Glibc] Refer to UUID headers from the modulemap using relative paths
This improves portability of the Swift toolchains by removing a usage of absolute path to Glibc.

The Glibc modulemap is now injected into the Glibc include path using LLVM VFS, so it can reference Glibc headers using relative paths. This already works for other Glibc headers (e.g. `assert.h`)
2022-08-17 15:09:17 +01:00
Saleem Abdulrasool
b420071835 vcruntime: adjust module definition further
Add some of the x* headers to the c++ module.  These are included
multiply and so we create private modules for them rather than
associate them with a different module which could cause issues
in practice due to intra-module dependencies.
2022-08-14 08:02:12 -07:00
Egor Zhdan
c314ae0d17 [Glibc] Add missing C stdlib header
`assert.h` is missing from the modulemap, which causes clang to consider `assert.h` to be a part of the first module to include it. This causes issues in SwiftCompilerSources when we try to use classes coming from LLVM headers on Linux.
2022-07-05 16:45:18 +01:00
Saleem Abdulrasool
f57fe44fdb Update vcruntime.modulemap
Remove `spanstream` header from the module until we can identify a way to do per-release variants.
2022-06-28 19:01:41 -07:00
Saleem Abdulrasool
1779c569c8 Platform: add a definition for std on Windows
This adds the c++ module for Windows to help further the C++ interop.
2022-06-28 16:10:37 -07:00
Saleem Abdulrasool
01ae682b4a Platform: extend ucrt with some MSVC extensions
Add some additional modules which become necessary to support the C++
modularization.
2022-06-27 13:44:18 -07:00
Saleem Abdulrasool
52f8760255 Merge pull request #59723 from compnerd/corecrt
Platform: extract `corecrt` module
2022-06-27 13:24:27 -07:00