From 15345ef2d516777f3d62ad7fdb437cd268305ab3 Mon Sep 17 00:00:00 2001 From: Ian Anderson Date: Thu, 22 May 2025 17:15:28 -0700 Subject: [PATCH] [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 --- .../modules/AddSwiftBenchmarkSuite.cmake | 3 - cmake/modules/DarwinSDKs.cmake | 6 +- stdlib/private/OSLog/CMakeLists.txt | 9 +- stdlib/private/StdlibUnittest/CMakeLists.txt | 10 +- stdlib/private/SwiftPrivate/CMakeLists.txt | 10 +- .../SwiftPrivateLibcExtras/CMakeLists.txt | 10 +- .../SwiftPrivateThreadExtras/CMakeLists.txt | 10 +- .../SwiftReflectionTest/CMakeLists.txt | 10 +- stdlib/public/Cxx/std/CMakeLists.txt | 15 -- stdlib/public/Differentiation/CMakeLists.txt | 11 - stdlib/public/Distributed/CMakeLists.txt | 10 +- stdlib/public/Platform/CMakeLists.txt | 119 -------- stdlib/public/Platform/Darwin.swift.gyb | 81 ------ stdlib/public/Platform/MachError.swift | 205 -------------- stdlib/public/Platform/POSIXError.swift | 255 +----------------- stdlib/public/Platform/Platform.swift | 121 +-------- stdlib/public/Platform/README.md | 11 +- stdlib/public/Platform/TiocConstants.swift | 43 +-- stdlib/public/Platform/tgmath.swift.gyb | 30 +-- stdlib/public/Synchronization/CMakeLists.txt | 10 +- .../libexec/swift-backtrace/CMakeLists.txt | 7 +- 21 files changed, 38 insertions(+), 948 deletions(-) delete mode 100644 stdlib/public/Platform/Darwin.swift.gyb delete mode 100644 stdlib/public/Platform/MachError.swift diff --git a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake index 7c5387bb5ccd6..2a542c9cd2291 100644 --- a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake +++ b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake @@ -716,9 +716,6 @@ 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) 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}}) string(FIND "${stdlib_dependency}" "Unittest" find_output) if("${find_output}" STREQUAL "-1") diff --git a/cmake/modules/DarwinSDKs.cmake b/cmake/modules/DarwinSDKs.cmake index 20d555b74751c..1605687f6d9c2 100644 --- a/cmake/modules/DarwinSDKs.cmake +++ b/cmake/modules/DarwinSDKs.cmake @@ -38,11 +38,7 @@ 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") - if(SWIFT_BUILD_SDK_OVERLAY) - set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "Darwin") - else() - set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "") - endif() + set(SWIFT_FREESTANDING_TEST_DEPENDENCIES "") endif() # Compatible cross-compile SDKS for Darwin OSes: IOS, IOS_SIMULATOR, TVOS, diff --git a/stdlib/private/OSLog/CMakeLists.txt b/stdlib/private/OSLog/CMakeLists.txt index 21cab695c781d..4941b39c89598 100644 --- a/stdlib/private/OSLog/CMakeLists.txt +++ b/stdlib/private/OSLog/CMakeLists.txt @@ -1,7 +1,4 @@ set(swift_oslog_darwin_dependencies "") -if(SWIFT_BUILD_SDK_OVERLAY) - list(APPEND swift_oslog_darwin_dependencies "Darwin") -endif() if (SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY) list(APPEND swift_oslog_darwin_dependencies "_Concurrency") endif() @@ -12,10 +9,8 @@ if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_oslog_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/private/StdlibUnittest/CMakeLists.txt b/stdlib/private/StdlibUnittest/CMakeLists.txt index a54fc7b006777..a8dc3ad1820e8 100644 --- a/stdlib/private/StdlibUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibUnittest/CMakeLists.txt @@ -1,17 +1,11 @@ -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_stdlib_unittest_darwin_dependencies Darwin) -else() set(swift_stdlib_unittest_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_stdlib_unittest_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/private/SwiftPrivate/CMakeLists.txt b/stdlib/private/SwiftPrivate/CMakeLists.txt index 585a0b36c86de..3d6b75d2cbd6f 100644 --- a/stdlib/private/SwiftPrivate/CMakeLists.txt +++ b/stdlib/private/SwiftPrivate/CMakeLists.txt @@ -2,20 +2,14 @@ set(swift_swiftprivate_compile_flags "-parse-stdlib" "-Xfrontend" "-disable-access-control") -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_swiftprivate_darwin_dependencies Darwin) -else() set(swift_swiftprivate_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_swiftprivate_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt index 22adfe2cb6af2..dd7f9c148453a 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt @@ -14,20 +14,14 @@ else() set(swift_private_libc_extras_incorporate_object_libraries "swiftCommandLineSupport") endif() -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_private_libc_extras_darwin_dependencies Darwin) -else() set(swift_private_libc_extras_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_private_libc_extras_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt index 5d005a783d595..d74a3fb627f71 100644 --- a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt @@ -1,17 +1,11 @@ -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_private_thread_extras_darwin_dependencies Darwin) -else() set(swift_private_thread_extras_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_private_thread_extras_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/private/SwiftReflectionTest/CMakeLists.txt b/stdlib/private/SwiftReflectionTest/CMakeLists.txt index d9474ac61bd44..8cbe7c8a6ee6d 100644 --- a/stdlib/private/SwiftReflectionTest/CMakeLists.txt +++ b/stdlib/private/SwiftReflectionTest/CMakeLists.txt @@ -1,17 +1,11 @@ -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_reflection_test_darwin_dependencies Darwin) -else() set(swift_reflection_test_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_reflection_test_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/public/Cxx/std/CMakeLists.txt b/stdlib/public/Cxx/std/CMakeLists.txt index c8a4b2e1def2b..010dad07b3ba9 100644 --- a/stdlib/public/Cxx/std/CMakeLists.txt +++ b/stdlib/public/Cxx/std/CMakeLists.txt @@ -19,15 +19,6 @@ add_dependencies(sdk-overlay CxxStdlib-apinotes) add_dependencies(compiler CxxStdlib-apinotes) -# Swift compiler currently assumes that the Darwin overlay is a dependency of -# CxxStdlib, and fails to build CxxStdlib if Darwin.swiftmodule in build dir -# is built with a different (older) version of the compiler. To workaround this, -# declare the Darwin overlay as a dependency of CxxStdlib. -set(swift_cxxstdlib_darwin_dependencies) -if(SWIFT_BUILD_STDLIB AND SWIFT_BUILD_SDK_OVERLAY) - set(swift_cxxstdlib_darwin_dependencies Darwin) -endif() - set(swift_cxxstdlib_dependencies) if(NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT) set(swift_cxxstdlib_dependencies _Builtin_float) @@ -44,12 +35,6 @@ add_swift_target_library(swiftCxxStdlib STATIC NO_LINK_NAME IS_STDLIB IS_SWIFT_O String.swift SWIFT_MODULE_DEPENDS Cxx ${swift_cxxstdlib_dependencies} - SWIFT_MODULE_DEPENDS_IOS ${swift_cxxstdlib_darwin_dependencies} - SWIFT_MODULE_DEPENDS_OSX ${swift_cxxstdlib_darwin_dependencies} - SWIFT_MODULE_DEPENDS_TVOS ${swift_cxxstdlib_darwin_dependencies} - SWIFT_MODULE_DEPENDS_WATCHOS ${swift_cxxstdlib_darwin_dependencies} - SWIFT_MODULE_DEPENDS_XROS ${swift_cxxstdlib_darwin_dependencies} - SWIFT_MODULE_DEPENDS_MACCATALYST ${swift_cxxstdlib_darwin_dependencies} SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_COMPILE_FLAGS ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} diff --git a/stdlib/public/Differentiation/CMakeLists.txt b/stdlib/public/Differentiation/CMakeLists.txt index 16a296bbbe772..f7149eacb0a8e 100644 --- a/stdlib/public/Differentiation/CMakeLists.txt +++ b/stdlib/public/Differentiation/CMakeLists.txt @@ -16,12 +16,6 @@ else() set(swiftDifferentiationSIMDFiles) endif() -if(SWIFT_BUILD_SDK_OVERLAY) -set(swiftDifferentiationDarwinDependencies Darwin) -else() -set(swiftDifferentiationDarwinDependencies) -endif() - add_swift_target_library(swift_Differentiation ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB Differentiable.swift DifferentialOperators.swift @@ -37,11 +31,6 @@ add_swift_target_library(swift_Differentiation ${SWIFT_STDLIB_LIBRARY_BUILD_TYPE TgmathDerivatives.swift.gyb ${swiftDifferentiationSIMDFiles} - SWIFT_MODULE_DEPENDS_OSX ${swiftDifferentiationDarwinDependencies} - SWIFT_MODULE_DEPENDS_IOS ${swiftDifferentiationDarwinDependencies} - SWIFT_MODULE_DEPENDS_TVOS ${swiftDifferentiationDarwinDependencies} - SWIFT_MODULE_DEPENDS_WATCHOS ${swiftDifferentiationDarwinDependencies} - SWIFT_MODULE_DEPENDS_XROS ${swiftDifferentiationDarwinDependencies} SWIFT_MODULE_DEPENDS_ANDROID Android SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_LINUX_STATIC Musl diff --git a/stdlib/public/Distributed/CMakeLists.txt b/stdlib/public/Distributed/CMakeLists.txt index aec0c14f7c2b3..2e4970c3e4e7a 100644 --- a/stdlib/public/Distributed/CMakeLists.txt +++ b/stdlib/public/Distributed/CMakeLists.txt @@ -10,20 +10,14 @@ # #===----------------------------------------------------------------------===# -if(SWIFT_BUILD_SDK_OVERLAY) -set(swift_distributed_darwin_dependencies Darwin) -else() set(swift_distributed_darwin_dependencies) -endif() if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND swift_distributed_darwin_dependencies _Builtin_float) endif() diff --git a/stdlib/public/Platform/CMakeLists.txt b/stdlib/public/Platform/CMakeLists.txt index 9ae7a977ac400..0faab2f191a53 100644 --- a/stdlib/public/Platform/CMakeLists.txt +++ b/stdlib/public/Platform/CMakeLists.txt @@ -4,130 +4,11 @@ set(swift_platform_sources set(swift_platform_gyb_sources tgmath.swift.gyb) -set(darwin_depends) -if(NOT BUILD_STANDALONE) - # This is overly conservative, but we have so few API notes files that - # haven't migrated to the Swift repo that it's probably fine in practice. - list(APPEND darwin_depends copy_apinotes) -endif() - set(swift_platform_compile_flags) if(SWIFT_ENABLE_REFLECTION) list(APPEND swift_platform_compile_flags "-DSWIFT_ENABLE_REFLECTION") endif() -set(swiftDarwin_target_sdks ALL_APPLE_PLATFORMS) -if(SWIFT_FREESTANDING_FLAVOR STREQUAL "apple" AND NOT SWIFT_FREESTANDING_IS_DARWIN) - set(swiftDarwin_target_sdks ALL_APPLE_PLATFORMS FREESTANDING) -endif() - -set(swiftDarwin_common_options - IS_SDK_OVERLAY - ${swift_platform_sources} - POSIXError.swift - MachError.swift - - "${SWIFT_SOURCE_DIR}/stdlib/linker-support/magic-symbols-for-install-name.c" - - GYB_SOURCES - ${swift_platform_gyb_sources} - Darwin.swift.gyb - - SWIFT_COMPILE_FLAGS - ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} - ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} - -Xfrontend -disable-objc-attr-requires-foundation-module - ${swift_platform_compile_flags} - LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" - DEPENDS ${darwin_depends}) - - -if(BOOTSTRAPPING_MODE STREQUAL "BOOTSTRAPPING" AND - SWIFT_HOST_VARIANT_SDK IN_LIST SWIFT_DARWIN_PLATFORMS) - - set(swiftDarwin_common_bootstrapping_options - ${swiftDarwin_common_options} - SHARED - IS_STDLIB - SDK ${SWIFT_HOST_VARIANT_SDK} - ARCHITECTURE ${SWIFT_HOST_VARIANT_ARCH} - INSTALL_IN_COMPONENT "never_install") - - set(b0_deps swiftCore-bootstrapping0) - set(b1_deps swiftCore-bootstrapping1) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(b0_deps ${b0_deps} swiftSwiftOnoneSupport-bootstrapping0) - set(b1_deps ${b1_deps} swiftSwiftOnoneSupport-bootstrapping1) - endif() - - add_swift_target_library_single(swiftDarwin-bootstrapping0 swiftDarwin - ${swiftDarwin_common_bootstrapping_options} - FILE_DEPENDS ${b0_deps} - BOOTSTRAPPING 0) - - add_swift_target_library_single(swiftDarwin-bootstrapping1 swiftDarwin - ${swiftDarwin_common_bootstrapping_options} - FILE_DEPENDS ${b1_deps} - BOOTSTRAPPING 1) -endif() - -add_swift_target_library(swiftDarwin ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} - ${swiftDarwin_common_options} - TARGET_SDKS "${swiftDarwin_target_sdks}" - INSTALL_IN_COMPONENT sdk-overlay - MACCATALYST_BUILD_FLAVOR "zippered" - INSTALL_BINARY_SWIFTMODULE FALSE) - -if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB) - set(SWIFT_ENABLE_REFLECTION OFF) - - add_custom_target(embedded-darwin) - add_dependencies(embedded-libraries embedded-darwin) - foreach(entry ${EMBEDDED_STDLIB_TARGET_TRIPLES}) - string(REGEX REPLACE "[ \t]+" ";" list "${entry}") - list(GET list 0 arch) - list(GET list 1 mod) - list(GET list 2 triple) - - if(NOT "${mod}" MATCHES "-macos$") - continue() - endif() - - set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}") - set(SWIFT_SDK_embedded_LIB_SUBDIR "embedded") - set(SWIFT_SDK_embedded_ARCH_${arch}_TRIPLE "${triple}") - set(SWIFT_SDK_embedded_PATH ${SWIFT_SDK_OSX_PATH}) - set(SWIFT_SDK_embedded_ARCH_${arch}_PATH ${SWIFT_SDK_OSX_PATH}) - set(SWIFT_SDK_embedded_USE_ISYSROOT TRUE) - add_swift_target_library_single( - embedded-darwin-${mod} - swiftDarwin - ONLY_SWIFTMODULE - IS_SDK_OVERLAY IS_FRAGILE - - Platform.swift - TiocConstants.swift - POSIXError.swift - MachError.swift - - GYB_SOURCES - tgmath.swift.gyb - Darwin.swift.gyb - - SWIFT_COMPILE_FLAGS - -Xcc -ffreestanding -enable-experimental-feature Embedded - C_COMPILE_FLAGS - -ffreestanding - MODULE_DIR "${CMAKE_BINARY_DIR}/lib/swift/embedded" - SDK "embedded" - ARCHITECTURE "${arch}" - DEPENDS embedded-stdlib-${mod} - INSTALL_IN_COMPONENT stdlib - ) - add_dependencies(embedded-darwin embedded-darwin-${mod}) - endforeach() -endif() - set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU) if(SWIFT_FREESTANDING_FLAVOR STREQUAL "linux") set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU FREESTANDING) diff --git a/stdlib/public/Platform/Darwin.swift.gyb b/stdlib/public/Platform/Darwin.swift.gyb deleted file mode 100644 index f0153220ff968..0000000000000 --- a/stdlib/public/Platform/Darwin.swift.gyb +++ /dev/null @@ -1,81 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors -// Licensed under Apache License v2.0 with Runtime Library Exception -// -// See https://swift.org/LICENSE.txt for license information -// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors -// -//===----------------------------------------------------------------------===// - -@_exported import Darwin // Clang module - -public let MAP_FAILED: UnsafeMutableRawPointer! = UnsafeMutableRawPointer(bitPattern: -1) - -// Constants defined by -@available(swift, deprecated: 3.0, message: "Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.") -public let M_PI = Double.pi - -@available(swift, deprecated: 3.0, message: "Please use 'Double.pi / 2' or '.pi / 2' to get the value of correct type and avoid casting.") -public let M_PI_2 = Double.pi / 2 - -@available(swift, deprecated: 3.0, message: "Please use 'Double.pi / 4' or '.pi / 4' to get the value of correct type and avoid casting.") -public let M_PI_4 = Double.pi / 4 - -@available(swift, deprecated: 3.0, message: "Please use '2.squareRoot()'.") -public let M_SQRT2 = 2.squareRoot() - -@available(swift, deprecated: 3.0, message: "Please use '0.5.squareRoot()'.") -public let M_SQRT1_2 = 0.5.squareRoot() - -// Constants defined by -@available(swift, deprecated: 3.0, message: "Please use 'T.radix' to get the radix of a FloatingPoint type 'T'.") -public let FLT_RADIX = Double.radix - -%for type, prefix in [('Float', 'FLT'), ('Double', 'DBL'), ('Float80', 'LDBL')]: -% if type == "Float80": -#if arch(i386) || arch(x86_64) -% end -// Where does the 1 come from? C counts the usually-implicit leading -// significand bit, but Swift does not. Neither is really right or wrong. -@available(swift, deprecated: 3.0, message: "Please use '${type}.significandBitCount + 1'.") -public let ${prefix}_MANT_DIG = ${type}.significandBitCount + 1 - -// Where does the 1 come from? C models floating-point numbers as having a -// significand in [0.5, 1), but Swift (following IEEE 754) considers the -// significand to be in [1, 2). This rationale applies to ${prefix}_MIN_EXP -// as well. -@available(swift, deprecated: 3.0, message: "Please use '${type}.greatestFiniteMagnitude.exponent + 1'.") -public let ${prefix}_MAX_EXP = ${type}.greatestFiniteMagnitude.exponent + 1 - -@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNormalMagnitude.exponent + 1'.") -public let ${prefix}_MIN_EXP = ${type}.leastNormalMagnitude.exponent + 1 - -@available(swift, deprecated: 3.0, message: "Please use '${type}.greatestFiniteMagnitude' or '.greatestFiniteMagnitude'.") -public let ${prefix}_MAX = ${type}.greatestFiniteMagnitude - -@available(swift, deprecated: 3.0, message: "Please use '${type}.ulpOfOne' or '.ulpOfOne'.") -public let ${prefix}_EPSILON = ${type}.ulpOfOne - -@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNormalMagnitude' or '.leastNormalMagnitude'.") -public let ${prefix}_MIN = ${type}.leastNormalMagnitude - -@available(swift, deprecated: 3.0, message: "Please use '${type}.leastNonzeroMagnitude' or '.leastNonzeroMagnitude'.") -public let ${prefix}_TRUE_MIN = ${type}.leastNonzeroMagnitude - -% if type == "Float80": -#endif -% end -%end - -// Macros defined in bsd/sys/proc.h that do not import into Swift. -extension extern_proc { - // #define p_starttime p_un.__p_starttime - @_transparent - public var p_starttime: timeval { - get { return self.p_un.__p_starttime } - set { self.p_un.__p_starttime = newValue } - } -} diff --git a/stdlib/public/Platform/MachError.swift b/stdlib/public/Platform/MachError.swift deleted file mode 100644 index 1dfecd66a5f1c..0000000000000 --- a/stdlib/public/Platform/MachError.swift +++ /dev/null @@ -1,205 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors -// Licensed under Apache License v2.0 with Runtime Library Exception -// -// See https://swift.org/LICENSE.txt for license information -// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors -// -//===----------------------------------------------------------------------===// - -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)) && _runtime(_ObjC) -/// Enumeration describing Mach error codes. -@objc -public enum MachErrorCode : Int32 { - case success = 0 - - /// Specified address is not currently valid. - case invalidAddress = 1 - - /// Specified memory is valid, but does not permit the required - /// forms of access. - case protectionFailure = 2 - - /// The address range specified is already in use, or no address - /// range of the size specified could be found. - case noSpace = 3 - - /// The function requested was not applicable to this type of - /// argument, or an argument is invalid. - case invalidArgument = 4 - - /// The function could not be performed. A catch-all. - case failure = 5 - - /// A system resource could not be allocated to fulfill this - /// request. This failure may not be permanent. - case resourceShortage = 6 - - /// The task in question does not hold receive rights for the port - /// argument. - case notReceiver = 7 - - /// Bogus access restriction. - case noAccess = 8 - - /// During a page fault, the target address refers to a memory - /// object that has been destroyed. This failure is permanent. - case memoryFailure = 9 - - /// During a page fault, the memory object indicated that the data - /// could not be returned. This failure may be temporary; future - /// attempts to access this same data may succeed, as defined by the - /// memory object. - case memoryError = 10 - - /// The receive right is already a member of the portset. - case alreadyInSet = 11 - - /// The receive right is not a member of a port set. - case notInSet = 12 - - /// The name already denotes a right in the task. - case nameExists = 13 - - /// The operation was aborted. Ipc code will catch this and reflect - /// it as a message error. - case aborted = 14 - - /// The name doesn't denote a right in the task. - case invalidName = 15 - - /// Target task isn't an active task. - case invalidTask = 16 - - /// The name denotes a right, but not an appropriate right. - case invalidRight = 17 - - /// A blatant range error. - case invalidValue = 18 - - /// Operation would overflow limit on user-references. - case userReferencesOverflow = 19 - - /// The supplied (port) capability is improper. - case invalidCapability = 20 - - /// The task already has send or receive rights for the port under - /// another name. - case rightExists = 21 - - /// Target host isn't actually a host. - case invalidHost = 22 - - /// An attempt was made to supply "precious" data for memory that is - /// already present in a memory object. - case memoryPresent = 23 - - /// A page was requested of a memory manager via - /// memory_object_data_request for an object using a - /// MEMORY_OBJECT_COPY_CALL strategy, with the VM_PROT_WANTS_COPY - /// flag being used to specify that the page desired is for a copy - /// of the object, and the memory manager has detected the page was - /// pushed into a copy of the object while the kernel was walking - /// the shadow chain from the copy to the object. This error code is - /// delivered via memory_object_data_error and is handled by the - /// kernel (it forces the kernel to restart the fault). It will not - /// be seen by users. - case memoryDataMoved = 24 - - /// A strategic copy was attempted of an object upon which a quicker - /// copy is now possible. The caller should retry the copy using - /// vm_object_copy_quickly. This error code is seen only by the - /// kernel. - case memoryRestartCopy = 25 - - /// An argument applied to assert processor set privilege was not a - /// processor set control port. - case invalidProcessorSet = 26 - - /// The specified scheduling attributes exceed the thread's limits. - case policyLimit = 27 - - /// The specified scheduling policy is not currently enabled for the - /// processor set. - case invalidPolicy = 28 - - /// The external memory manager failed to initialize the memory object. - case invalidObject = 29 - - /// A thread is attempting to wait for an event for which there is - /// already a waiting thread. - case alreadyWaiting = 30 - - /// An attempt was made to destroy the default processor set. - case defaultSet = 31 - - /// An attempt was made to fetch an exception port that is - /// protected, or to abort a thread while processing a protected - /// exception. - case exceptionProtected = 32 - - /// A ledger was required but not supplied. - case invalidLedger = 33 - - /// The port was not a memory cache control port. - case invalidMemoryControl = 34 - - /// An argument supplied to assert security privilege was not a host - /// security port. - case invalidSecurity = 35 - - /// thread_depress_abort was called on a thread which was not - /// currently depressed. - case notDepressed = 36 - - /// Object has been terminated and is no longer available. - case terminated = 37 - - /// Lock set has been destroyed and is no longer available. - case lockSetDestroyed = 38 - - /// The thread holding the lock terminated before releasing the lock. - case lockUnstable = 39 - - /// The lock is already owned by another thread. - case lockOwned = 40 - - /// The lock is already owned by the calling thread. - case lockOwnedSelf = 41 - - /// Semaphore has been destroyed and is no longer available. - case semaphoreDestroyed = 42 - - /// Return from RPC indicating the target server was terminated - /// before it successfully replied. - case rpcServerTerminated = 43 - - /// Terminate an orphaned activation. - case rpcTerminateOrphan = 44 - - /// Allow an orphaned activation to continue executing. - case rpcContinueOrphan = 45 - - /// Empty thread activation (No thread linked to it). - case notSupported = 46 - - /// Remote node down or inaccessible. - case nodeDown = 47 - - /// A signalled thread was not actually waiting. - case notWaiting = 48 - - /// Some thread-oriented operation (semaphore_wait) timed out. - case operationTimedOut = 49 - - /// During a page fault, indicates that the page was rejected as a - /// result of a signature check. - case codesignError = 50 - - /// The requested property cannot be changed at this time. - case policyStatic = 51 -} -#endif // (os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)) && _runtime(_ObjC) diff --git a/stdlib/public/Platform/POSIXError.swift b/stdlib/public/Platform/POSIXError.swift index a655bd655e4a5..b379fac5a20cc 100644 --- a/stdlib/public/Platform/POSIXError.swift +++ b/stdlib/public/Platform/POSIXError.swift @@ -10,260 +10,7 @@ // //===----------------------------------------------------------------------===// -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)) && _runtime(_ObjC) - -/// Enumeration describing POSIX error codes. -@objc -public enum POSIXErrorCode: Int32, Sendable { - /// Operation not permitted. - case EPERM = 1 - /// No such file or directory. - case ENOENT = 2 - /// No such process. - case ESRCH = 3 - /// Interrupted system call. - case EINTR = 4 - /// Input/output error. - case EIO = 5 - /// Device not configured. - case ENXIO = 6 - /// Argument list too long. - case E2BIG = 7 - /// Exec format error. - case ENOEXEC = 8 - /// Bad file descriptor. - case EBADF = 9 - /// No child processes. - case ECHILD = 10 - /// Resource deadlock avoided. - case EDEADLK = 11 - /// 11 was EAGAIN. - /// Cannot allocate memory. - case ENOMEM = 12 - /// Permission denied. - case EACCES = 13 - /// Bad address. - case EFAULT = 14 - /// Block device required. - case ENOTBLK = 15 - /// Device / Resource busy. - case EBUSY = 16 - /// File exists. - case EEXIST = 17 - /// Cross-device link. - case EXDEV = 18 - /// Operation not supported by device. - case ENODEV = 19 - /// Not a directory. - case ENOTDIR = 20 - /// Is a directory. - case EISDIR = 21 - /// Invalid argument. - case EINVAL = 22 - /// Too many open files in system. - case ENFILE = 23 - /// Too many open files. - case EMFILE = 24 - /// Inappropriate ioctl for device. - case ENOTTY = 25 - /// Text file busy. - case ETXTBSY = 26 - /// File too large. - case EFBIG = 27 - /// No space left on device. - case ENOSPC = 28 - /// Illegal seek. - case ESPIPE = 29 - /// Read-only file system. - case EROFS = 30 - /// Too many links. - case EMLINK = 31 - /// Broken pipe. - case EPIPE = 32 - - /// math software. - /// Numerical argument out of domain. - case EDOM = 33 - /// Result too large. - case ERANGE = 34 - - /// non-blocking and interrupt i/o. - /// Resource temporarily unavailable. - case EAGAIN = 35 - /// Operation would block. - public static var EWOULDBLOCK: POSIXErrorCode { return EAGAIN } - /// Operation now in progress. - case EINPROGRESS = 36 - /// Operation already in progress. - case EALREADY = 37 - - /// ipc/network software -- argument errors. - /// Socket operation on non-socket. - case ENOTSOCK = 38 - /// Destination address required. - case EDESTADDRREQ = 39 - /// Message too long. - case EMSGSIZE = 40 - /// Protocol wrong type for socket. - case EPROTOTYPE = 41 - /// Protocol not available. - case ENOPROTOOPT = 42 - /// Protocol not supported. - case EPROTONOSUPPORT = 43 - /// Socket type not supported. - case ESOCKTNOSUPPORT = 44 - /// Operation not supported. - case ENOTSUP = 45 - /// Protocol family not supported. - case EPFNOSUPPORT = 46 - /// Address family not supported by protocol family. - case EAFNOSUPPORT = 47 - /// Address already in use. - case EADDRINUSE = 48 - /// Can't assign requested address. - case EADDRNOTAVAIL = 49 - - /// ipc/network software -- operational errors - /// Network is down. - case ENETDOWN = 50 - /// Network is unreachable. - case ENETUNREACH = 51 - /// Network dropped connection on reset. - case ENETRESET = 52 - /// Software caused connection abort. - case ECONNABORTED = 53 - /// Connection reset by peer. - case ECONNRESET = 54 - /// No buffer space available. - case ENOBUFS = 55 - /// Socket is already connected. - case EISCONN = 56 - /// Socket is not connected. - case ENOTCONN = 57 - /// Can't send after socket shutdown. - case ESHUTDOWN = 58 - /// Too many references: can't splice. - case ETOOMANYREFS = 59 - /// Operation timed out. - case ETIMEDOUT = 60 - /// Connection refused. - case ECONNREFUSED = 61 - - /// Too many levels of symbolic links. - case ELOOP = 62 - /// File name too long. - case ENAMETOOLONG = 63 - - /// Host is down. - case EHOSTDOWN = 64 - /// No route to host. - case EHOSTUNREACH = 65 - /// Directory not empty. - case ENOTEMPTY = 66 - - /// quotas & mush. - /// Too many processes. - case EPROCLIM = 67 - /// Too many users. - case EUSERS = 68 - /// Disc quota exceeded. - case EDQUOT = 69 - - /// Network File System. - /// Stale NFS file handle. - case ESTALE = 70 - /// Too many levels of remote in path. - case EREMOTE = 71 - /// RPC struct is bad. - case EBADRPC = 72 - /// RPC version wrong. - case ERPCMISMATCH = 73 - /// RPC prog. not avail. - case EPROGUNAVAIL = 74 - /// Program version wrong. - case EPROGMISMATCH = 75 - /// Bad procedure for program. - case EPROCUNAVAIL = 76 - - /// No locks available. - case ENOLCK = 77 - /// Function not implemented. - case ENOSYS = 78 - - /// Inappropriate file type or format. - case EFTYPE = 79 - /// Authentication error. - case EAUTH = 80 - /// Need authenticator. - case ENEEDAUTH = 81 - - /// Intelligent device errors. - /// Device power is off. - case EPWROFF = 82 - /// Device error, e.g. paper out. - case EDEVERR = 83 - - /// Value too large to be stored in data type. - case EOVERFLOW = 84 - - // MARK: Program loading errors. - - /// Bad executable. - case EBADEXEC = 85 - /// Bad CPU type in executable. - case EBADARCH = 86 - /// Shared library version mismatch. - case ESHLIBVERS = 87 - /// Malformed Macho file. - case EBADMACHO = 88 - - /// Operation canceled. - case ECANCELED = 89 - - /// Identifier removed. - case EIDRM = 90 - /// No message of desired type. - case ENOMSG = 91 - /// Illegal byte sequence. - case EILSEQ = 92 - /// Attribute not found. - case ENOATTR = 93 - - /// Bad message. - case EBADMSG = 94 - /// Reserved. - case EMULTIHOP = 95 - /// No message available on STREAM. - case ENODATA = 96 - /// Reserved. - case ENOLINK = 97 - /// No STREAM resources. - case ENOSR = 98 - /// Not a STREAM. - case ENOSTR = 99 - /// Protocol error. - case EPROTO = 100 - /// STREAM ioctl timeout. - case ETIME = 101 - - /// No such policy registered. - case ENOPOLICY = 103 - - /// State not recoverable. - case ENOTRECOVERABLE = 104 - /// Previous owner died. - case EOWNERDEAD = 105 - - /// Interface output queue is full. - case EQFULL = 106 - /// Must be equal largest errno. - public static var ELAST: POSIXErrorCode { return EQFULL } - - // FIXME: EOPNOTSUPP has different values depending on __DARWIN_UNIX03 and - // KERNEL. -} - -#elseif os(Linux) || os(Android) +#if os(Linux) || os(Android) /// Enumeration describing POSIX error codes. public enum POSIXErrorCode: Int32, Sendable { diff --git a/stdlib/public/Platform/Platform.swift b/stdlib/public/Platform/Platform.swift index 0c2d63a0cffdb..016461e90a997 100644 --- a/stdlib/public/Platform/Platform.swift +++ b/stdlib/public/Platform/Platform.swift @@ -13,77 +13,6 @@ import SwiftShims import SwiftOverlayShims -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) -//===----------------------------------------------------------------------===// -// MacTypes.h -//===----------------------------------------------------------------------===// - -public var noErr: OSStatus { return 0 } - -/// The `Boolean` type declared in MacTypes.h and used throughout Core -/// Foundation. -/// -/// The C type is a typedef for `unsigned char`. -@frozen -public struct DarwinBoolean : ExpressibleByBooleanLiteral { - @usableFromInline var _value: UInt8 - - @_transparent - public init(_ value: Bool) { - self._value = value ? 1 : 0 - } - - /// The value of `self`, expressed as a `Bool`. - @_transparent - public var boolValue: Bool { - return _value != 0 - } - - /// Create an instance initialized to `value`. - @_transparent - public init(booleanLiteral value: Bool) { - self.init(value) - } -} - -#if SWIFT_ENABLE_REFLECTION -extension DarwinBoolean : CustomReflectable { - /// Returns a mirror that reflects `self`. - public var customMirror: Mirror { - return Mirror(reflecting: boolValue) - } -} -#endif - -@_unavailableInEmbedded -extension DarwinBoolean : CustomStringConvertible { - /// A textual representation of `self`. - public var description: String { - return self.boolValue.description - } -} - -extension DarwinBoolean : Equatable { - @_transparent - public static func ==(lhs: DarwinBoolean, rhs: DarwinBoolean) -> Bool { - return lhs.boolValue == rhs.boolValue - } -} - -@_transparent -public // COMPILER_INTRINSIC -func _convertBoolToDarwinBoolean(_ x: Bool) -> DarwinBoolean { - return DarwinBoolean(x) -} - -@_transparent -public // COMPILER_INTRINSIC -func _convertDarwinBooleanToBool(_ x: DarwinBoolean) -> Bool { - return x.boolValue -} - -#endif - //===----------------------------------------------------------------------===// // sys/errno.h //===----------------------------------------------------------------------===// @@ -102,7 +31,7 @@ public var errno : Int32 { // stdio.h //===----------------------------------------------------------------------===// -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) || os(FreeBSD) || os(PS4) +#if os(FreeBSD) || os(PS4) public var stdin : UnsafeMutablePointer { get { return __stdinp @@ -250,9 +179,6 @@ public var S_IFBLK: mode_t { return mode_t(0o060000) } public var S_IFREG: mode_t { return mode_t(0o100000) } public var S_IFLNK: mode_t { return mode_t(0o120000) } public var S_IFSOCK: mode_t { return mode_t(0o140000) } -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) -public var S_IFWHT: mode_t { return mode_t(0o160000) } -#endif public var S_IRWXU: mode_t { return mode_t(0o000700) } public var S_IRUSR: mode_t { return mode_t(0o000400) } @@ -272,13 +198,6 @@ public var S_IXOTH: mode_t { return mode_t(0o000001) } public var S_ISUID: mode_t { return mode_t(0o004000) } public var S_ISGID: mode_t { return mode_t(0o002000) } public var S_ISVTX: mode_t { return mode_t(0o001000) } - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -public var S_ISTXT: mode_t { return S_ISVTX } -public var S_IREAD: mode_t { return S_IRUSR } -public var S_IWRITE: mode_t { return S_IWUSR } -public var S_IEXEC: mode_t { return S_IXUSR } -#endif #endif //===----------------------------------------------------------------------===// @@ -313,32 +232,11 @@ public func ioctl( // !os(Windows) #endif -//===----------------------------------------------------------------------===// -// unistd.h -//===----------------------------------------------------------------------===// - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) -@available(*, unavailable, message: "Please use threads or posix_spawn*()") -public func fork() -> Int32 { - fatalError("unavailable function can't be called") -} - -@available(*, unavailable, message: "Please use threads or posix_spawn*()") -public func vfork() -> Int32 { - fatalError("unavailable function can't be called") -} -#endif - //===----------------------------------------------------------------------===// // signal.h //===----------------------------------------------------------------------===// -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) -public var SIG_DFL: sig_t? { return nil } -public var SIG_IGN: sig_t { return unsafeBitCast(1, to: sig_t.self) } -public var SIG_ERR: sig_t { return unsafeBitCast(-1, to: sig_t.self) } -public var SIG_HOLD: sig_t { return unsafeBitCast(5, to: sig_t.self) } -#elseif os(OpenBSD) +#if os(OpenBSD) public var SIG_DFL: sig_t? { return nil } public var SIG_IGN: sig_t { return unsafeBitCast(1, to: sig_t.self) } public var SIG_ERR: sig_t { return unsafeBitCast(-1, to: sig_t.self) } @@ -399,10 +297,7 @@ public typealias Semaphore = UnsafeMutablePointer /// The value returned by `sem_open()` in the case of failure. public var SEM_FAILED: Semaphore? { -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) - // The value is ABI. Value verified to be correct for OS X, iOS, watchOS, tvOS. - return Semaphore(bitPattern: -1) -#elseif os(Linux) || os(FreeBSD) || os(OpenBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku) || os(WASI) +#if os(Linux) || os(FreeBSD) || os(OpenBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku) || os(WASI) // The value is ABI. Value verified to be correct on Glibc. return Semaphore(bitPattern: 0) #else @@ -432,7 +327,7 @@ public func sem_open( // time.h //===----------------------------------------------------------------------===// -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) || os(Linux) +#if os(Linux) @available(SwiftStdlib 5.7, *) extension timespec { @@ -457,15 +352,9 @@ extension timeval { @available(SwiftStdlib 5.7, *) public init(_ duration: Duration) { let comps = duration.components -#if os(Linux) // Linux platforms define timeval as Int/Int self.init(tv_sec: Int(comps.seconds), tv_usec: Int(comps.attoseconds / 1_000_000_000_000)) -#else - // Darwin platforms define timeval as Int/Int32 - self.init(tv_sec: Int(comps.seconds), - tv_usec: Int32(comps.attoseconds / 1_000_000_000_000)) -#endif } } @@ -485,7 +374,7 @@ extension Duration { // Some platforms don't have `extern char** environ` imported from C. #if SWIFT_STDLIB_HAS_ENVIRON -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS) || os(FreeBSD) || os(OpenBSD) || os(PS4) +#if os(FreeBSD) || os(OpenBSD) || os(PS4) public var environ: UnsafeMutablePointer?> { return _swift_stdlib_getEnviron() } diff --git a/stdlib/public/Platform/README.md b/stdlib/public/Platform/README.md index 5404201cf0701..d6845fc34b3c9 100644 --- a/stdlib/public/Platform/README.md +++ b/stdlib/public/Platform/README.md @@ -1,11 +1,10 @@ -This directory holds the Swift Standard Library's Darwin and Glibc Module, -comprised of +This directory holds the Swift Standard Library's Glibc Module, comprised of - The *overlay* library, which amends some APIs imported from Clang module. -- Glibc only: The clang [module map] which specifies which headers need to - be imported from Glibc for bare minimum functionality. +- The clang [module map] which specifies which headers need to be imported + from Glibc for bare minimum functionality. -Note: On Darwin platforms, we assume clang [module map] is already installed -in the system SDK. +Note: Darwin platforms provide their own overlays and module maps in the +system SDK. [module map]: http://clang.llvm.org/docs/Modules.html diff --git a/stdlib/public/Platform/TiocConstants.swift b/stdlib/public/Platform/TiocConstants.swift index 9510315d19908..d9df9acb4a2d4 100644 --- a/stdlib/public/Platform/TiocConstants.swift +++ b/stdlib/public/Platform/TiocConstants.swift @@ -10,10 +10,10 @@ // //===----------------------------------------------------------------------===// -// Tty ioctl request constants, needed only on Darwin and FreeBSD. +// Tty ioctl request constants, needed only on FreeBSD. // Constants available on all platforms, also available on Linux. -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) || os(FreeBSD) || os(Haiku) +#if os(FreeBSD) || os(Haiku) /// Set exclusive use of tty. public var TIOCEXCL: UInt { return 0x2000740d } @@ -114,45 +114,6 @@ public var TIOCGLTC: UInt { return 0x40067474 } #endif -// Darwin only constants, also available on Linux. -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) - -/// Get termios struct. -public var TIOCGETA: UInt { return 0x40487413 } -/// Set termios struct. -public var TIOCSETA: UInt { return 0x80487414 } -/// Drain output, set. -public var TIOCSETAW: UInt { return 0x80487415 } -/// Drn out, fls in, set. -public var TIOCSETAF: UInt { return 0x80487416 } -/// Pty: generate signal. -public var TIOCSIG: UInt { return 0x2000745f } -/// Get modem control state. -public var TIOCMODG: UInt { return 0x40047403 } -/// Set modem control state. -public var TIOCMODS: UInt { return 0x80047404 } -/// Internal input VSTART. -public var TIOCIXON: UInt { return 0x20007481 } -/// Internal input VSTOP. -public var TIOCIXOFF: UInt { return 0x20007480 } -/// Remote input editing. -public var TIOCREMOTE: UInt { return 0x80047469 } -/// 4.2 compatibility. -public var TIOCSCONS: UInt { return 0x20007463 } -/// Enable/get timestamp of last DCd rise. -public var TIOCDCDTIMESTAMP: UInt { return 0x40107458 } -/// Download microcode to DSI Softmodem. -public var TIOCDSIMICROCODE: UInt { return 0x20007455 } -/// Grantpt(3). -public var TIOCPTYGRANT: UInt { return 0x20007454 } -/// Ptsname(3). -public var TIOCPTYGNAME: UInt { return 0x40807453 } -/// Unlockpt(3). -public var TIOCPTYUNLK: UInt { return 0x20007452 } - -#endif - - // FreeBSD specific values and constants available only on FreeBSD. #if os(FreeBSD) diff --git a/stdlib/public/Platform/tgmath.swift.gyb b/stdlib/public/Platform/tgmath.swift.gyb index 1680044d4d59f..6983daf30a280 100644 --- a/stdlib/public/Platform/tgmath.swift.gyb +++ b/stdlib/public/Platform/tgmath.swift.gyb @@ -222,7 +222,7 @@ def TypedBinaryFunctions(): // Note these do not have a corresponding LLVM intrinsic % for T, CT, f, ufunc in TypedUnaryFunctions(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux))) % end @_transparent public func ${ufunc}(_ x: ${T}) -> ${T} { @@ -234,23 +234,6 @@ public func ${ufunc}(_ x: ${T}) -> ${T} { % end -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) -// Unary intrinsic functions -// Note these have a corresponding LLVM intrinsic -% for T, ufunc in TypedUnaryIntrinsicFunctions(): -% if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) -% end -@_transparent -public func ${ufunc}(_ x: ${T}) -> ${T} { - return _${ufunc}(x) -} -% if T == 'Float80': -#endif -% end - -% end -#else // FIXME: As of now, we cannot declare 64-bit (Double/CDouble) overlays here. // Since CoreFoundation also exports libc functions, they will conflict with // Swift overlays when building Foundation. For now, just like normal @@ -258,7 +241,7 @@ public func ${ufunc}(_ x: ${T}) -> ${T} { % for ufunc in UnaryIntrinsicFunctions: % for T, CT, f in OverlayFloatTypes(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux))) % end @_transparent public func ${ufunc}(_ x: ${T}) -> ${T} { @@ -269,13 +252,12 @@ public func ${ufunc}(_ x: ${T}) -> ${T} { % end % end % end -#endif // Binary functions % for T, CT, f, bfunc in TypedBinaryFunctions(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux))) % end @_transparent public func ${bfunc}(_ lhs: ${T}, _ rhs: ${T}) -> ${T} { @@ -290,7 +272,7 @@ public func ${bfunc}(_ lhs: ${T}, _ rhs: ${T}) -> ${T} { % # This is AllFloatTypes not OverlayFloatTypes because of the tuple return. % for T, CT, f in AllFloatTypes(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || os(OpenBSD) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || os(OpenBSD) || ($Embedded && !os(Linux))) % else: // lgamma not available on Windows, apparently? #if !os(Windows) @@ -308,7 +290,7 @@ public func lgamma(_ x: ${T}) -> (${T}, Int) { % # This is AllFloatTypes not OverlayFloatTypes because of the tuple return. % for T, CT, f in AllFloatTypes(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux))) % end @_transparent public func remquo(_ x: ${T}, _ y: ${T}) -> (${T}, Int) { @@ -324,7 +306,7 @@ public func remquo(_ x: ${T}, _ y: ${T}) -> (${T}, Int) { % for T, CT, f in OverlayFloatTypes(): % if T == 'Float80': -#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux) && !(os(macOS) || os(iOS) || os(watchOS) || os(tvOS)))) +#if (arch(i386) || arch(x86_64)) && !(os(Windows) || os(Android) || ($Embedded && !os(Linux))) % end @available(swift, deprecated: 4.2/*, obsoleted: 5.1*/, message: "use ${T}(nan: ${T}.RawSignificand).") diff --git a/stdlib/public/Synchronization/CMakeLists.txt b/stdlib/public/Synchronization/CMakeLists.txt index 302d332b82c3e..b410bdf3fee92 100644 --- a/stdlib/public/Synchronization/CMakeLists.txt +++ b/stdlib/public/Synchronization/CMakeLists.txt @@ -37,18 +37,12 @@ set(SWIFT_SYNCHRONIZATION_GYB_SOURCES set(SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES) -if(SWIFT_BUILD_SDK_OVERLAY) - set(SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES Darwin) -endif() - if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES _Builtin_float) endif() diff --git a/stdlib/public/libexec/swift-backtrace/CMakeLists.txt b/stdlib/public/libexec/swift-backtrace/CMakeLists.txt index 8f42800b0e6f3..0c9c45b0b8fda 100644 --- a/stdlib/public/libexec/swift-backtrace/CMakeLists.txt +++ b/stdlib/public/libexec/swift-backtrace/CMakeLists.txt @@ -6,7 +6,6 @@ set(glibc) set(musl) if(SWIFT_BUILD_SDK_OVERLAY) - set(darwin Darwin) set(wincrt_sdk CRT WinSDK) set(glibc Glibc) set(musl Musl) @@ -16,10 +15,8 @@ if((SWIFT_BUILD_CLANG_OVERLAYS OR SWIFT_BUILD_TEST_SUPPORT_MODULES) AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT)) - # We need to make this dependency explicit because this library - # imports Darwin and Darwin re-exports _Builtin_float, - # but in most configurations we pull Darwin from the SDK, - # meaning we specify no Darwin dependency in the build system + # This library imports Darwin from the SDK, which re-exports + # _Builtin_float which is part of this build. list(APPEND darwin _Builtin_float) endif()