Skip to content

Commit 948faf9

Browse files
[CMake] [Darwin] Don't build the SDK overlays by default on Apple platforms
The Apple SDKs have been providing the Darwin overlay since macOS 10.14.4, iOS 12.2, et al. More recently the SDK version has diverged from the Swift version making them incompatible. Stop building the overlay from Swift. Once the SDK overlays aren't being built, the clang overlays need to be built in testing. rdar://115192929 This reverts commit c6f81cb, reversing changes made to adf3bde.
1 parent c6f81cb commit 948faf9

17 files changed

+55
-25
lines changed

CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,17 @@ option(SWIFT_BUILD_CLANG_OVERLAYS
244244
"Build Swift overlays for the clang builtin modules"
245245
TRUE)
246246

247+
# The SDK overlay is provided by the SDK itself on Darwin platforms.
248+
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
249+
set(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default FALSE)
250+
else()
251+
set(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default TRUE)
252+
endif()
253+
247254
option(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY
248255
"Build dynamic variants of the Swift SDK overlay"
249-
TRUE)
250-
256+
"${SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default}")
257+
251258
option(SWIFT_BUILD_STATIC_SDK_OVERLAY
252259
"Build static variants of the Swift SDK overlay"
253260
FALSE)

benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ function(swift_benchmark_compile)
716716

717717
if(NOT SWIFT_BENCHMARK_BUILT_STANDALONE)
718718
set(stdlib_dependencies "swift-frontend" "swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
719-
if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS)
719+
if((SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) AND SWIFT_BUILD_SDK_OVERLAY)
720720
list(APPEND stdlib_dependencies "swiftDarwin-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
721721
endif()
722722
foreach(stdlib_dependency ${UNIVERSAL_LIBRARY_NAMES_${SWIFT_BENCHMARK_COMPILE_PLATFORM}})

cmake/modules/DarwinSDKs.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ if(swift_build_freestanding AND (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple"))
3838
configure_target_variant(FREESTANDING-R "FREESTANDING Release" FREESTANDING R "Release")
3939
configure_target_variant(FREESTANDING-S "FREESTANDING MinSizeRelease" FREESTANDING S "MinSizeRelease")
4040

41-
set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "Darwin")
41+
if(SWIFT_BUILD_SDK_OVERLAY)
42+
set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "Darwin")
43+
else()
44+
set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "")
45+
endif()
4246
endif()
4347

4448
# Compatible cross-compile SDKS for Darwin OSes: IOS, IOS_SIMULATOR, TVOS,

stdlib/private/CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
if(SWIFT_BUILD_SDK_OVERLAY)
1+
if(SWIFT_BUILD_SDK_OVERLAY OR (SWIFT_BUILD_TEST_SUPPORT_MODULES AND NOT SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default))
22
# SwiftPrivateThreadExtras makes use of Darwin/Glibc, which is part of the
3-
# SDK overlay. It can't be built separately from the SDK overlay.
3+
# SDK overlay. If the SDK overlay doesn't build by default, then it should
4+
# be available in the SDK and DifferentiationUnittest can still be built.
45
if(SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING)
56
add_subdirectory(DifferentiationUnittest)
67
endif()
@@ -20,7 +21,7 @@ if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES)
2021
add_subdirectory(StdlibUnittest)
2122
endif()
2223

23-
if(SWIFT_BUILD_SDK_OVERLAY)
24+
if(SWIFT_BUILD_SDK_OVERLAY OR (SWIFT_BUILD_TEST_SUPPORT_MODULES AND NOT SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default))
2425
add_subdirectory(OSLog)
2526

2627
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")

stdlib/public/CMakeLists.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ if(SWIFT_BUILD_STDLIB)
266266
add_subdirectory(core)
267267
add_subdirectory(SwiftOnoneSupport)
268268

269-
if(SWIFT_BUILD_CLANG_OVERLAYS)
269+
if(SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES)
270270
add_subdirectory(ClangOverlays)
271271
endif()
272272

@@ -315,13 +315,12 @@ if(SWIFT_BUILD_REMOTE_MIRROR)
315315
add_subdirectory(SwiftRemoteMirror)
316316
endif()
317317

318-
if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES)
318+
if(SWIFT_BUILD_SDK_OVERLAY OR (SWIFT_BUILD_TEST_SUPPORT_MODULES AND SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default))
319319
add_subdirectory(Platform)
320320
endif()
321321

322322
if(SWIFT_BUILD_SDK_OVERLAY)
323-
# On Apple platforms, we aren't building any overlays (other than Darwin in
324-
# Platform above). Instead, we're picking them up from the SDK.
323+
# On Apple platforms, we aren't building any overlays. Instead, we're picking them up from the SDK.
325324

326325
if(WINDOWS IN_LIST SWIFT_SDKS)
327326
add_subdirectory(Windows)

test/Driver/loaded_module_trace_foundation.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
// CHECK: "arch":"{{[^"]*}}"
1010
// CHECK: "swiftmodules":[
1111

12-
// Darwin, Swift and SwiftOnoneSupport is expected to be locally built;
12+
// Swift and SwiftOnoneSupport is expected to be locally built;
1313
// everything else comes from the SDK, built from swiftinterface.
1414

1515
// CHECK-DAG: "{{[^"]*}}/ObjectiveC.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1616
// CHECK-DAG: "{{[^"]*}}/Dispatch.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
17-
// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"
17+
// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1818
// CHECK-DAG: "{{[^"]*}}/Foundation.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1919
// CHECK-DAG: "{{[^"]*}}/Swift.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"
2020
// CHECK-DAG: "{{[^"]*}}/SwiftOnoneSupport.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"

test/Driver/loaded_module_trace_header.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// CHECK: "swiftmodules":[
1212
// CHECK-DAG: "{{[^"]*}}/ObjectiveC.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1313
// CHECK-DAG: "{{[^"]*}}/Dispatch.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
14-
// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"
14+
// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1515
// CHECK-DAG: "{{[^"]*}}/Foundation.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}"
1616
// CHECK-DAG: "{{[^"]*}}/Swift.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"
1717
// CHECK-DAG: "{{[^"]*}}/SwiftOnoneSupport.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}"

test/SIL/Serialization/deserialize_darwin.sil

Lines changed: 0 additions & 7 deletions
This file was deleted.

test/embedded/concurrency-actors.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
// REQUIRES: optimized_stdlib
1010
// REQUIRES: OS=macosx
1111

12+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
13+
// embedded Swift mode.
14+
// XFAIL: OS=macosx
15+
1216
import _Concurrency
1317

1418
actor Number {

test/embedded/concurrency-async-let.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
// REQUIRES: optimized_stdlib
1010
// REQUIRES: OS=macosx
1111

12+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
13+
// embedded Swift mode.
14+
// XFAIL: OS=macosx
15+
1216
import _Concurrency
1317

1418
func fib(_ n: Int) -> Int {

test/embedded/concurrency-simple.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
// REQUIRES: optimized_stdlib
1010
// REQUIRES: OS=macosx
1111

12+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
13+
// embedded Swift mode.
14+
// XFAIL: OS=macosx
15+
1216
import _Concurrency
1317

1418
public func test() async -> Int {

test/embedded/darwin-bridging-header.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
// REQUIRES: VENDOR=apple
1212
// REQUIRES: OS=macosx
1313

14+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
15+
// embedded Swift mode.
16+
// XFAIL: OS=macosx
17+
1418
// BEGIN BridgingHeader.h
1519

1620
#include <unistd.h>

test/embedded/darwin.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
// REQUIRES: VENDOR=apple
1010
// REQUIRES: OS=macosx
1111

12+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
13+
// embedded Swift mode.
14+
// XFAIL: OS=macosx
15+
1216
import Darwin
1317

1418
@main

test/embedded/dependencies-concurrency.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
// REQUIRES: optimized_stdlib
4848
// REQUIRES: OS=macosx
4949

50+
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
51+
// embedded Swift mode.
52+
// XFAIL: OS=macosx
53+
5054
import _Concurrency
5155

5256
public func test() async -> Int {

test/lit.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,8 +1533,8 @@ if run_vendor == 'apple':
15331533
'%s -modulewrap -target %s' %
15341534
(config.swiftc, config.variant_triple))
15351535
config.target_swift_emit_pcm = (
1536-
'%s -emit-pcm -target %s' %
1537-
(config.swiftc, config.variant_triple))
1536+
'%s -emit-pcm -target %s -sdk %r' %
1537+
(config.swiftc, config.variant_triple, config.variant_sdk))
15381538
subst_target_swift_frontend_mock_sdk_after = \
15391539
target_options_for_mock_sdk_after
15401540
config.target_sil_opt = (

utils/build_swift/build_swift/driver_arguments.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import multiprocessing
1010
import os
11+
import platform
1112

1213
import android.adb.commands
1314

@@ -1140,7 +1141,7 @@ def create_argument_parser():
11401141
help='build static variants of the Swift standard library')
11411142

11421143
option('--build-swift-dynamic-sdk-overlay', toggle_true,
1143-
default=True,
1144+
default=platform.system() != "Darwin",
11441145
help='build dynamic variants of the Swift SDK overlay')
11451146

11461147
option('--build-swift-static-sdk-overlay', toggle_true,

utils/build_swift/tests/expected_options.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99

1010
import multiprocessing
11+
import platform
1112

1213
from build_swift import argparse
1314
from build_swift import defaults
@@ -79,7 +80,7 @@
7980
'build_runtime_with_host_compiler': False,
8081
'build_stdlib_deployment_targets': ['all'],
8182
'build_subdir': None,
82-
'build_swift_dynamic_sdk_overlay': True,
83+
'build_swift_dynamic_sdk_overlay': platform.system() != "Darwin",
8384
'build_swift_dynamic_stdlib': True,
8485
'build_swift_inspect': False,
8586
'build_swift_private_stdlib': True,

0 commit comments

Comments
 (0)