Skip to content

Merge main 2022-06-11 #4641

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

Merged
merged 123 commits into from
Jun 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
4aed3d1
[gardening] add spaces after commas, for readability
glessard Oct 16, 2021
17c19fb
[stdlib] fix an indexing inconsistency
glessard Jun 24, 2021
d6165cd
[doc] mention `loadUnaligned` in URBP description
glessard May 26, 2022
81b0d3a
Correct complexity statement for Sequence compactMap
fulldecent May 28, 2022
c295db4
[cxx-interop] Don't expose unsupported top-level async or @_transpare…
WANGJIEKE Jun 7, 2022
0cf687a
[Build][Runtime] Replace SWIFT_STDLIB_SINGLE_THREADED_RUNTIME.
al45tair Mar 25, 2022
66b9d21
[Runtime] Remove all use of read/write locks.
al45tair Mar 29, 2022
f5bdb85
[Threading] Create new threading library and use it.
al45tair Apr 15, 2022
2ba80e1
[Unittests] Make the Threading unit tests work.
al45tair Apr 20, 2022
785f4a2
[Unittests] Add more threading library tests.
al45tair Apr 20, 2022
e934cbc
[Threading] Fix case sensitivity bug.
al45tair Apr 20, 2022
a699633
[Threading] Auto-detect threading in the preprocessor.
al45tair Apr 20, 2022
e0d23ed
[Threading] A couple of header file fixes.
al45tair Apr 20, 2022
6d1b6db
[Threading] Fix the Linux build.
al45tair Apr 21, 2022
84083af
[Build] Move initialization of SWIFT_HOST_VARIANT_SDK further up.
al45tair Apr 21, 2022
8615983
[Build] Fix static linking.
al45tair Apr 22, 2022
02b3431
[Build] Fix the name of the threading package setting.
al45tair Apr 22, 2022
4eca62a
[Threading][Windows] Fix missing close brace.
al45tair Apr 22, 2022
9d5736e
[Threading][Windows] Fix another Windows niggle.
al45tair Apr 22, 2022
d76f80d
[Threading][Windows] More header file fixes.
al45tair Apr 22, 2022
a7e42d0
[Threading][Windows] Undefine Yield and ERROR.
al45tair Apr 26, 2022
05cccf9
[Runtime][Windows] Need to link with Synchronization.lib.
al45tair Apr 26, 2022
2e28ac4
[Threading][Windows] Don't include <windows.h>
al45tair Apr 27, 2022
66f6eb6
[Runtime][Windows] A couple of files need to include <windows.h>
al45tair Apr 27, 2022
14a4bd4
[Concurrency][Threading] Remove use of platform thread functions.
al45tair Apr 27, 2022
d6cff94
[Threading][Windows] Try to avoid declaring _RTL_SRWLOCK
al45tair Apr 28, 2022
e305a7d
[Concurrency][Windows] Add a couple of includes for Windows.
al45tair Apr 28, 2022
ef2e40a
[Concurrency][Windows] Remove unnecessary includes.
al45tair Apr 28, 2022
3bfc7e0
[Threading][Windows] Link the unit test against Synchronization.lib
al45tair Apr 28, 2022
210b772
[UnitTests][Windows] Link with Synchronization.lib
al45tair Apr 28, 2022
f3a412d
[Threading] Remove thread_get_main().
al45tair Apr 28, 2022
0e9318c
[Threading] Put everything through git clang-format.
al45tair Apr 28, 2022
c7c1c1b
[Threading] Fix some problems with the C11 threading code.
al45tair Apr 29, 2022
eb4c81d
[Threading] Don't use TLS keys as template arguments.
al45tair May 4, 2022
b5c8b79
[Threading] Move stack bounds fetching into the threading library.
al45tair May 6, 2022
4825578
[Concurrency] Remove redundant include.
al45tair May 6, 2022
dc809f8
[Threading] A few include tweaks.
al45tair May 6, 2022
6962758
[Threading] Add the ability to use any C++ callable in swift::once().
al45tair May 24, 2022
668bcbc
[Threading] Fix a few things following rebase.
al45tair May 24, 2022
c401cc3
[Threading] Use llvm::Optional<> rather than making a zero lower boun…
al45tair May 24, 2022
33f103f
[Build] Fix some issues with the standalone library build.
al45tair May 31, 2022
124581a
[Build][Concurrency] Fix Concurrency build to work for Linux.
al45tair Jun 1, 2022
aa0265b
[Threading] Use raw gettid syscall for older glibc compatibility
kateinoigakukun Jun 2, 2022
c46d4af
[Build] Explicitly include threading library when not building stdlib.
al45tair Jun 6, 2022
ede4010
[BackDeployConcurrency] Fix to use the new threading library.
al45tair Jun 7, 2022
abfccd1
expose @_transparent; don't expose @_alwaysEmitIntoClient and async
WANGJIEKE Jun 7, 2022
9db9c14
Remove a FIXME from validation-test/stdlib/FixedPoint.swift.gyb
atrick Jun 8, 2022
1327299
[interop][SwiftToCxx] pass / return Swift struct values between C/C++…
hyp Jun 8, 2022
c32390d
Update README.md
ArjunSharda Jun 8, 2022
ca96f03
[SwiftCompilerSources] Temporarily enable bootstrapping on the CI
egorzhdan Jun 8, 2022
a8ae273
[SwiftCompilerSources] Require very recent Swift compiler in `HOSTTOO…
egorzhdan Jun 8, 2022
f6443f0
fix test case for concurrency availability
WANGJIEKE Jun 8, 2022
6219ae9
[docs] improvements for assertionFailure and preconditionFailure
glessard Jun 8, 2022
3159591
[TypeChecker/CodeCompletion] Re-introduce expression sanitization bef…
xedin Jun 8, 2022
a17ee43
Swift SIL: fix `var ApplySite.arguments`
eeckstein May 16, 2022
ec3d9dd
Optimizer: add the ObjCBridgingOptimization to optimize ObjectiveC br…
eeckstein May 12, 2022
9f70c29
SILCombine: remove the old ObjC bridging peephole.
eeckstein May 12, 2022
99372d3
Remove some commented out code
hyp Jun 8, 2022
bc893d7
experimental fix for windows CI failure (resolve-cross-language.swift)
hyp Jun 8, 2022
ebeb870
[ast] Add wrapInOptionalType to CanType and TypeBase.
gottesmm Jun 8, 2022
d56cb4a
[sil] Change SILType::getOptionalType() to use CanType::wrapInOptiona…
gottesmm Jun 8, 2022
3f9ac2f
[silgen] Add support for correctly calling imported throwing methods …
gottesmm Jun 8, 2022
b3d9b87
Merge pull request #58888 from eeckstein/objc-string-opt
eeckstein Jun 9, 2022
36011aa
Fix some typos in `AsyncThrowingStream.swift`
sjavora Jun 9, 2022
3e1cc7e
DiagnoseInfiniteRecursion: improve detection in (potentially) overrid…
eeckstein Jun 9, 2022
3933fc0
[android][test] Fix several tests on the Android CI
finagolfin Jun 6, 2022
a9fe971
Merge pull request #59287 from al45tair/eng/PR-90776105-2
al45tair Jun 9, 2022
a66f937
Merge pull request #59338 from sjavora/patch-1
swift-ci Jun 9, 2022
6707f33
Merge pull request #59339 from eeckstein/improve-diagnose-inf-recursion
eeckstein Jun 9, 2022
a605ec7
[cxx-interop] Fix libstdc++ build failure on CentOS 7
egorzhdan Jun 9, 2022
cc14811
Merge pull request #59340 from apple/egorzhdan/cxx-centos-codecvt
egorzhdan Jun 9, 2022
c7265f3
fix the macos tests
hyp Jun 9, 2022
5ed21c6
Merge pull request #59328 from xedin/rdar-94619388
xedin Jun 9, 2022
96da7db
disable availability checking for async test
WANGJIEKE Jun 9, 2022
71179c0
Add -enable-objc-interop to test and REQUIRES objcinterop
gottesmm Jun 9, 2022
31381a3
[cxx-interop] Fix assertion failure when looking up C++ operators
egorzhdan Jun 9, 2022
48ee0a6
Merge pull request #59279 from buttaface/droid
swift-ci Jun 9, 2022
2eb2278
Add benchmarks to measure Dictionary.filter (#59264)
rctcwyvrn Jun 9, 2022
c470fd1
Merge pull request #59319 from Arjun-Sharda-Contribution-Forks/patch-1
swift-ci Jun 9, 2022
60860c2
Merge pull request #59345 from apple/egorzhdan/cxx-operator-lookup-fix
egorzhdan Jun 9, 2022
ffb9ee9
Revert "Revert "[cxx-interop][SwiftCompilerSources] Fix conversion be…
egorzhdan Jun 9, 2022
9857464
Merge pull request #59334 from gottesmm/pr-499eee4e1aca5a8f3f38d1aeb7…
gottesmm Jun 9, 2022
550de96
split the failing test to 64 bit only test file and unified file
hyp Jun 10, 2022
e1006c6
[move-only] Add copyable_to_moveonlywrapper and moveonlywrapper_to_co…
gottesmm Oct 20, 2021
89761de
[CodeCompletion] Don't suggest initializers on existential types
rintaro Jun 3, 2022
50c1541
fix format
WANGJIEKE Jun 10, 2022
5b1b1f5
Update recent changelog entry to mention an edge-case source break
AnthonyLatsis Jun 10, 2022
863ab00
[Threading] Close and re-open namespace around include.
al45tair Jun 10, 2022
64bd784
Merge pull request #59361 from al45tair/eng/PR-90776105-extra
swift-ci Jun 10, 2022
6cc8359
Merge pull request #59318 from hyp/eng/struct-interop-pass-return
hyp Jun 10, 2022
f8b870a
[interop] refactor out the code to print C++ impl class names and C s…
hyp Jun 10, 2022
f78f226
NFC, extract param & return type for type metadata access function to…
hyp Jun 10, 2022
821ba47
IRGen: Add a frontend option to force single LLVM module emission in …
aschwaighofer Jun 9, 2022
ba1b3c6
[ToolingLibs] Build tooling libs with libswift
rintaro Jun 9, 2022
3d0cece
Merge pull request #59364 from hyp/eng/cleanup-struct-printer
hyp Jun 10, 2022
f6f677f
Merge pull request #59367 from hyp/eng/extract-type-metadata-type-acc…
hyp Jun 10, 2022
35fc9ea
Merge pull request #59117 from glessard/se0349-doctweak
lorentey Jun 10, 2022
6d2d2e0
Merge pull request #38091 from glessard/indexing-model
lorentey Jun 10, 2022
314fe2b
Merge pull request #59265 from rintaro/ide-completion-existentialinit…
rintaro Jun 10, 2022
7404ca9
[Threading] Fix 32-bit Linux.
al45tair Jun 10, 2022
4dffe27
Merge pull request #59330 from glessard/rdar94296845-assertionFailure…
glessard Jun 10, 2022
aeec2eb
Merge pull request #59316 from apple/egorzhdan/hosttools-require-rece…
egorzhdan Jun 10, 2022
d00c0f5
Merge pull request #59353 from apple/egorzhdan/reland-libswift-string…
egorzhdan Jun 10, 2022
7c7fb47
Merge pull request #59355 from gottesmm/pr-20b996075d28e099e1c791eb80…
gottesmm Jun 10, 2022
e78643c
Merge pull request #59143 from fulldecent/patch-1
swift-ci Jun 10, 2022
9c32aac
[nfc] Remove dead operator code pt. 1
zoecarver Jun 10, 2022
65263ab
[nfc] Remove dead operator code pt. 2
zoecarver Jun 10, 2022
bcb86b2
[nfc] Add test for operators on address-only types.
zoecarver Jun 10, 2022
588c287
[nfc] Remove dead operator code pt. 3
zoecarver Jun 10, 2022
1757cac
Revert "[nfc] Add test for operators on address-only types."
zoecarver Jun 10, 2022
e7e8eb1
Merge pull request #59352 from rintaro/toolinglib-libswift
rintaro Jun 10, 2022
0254c0e
RequirementMachine: Fix handling of unavailable Sendable conformances…
slavapestov Jun 10, 2022
ddf9268
Merge pull request #59292 from WANGJIEKE/cxx-interop-not-expose-async…
hyp Jun 10, 2022
4b1c413
Merge pull request #59344 from aschwaighofer/single_module_in_num_thr…
aschwaighofer Jun 10, 2022
2bae905
[SIL.rst] Fix two rst errors to fix the build.
gottesmm Jun 10, 2022
8b5b49d
Merge pull request #59376 from gottesmm/pr-beb88cb915d5108f212a964188…
swift-ci Jun 11, 2022
dfb2348
Merge pull request #59373 from zoecarver/nfc-operator-cleanup
zoecarver Jun 11, 2022
56f2f44
Merge pull request #59369 from slavapestov/rqm-unavailable-conformanc…
slavapestov Jun 11, 2022
cafe5cc
Merge pull request #59308 from atrick/comment-fixedpoint-test
atrick Jun 11, 2022
da71729
Merge pull request #59371 from al45tair/eng/PR-94831034
al45tair Jun 11, 2022
33f64b3
Merge remote-tracking branch 'apple/main' into katei/merge-main-2022-…
kateinoigakukun Jun 11, 2022
4714799
[Wasm] Set SWIFT_THREADING_PACKAGE explicitly since no SWIFT_HOST_VAR…
kateinoigakukun Jun 2, 2022
526e329
[Runtime] Include missing `unistd.h` for I/O function use in Random.cpp
kateinoigakukun Jun 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,22 +177,33 @@ _**Note:** This is in reverse chronological order, so newer entries are added to
For example, this allows writing down the types `some Collection<Int>` and
`any Collection<Int>`.

* References to `optional` methods on a protocol metatype, as well as references to dynamically looked up methods on the `AnyObject` metatype are now supported. These references always have the type of a function that accepts a single argument and returns an optional value of function type:
* References to `optional` methods on a protocol metatype, as well as references to dynamically looked up methods on `AnyObject` are now supported on par with other function references. The type of such a reference (formerly an immediate optional by mistake) has been altered to that of a function that takes a single argument and returns an optional value of function type:

```swift
class Object {
@objc func getTag() -> Int
@objc func getTag() -> Int { ... }
}

@objc protocol P {
let getTag: (AnyObject) -> (() -> Int)? = AnyObject.getTag

@objc protocol Delegate {
@objc optional func didUpdateObject(withTag tag: Int)
}

let getTag: (AnyObject) -> (() -> Int)? = AnyObject.getTag

let didUpdateObject: (any P) -> ((Int) -> Void)? = P.didUpdateObject
let didUpdateObjectWithTag: (Delegate) -> ((Int) -> Void)? = Delegate.didUpdateObject
```

> **Warning**
> Due to the type change, selectors for aforementioned method references that require writing out their type explicitly for disambiguation will no longer compile. To fix this, simply adjust the written type, or resort to a `#if swift(<5.7)` directive when compatibility with older compiler versions is warranted. For example:
>
> ```swift
> #if swift(<5.7)
> let decidePolicyForNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as ((WKNavigationDelegate) -> (WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> Void)?)
> #else
> let decidePolicyForNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as (WKNavigationDelegate) -> ((WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> Void)?)
> #endif
> ```

* [SE-0349][]:

Loading data from raw memory represented by `UnsafeRawPointer`,
Expand Down
207 changes: 114 additions & 93 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,95 @@ else()
any compiler host sources written in Swift")
endif()

# A convenience pattern to match Darwin platforms. Example:
# if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
# ...
# endif()
set(SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
set(SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")

# A convenient list to match Darwin SDKs. Example:
# if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
# ...
# endif()
set(SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX")

set(SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS})
if(SWIFT_FREESTANDING_FLAVOR STREQUAL "apple")
list(APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING")
if(SWIFT_FREESTANDING_IS_DARWIN)
list(APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING")
endif()
endif()

# If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
if(SWIFT_HOST_VARIANT_SDK)
set(SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
else()
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
set(SWIFT_HOST_VARIANT_SDK_default "LINUX")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
set(SWIFT_HOST_VARIANT_SDK_default "HAIKU")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
set(SWIFT_HOST_VARIANT_SDK_default "ANDROID")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
else()
message(FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME}")
endif()
endif()

# If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
if(SWIFT_HOST_VARIANT_ARCH)
set(SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
else()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
set(SWIFT_HOST_VARIANT_ARCH_default "x86_64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64")
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
set(SWIFT_HOST_VARIANT_ARCH_default "arm64")
else()
set(SWIFT_HOST_VARIANT_ARCH_default "aarch64")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
# FIXME: Only matches v6l/v7l - by far the most common variants
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7l|armv7-a")
set(SWIFT_HOST_VARIANT_ARCH_default "armv7")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
set(SWIFT_HOST_VARIANT_ARCH_default "itanium")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86|i686)")
set(SWIFT_HOST_VARIANT_ARCH_default "i686")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "wasm32")
set(SWIFT_HOST_VARIANT_ARCH_default "wasm32")
else()
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
endif()

set(SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default}" CACHE STRING
"Deployment sdk for Swift host tools (the compiler).")
set(SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default}" CACHE STRING
"Deployment arch for Swift host tools (the compiler).")

#
# User-configurable options that control the inclusion and default build
# behavior for components which may not strictly be necessary (tools, examples,
Expand Down Expand Up @@ -103,6 +192,16 @@ option(SWIFT_STDLIB_ENABLE_UNICODE_DATA
NOTE: Disabling this will cause many String methods to crash."
TRUE)

include(Threading)

threading_package_default("${SWIFT_HOST_VARIANT_SDK}"
SWIFT_THREADING_PACKAGE_default)

set(SWIFT_THREADING_PACKAGE "${SWIFT_THREADING_PACKAGE_default}"
CACHE STRING
"The threading package to use. Must be one of 'none', 'pthreads',
'darwin', 'linux', 'win32', 'c11'.")

option(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY
"Build dynamic variants of the Swift SDK overlay"
TRUE)
Expand Down Expand Up @@ -636,6 +735,7 @@ set(SWIFT_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
set(SWIFT_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin")
set(SWIFT_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib")
if("${SWIFT_NATIVE_SWIFT_TOOLS_PATH}" STREQUAL "")
# This is the normal case. We are not cross-compiling.
set(SWIFT_NATIVE_SWIFT_TOOLS_PATH "${SWIFT_RUNTIME_OUTPUT_INTDIR}")
set(SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER}")
elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
Expand All @@ -650,6 +750,12 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
else()
set(BOOTSTRAPPING_MODE "HOSTTOOLS")
endif()
elseif(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS")
# We are building using a pre-installed host toolchain but not bootstrapping
# the Swift modules. This happens when building using 'build-tooling-libs'
# where we haven't built a new Swift compiler. Use the Swift compiler from the
# pre-installed host toolchain to build the Swift modules.
set(SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER}")
endif()

if(BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS")
Expand All @@ -676,27 +782,6 @@ include_directories(BEFORE
${SWIFT_INCLUDE_DIR}
)

# A convenience pattern to match Darwin platforms. Example:
# if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
# ...
# endif()
set(SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
set(SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")

# A convenient list to match Darwin SDKs. Example:
# if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
# ...
# endif()
set(SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX")

set(SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS})
if(SWIFT_FREESTANDING_FLAVOR STREQUAL "apple")
list(APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING")
if(SWIFT_FREESTANDING_IS_DARWIN)
list(APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING")
endif()
endif()

# Configuration flags passed to all of our invocations of gyb. Try to
# avoid making up new variable names here if you can find a CMake
# variable that will do the job.
Expand All @@ -713,74 +798,6 @@ if(XCODE)
swift_common_xcode_cxx_config()
endif()

# If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
if(SWIFT_HOST_VARIANT_SDK)
set(SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
else()
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
set(SWIFT_HOST_VARIANT_SDK_default "LINUX")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
set(SWIFT_HOST_VARIANT_SDK_default "HAIKU")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
set(SWIFT_HOST_VARIANT_SDK_default "ANDROID")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
else()
message(FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME}")
endif()
endif()

# If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
if(SWIFT_HOST_VARIANT_ARCH)
set(SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
else()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
set(SWIFT_HOST_VARIANT_ARCH_default "x86_64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64")
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
set(SWIFT_HOST_VARIANT_ARCH_default "arm64")
else()
set(SWIFT_HOST_VARIANT_ARCH_default "aarch64")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
# FIXME: Only matches v6l/v7l - by far the most common variants
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7l|armv7-a")
set(SWIFT_HOST_VARIANT_ARCH_default "armv7")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
set(SWIFT_HOST_VARIANT_ARCH_default "itanium")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86|i686)")
set(SWIFT_HOST_VARIANT_ARCH_default "i686")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "wasm32")
set(SWIFT_HOST_VARIANT_ARCH_default "wasm32")
else()
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
endif()

set(SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default}" CACHE STRING
"Deployment sdk for Swift host tools (the compiler).")
set(SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default}" CACHE STRING
"Deployment arch for Swift host tools (the compiler).")

# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
# our own defaults. This should only be possible in a unified (not stand alone)
# build environment.
Expand Down Expand Up @@ -1042,11 +1059,12 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
message(STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER}")
message(STATUS "")

message(STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE}")
message(STATUS "Differentiable Programming Support: ${SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING}")
message(STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY}")
message(STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED}")
message(STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING}")
message(STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA}")
message(STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY}")
message(STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED}")
message(STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING}")
message(STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA}")
message(STATUS "")
else()
message(STATUS "Not building Swift standard library, SDK overlays, and runtime")
Expand Down Expand Up @@ -1120,6 +1138,9 @@ endif()
if(SWIFT_BUILD_STDLIB)
add_subdirectory(stdlib)
else()
# Some of the things below depend on the threading library
add_subdirectory(stdlib/public/Threading)

if(SWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT)
add_subdirectory(stdlib/toolchain)
endif()
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,14 @@ will be created in the directory you run the script with a filename
of the form: ``swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz``.

Beyond building the toolchain, ``build-toolchain`` also supports the
following (non-exhaustive) set of useful options::
following (non-exhaustive) set of useful options:

- ``--dry-run``: Perform a dry run build. This is off by default.
- ``--test``: Test the toolchain after it has been compiled. This is off by default.
- ``--distcc``: Use distcc to speed up the build by distributing the c++ part of
- ``--distcc``: Use distcc to speed up the build by distributing the C++ part of
the swift build. This is off by default.
- ``--sccache``: Use sccache to speed up subsequent builds of the compiler by
caching more c++ build artifacts. This is off by default.
caching more C++ build artifacts. This is off by default.

More options may be added over time. Please pass ``--help`` to
``build-toolchain`` to see the full set of options.
Expand Down
2 changes: 1 addition & 1 deletion SwiftCompilerSources/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ else()
message(FATAL_ERROR "The Swift compiler (${CMAKE_Swift_COMPILER}) differs from the Swift compiler in SWIFT_NATIVE_SWIFT_TOOLS_PATH (${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/swiftc).")
endif()

set(min_supported_swift_version 5.5)
set(min_supported_swift_version 5.8)
if(CMAKE_Swift_COMPILER_VERSION VERSION_LESS "${min_supported_swift_version}")
message(FATAL_ERROR
"Outdated Swift compiler: building with host tools requires Swift ${min_supported_swift_version} or newer. "
Expand Down
8 changes: 8 additions & 0 deletions SwiftCompilerSources/Sources/Basic/Utils.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
//===----------------------------------------------------------------------===//

@_exported import BasicBridging
import std

//===----------------------------------------------------------------------===//
// StringRef
Expand Down Expand Up @@ -60,6 +61,13 @@ extension String {
return c(BridgedStringRef(data: buffer.baseAddress, length: buffer.count))
}
}

/// Underscored to avoid name collision with the std overlay.
/// To be replaced with an overlay call once the CI uses SDKs built with Swift 5.8.
public init(_cxxString s: std.string) {
self.init(cString: s.c_str())
withExtendedLifetime(s) {}
}
}

extension Array {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ swift_compiler_sources(Optimizer
AssumeSingleThreaded.swift
ComputeEffects.swift
EscapeInfoDumper.swift
ObjCBridgingOptimization.swift
SILPrinter.swift
MergeCondFails.swift
RangeDumper.swift
Expand Down
Loading