diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ae6f27330bf6..b69c79736e003 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -247,9 +247,16 @@ option(SWIFT_BUILD_CLANG_OVERLAYS "Build Swift overlays for the clang builtin modules" TRUE) +# The SDK overlay is provided by the SDK itself on Darwin platforms. +if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) + set(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default FALSE) +else() + set(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default TRUE) +endif() + option(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY "Build dynamic variants of the Swift SDK overlay" - TRUE) + "${SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default}") option(SWIFT_BUILD_STATIC_SDK_OVERLAY "Build static variants of the Swift SDK overlay" diff --git a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake index b96723f16ba45..25c04a5948317 100644 --- a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake +++ b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake @@ -714,7 +714,7 @@ function(swift_benchmark_compile) if(NOT SWIFT_BENCHMARK_BUILT_STANDALONE) set(stdlib_dependencies "swift-frontend" "swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") - if(SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) + if((SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) AND SWIFT_BUILD_SDK_OVERLAY) list(APPEND stdlib_dependencies "swiftDarwin-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}") endif() foreach(stdlib_dependency ${UNIVERSAL_LIBRARY_NAMES_${SWIFT_BENCHMARK_COMPILE_PLATFORM}}) diff --git a/cmake/modules/DarwinSDKs.cmake b/cmake/modules/DarwinSDKs.cmake index 558771b1516db..32e1e4bface9f 100644 --- a/cmake/modules/DarwinSDKs.cmake +++ b/cmake/modules/DarwinSDKs.cmake @@ -48,7 +48,11 @@ if(swift_build_freestanding AND (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple")) configure_target_variant(FREESTANDING-R "FREESTANDING Release" FREESTANDING R "Release") configure_target_variant(FREESTANDING-S "FREESTANDING MinSizeRelease" FREESTANDING S "MinSizeRelease") - set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "Darwin") + if(SWIFT_BUILD_SDK_OVERLAY) + set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "Darwin") + else() + set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "") + endif() endif() # Compatible cross-compile SDKS for Darwin OSes: IOS, IOS_SIMULATOR, TVOS, diff --git a/stdlib/private/CMakeLists.txt b/stdlib/private/CMakeLists.txt index 05ef455b755c1..5bb77689950b5 100644 --- a/stdlib/private/CMakeLists.txt +++ b/stdlib/private/CMakeLists.txt @@ -1,12 +1,16 @@ -if(SWIFT_BUILD_SDK_OVERLAY) +if(SWIFT_BUILD_SDK_OVERLAY + OR (SWIFT_BUILD_TEST_SUPPORT_MODULES + AND NOT SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default + AND (SWIFT_ENABLE_REFLECTION + OR NOT SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS))) # SwiftPrivateThreadExtras makes use of Darwin/Glibc, which is part of the - # SDK overlay. It can't be built separately from the SDK overlay. + # SDK overlay. If the SDK overlay doesn't build by default, then it should + # be available in the SDK and DifferentiationUnittest can still be built. + # However, the overlay in the Apple SDKs requires the standard library to + # have reflection enabled. if(SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING) add_subdirectory(DifferentiationUnittest) endif() -endif() - -if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES) add_subdirectory(SwiftPrivate) add_subdirectory(RuntimeUnittest) add_subdirectory(StdlibUnicodeUnittest) @@ -18,9 +22,7 @@ if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES) # SwiftPrivateThreadExtras to ensure that the dependency targets are setup in # the correct order for Windows. add_subdirectory(StdlibUnittest) -endif() -if(SWIFT_BUILD_SDK_OVERLAY) add_subdirectory(OSLog) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") diff --git a/stdlib/public/CMakeLists.txt b/stdlib/public/CMakeLists.txt index 2883fd057c14c..eff3c646ce5d3 100644 --- a/stdlib/public/CMakeLists.txt +++ b/stdlib/public/CMakeLists.txt @@ -242,7 +242,7 @@ if(SWIFT_BUILD_STDLIB) add_subdirectory(core) add_subdirectory(SwiftOnoneSupport) - if(SWIFT_BUILD_CLANG_OVERLAYS) + if(SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) add_subdirectory(ClangOverlays) endif() endif() @@ -287,13 +287,12 @@ if(SWIFT_BUILD_REMOTE_MIRROR) add_subdirectory(SwiftRemoteMirror) endif() -if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES) +if(SWIFT_BUILD_SDK_OVERLAY OR (SWIFT_BUILD_TEST_SUPPORT_MODULES AND SWIFT_BUILD_DYNAMIC_SDK_OVERLAY_default)) add_subdirectory(Platform) endif() if(SWIFT_BUILD_SDK_OVERLAY) - # On Apple platforms, we aren't building any overlays (other than Darwin in - # Platform above). Instead, we're picking them up from the SDK. + # On Apple platforms, we aren't building any overlays. Instead, we're picking them up from the SDK. if(WINDOWS IN_LIST SWIFT_SDKS) add_subdirectory(Windows) diff --git a/test/Driver/loaded_module_trace_foundation.swift b/test/Driver/loaded_module_trace_foundation.swift index a2f3de1da5f51..3a66f173361a5 100644 --- a/test/Driver/loaded_module_trace_foundation.swift +++ b/test/Driver/loaded_module_trace_foundation.swift @@ -9,12 +9,12 @@ // CHECK: "arch":"{{[^"]*}}" // CHECK: "swiftmodules":[ -// Darwin, Swift and SwiftOnoneSupport is expected to be locally built; +// Swift and SwiftOnoneSupport is expected to be locally built; // everything else comes from the SDK, built from swiftinterface. // CHECK-DAG: "{{[^"]*}}/ObjectiveC.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Dispatch.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" -// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" +// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Foundation.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Swift.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" // CHECK-DAG: "{{[^"]*}}/SwiftOnoneSupport.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" diff --git a/test/Driver/loaded_module_trace_header.swift b/test/Driver/loaded_module_trace_header.swift index 8ce2e3c9219b8..14181b134d7f9 100644 --- a/test/Driver/loaded_module_trace_header.swift +++ b/test/Driver/loaded_module_trace_header.swift @@ -11,7 +11,7 @@ // CHECK: "swiftmodules":[ // CHECK-DAG: "{{[^"]*}}/ObjectiveC.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Dispatch.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" -// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" +// CHECK-DAG: "{{[^"]*}}/Darwin.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Foundation.swiftmodule{{(\\/[^"]+[.]swift(module|interface))?}}" // CHECK-DAG: "{{[^"]*}}/Swift.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" // CHECK-DAG: "{{[^"]*}}/SwiftOnoneSupport.swiftmodule{{(\\/[^"]+[.]swiftmodule)?}}" diff --git a/test/SIL/Serialization/deserialize_darwin.sil b/test/SIL/Serialization/deserialize_darwin.sil deleted file mode 100644 index cb3429291d5a1..0000000000000 --- a/test/SIL/Serialization/deserialize_darwin.sil +++ /dev/null @@ -1,7 +0,0 @@ -// Make sure that we can deserialize darwin. -// RUN: %target-sil-opt %platform-sdk-overlay-dir/Darwin.swiftmodule/%target-swiftmodule-name -module-name Darwin > /dev/null -// RUN: llvm-bcanalyzer %platform-sdk-overlay-dir/Darwin.swiftmodule/%target-swiftmodule-name | %FileCheck %s - -// REQUIRES: objc_interop - -// CHECK-NOT: Unknown diff --git a/test/embedded/concurrency-actors.swift b/test/embedded/concurrency-actors.swift index 15486a7d14371..0076b54335ccf 100644 --- a/test/embedded/concurrency-actors.swift +++ b/test/embedded/concurrency-actors.swift @@ -9,6 +9,10 @@ // REQUIRES: optimized_stdlib // REQUIRES: OS=macosx +// The Darwin SDK overlay module in the macOS SDK cannot be imported in +// embedded Swift mode. +// XFAIL: OS=macosx + import _Concurrency actor Number { diff --git a/test/embedded/concurrency-async-let.swift b/test/embedded/concurrency-async-let.swift index 4b8e0ea20f642..ec616c934cfb0 100644 --- a/test/embedded/concurrency-async-let.swift +++ b/test/embedded/concurrency-async-let.swift @@ -9,6 +9,10 @@ // REQUIRES: optimized_stdlib // REQUIRES: OS=macosx +// The Darwin SDK overlay module in the macOS SDK cannot be imported in +// embedded Swift mode. +// XFAIL: OS=macosx + import _Concurrency func fib(_ n: Int) -> Int { diff --git a/test/embedded/concurrency-simple.swift b/test/embedded/concurrency-simple.swift index 004cf4aa8f76f..3b42b59290ca7 100644 --- a/test/embedded/concurrency-simple.swift +++ b/test/embedded/concurrency-simple.swift @@ -9,6 +9,10 @@ // REQUIRES: optimized_stdlib // REQUIRES: OS=macosx +// The Darwin SDK overlay module in the macOS SDK cannot be imported in +// embedded Swift mode. +// XFAIL: OS=macosx + import _Concurrency public func test() async -> Int { diff --git a/test/embedded/darwin-bridging-header.swift b/test/embedded/darwin-bridging-header.swift index e919e8ee0a158..d9fb85e5c450f 100644 --- a/test/embedded/darwin-bridging-header.swift +++ b/test/embedded/darwin-bridging-header.swift @@ -11,6 +11,10 @@ // REQUIRES: VENDOR=apple // REQUIRES: OS=macosx +// The Darwin SDK overlay module in the macOS SDK cannot be imported in +// embedded Swift mode. +// XFAIL: OS=macosx + // BEGIN BridgingHeader.h #include diff --git a/test/embedded/darwin.swift b/test/embedded/darwin.swift index e15cf66d88afb..e90513ea284d7 100644 --- a/test/embedded/darwin.swift +++ b/test/embedded/darwin.swift @@ -9,6 +9,10 @@ // REQUIRES: VENDOR=apple // REQUIRES: OS=macosx +// The Darwin SDK overlay module in the macOS SDK cannot be imported in +// embedded Swift mode. +// XFAIL: OS=macosx + import Darwin @main diff --git a/test/lit.cfg b/test/lit.cfg index c327efdb9f7bd..16d5c01a8da12 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -1498,8 +1498,8 @@ if run_vendor == 'apple': '%s -modulewrap -target %s' % (config.swiftc, config.variant_triple)) config.target_swift_emit_pcm = ( - '%s -emit-pcm -target %s' % - (config.swiftc, config.variant_triple)) + '%s -emit-pcm -target %s -sdk %r' % + (config.swiftc, config.variant_triple, config.variant_sdk)) subst_target_swift_frontend_mock_sdk_after = \ target_options_for_mock_sdk_after config.target_sil_opt = ( diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index cd9480cc7b3a3..4345cb43d6d03 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -8,6 +8,7 @@ import multiprocessing import os +import platform import android.adb.commands @@ -1145,7 +1146,7 @@ def create_argument_parser(): help='build static variants of the Swift standard library') option('--build-swift-dynamic-sdk-overlay', toggle_true, - default=True, + default=platform.system() != "Darwin", help='build dynamic variants of the Swift SDK overlay') option('--build-swift-static-sdk-overlay', toggle_true, diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index 5d1a6a6898aac..72687e27fd257 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -8,6 +8,7 @@ import multiprocessing +import platform from build_swift import argparse from build_swift import defaults @@ -80,7 +81,7 @@ 'build_runtime_with_host_compiler': False, 'build_stdlib_deployment_targets': ['all'], 'build_subdir': None, - 'build_swift_dynamic_sdk_overlay': True, + 'build_swift_dynamic_sdk_overlay': platform.system() != "Darwin", 'build_swift_dynamic_stdlib': True, 'build_swift_inspect': False, 'build_swift_external_generic_metadata_builder': True,