From 55a158b6203a5b63bdafd9ae9d2adaed66d7064b Mon Sep 17 00:00:00 2001 From: Karoy Lorentey Date: Tue, 20 Jun 2023 10:52:41 -0700 Subject: [PATCH] =?UTF-8?q?[Xcode]=20Don=E2=80=99t=20use=20a=20bridging=20?= =?UTF-8?q?header=20in=20a=20framework=20target?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Oops, that was not intended to work, and in fact it produces warnings in clients. Instead, change _sa_retain_n and _sa_release_n to Swift calling convention and call them using _silgen_name trickery when in single-module configuration. Resolves rdar://110860922 --- Sources/Atomics/Unmanaged extensions.swift | 9 ++++++++- Sources/_AtomicsShims/include/_AtomicsShims.h | 10 ++++++++-- Xcode/Atomics.xcconfig | 1 - Xcode/AtomicsTests.xcconfig | 5 ----- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Sources/Atomics/Unmanaged extensions.swift b/Sources/Atomics/Unmanaged extensions.swift index 4ae0f8b..2d58033 100644 --- a/Sources/Atomics/Unmanaged extensions.swift +++ b/Sources/Atomics/Unmanaged extensions.swift @@ -13,7 +13,14 @@ #if ATOMICS_NATIVE_BUILTINS import Swift #endif -#if !ATOMICS_SINGLE_MODULE + +#if ATOMICS_SINGLE_MODULE +@_silgen_name("_sa_retain_n") +internal func _sa_retain_n(_ object: UnsafeMutableRawPointer, _ delta: UInt32) + +@_silgen_name("_sa_release_n") +internal func _sa_release_n(_ object: UnsafeMutableRawPointer, _ delta: UInt32) +#else import _AtomicsShims #endif diff --git a/Sources/_AtomicsShims/include/_AtomicsShims.h b/Sources/_AtomicsShims/include/_AtomicsShims.h index e720fde..8cddbcb 100644 --- a/Sources/_AtomicsShims/include/_AtomicsShims.h +++ b/Sources/_AtomicsShims/include/_AtomicsShims.h @@ -21,6 +21,12 @@ #define SWIFTATOMIC_SWIFT_NAME(name) __attribute__((swift_name(#name))) #define SWIFTATOMIC_ALIGNED(alignment) __attribute__((aligned(alignment))) +#if __has_attribute(swiftcall) +# define SWIFTATOMIC_SWIFTCC __attribute__((swiftcall)) +#else +# define SWIFTATOMIC_SWIFTCC +#endif + #if ATOMICS_SINGLE_MODULE # if __has_attribute(visibility) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(_WIN32) # define SWIFTATOMIC_SHIMS_EXPORT __attribute__((visibility("hidden"))) @@ -228,7 +234,7 @@ SWIFTATOMIC_DEFINE_TYPE(DoubleWord, _sa_dword) #endif //!defined(ATOMICS_NATIVE_BUILTINS) && defined(__swift__) -SWIFTATOMIC_SHIMS_EXPORT void _sa_retain_n(void *object, uint32_t n); -SWIFTATOMIC_SHIMS_EXPORT void _sa_release_n(void *object, uint32_t n); +SWIFTATOMIC_SWIFTCC SWIFTATOMIC_SHIMS_EXPORT void _sa_retain_n(void *object, uint32_t n); +SWIFTATOMIC_SWIFTCC SWIFTATOMIC_SHIMS_EXPORT void _sa_release_n(void *object, uint32_t n); #endif //SWIFTATOMIC_HEADER_INCLUDED diff --git a/Xcode/Atomics.xcconfig b/Xcode/Atomics.xcconfig index 76a1c6e..02e7f6b 100644 --- a/Xcode/Atomics.xcconfig +++ b/Xcode/Atomics.xcconfig @@ -28,7 +28,6 @@ VERSION_INFO_PREFIX = DYLIB_COMPATIBILITY_VERSION = $(CURRENT_PROJECT_VERSION) DYLIB_CURRENT_VERSION = $(CURRENT_PROJECT_VERSION) -SWIFT_OBJC_BRIDGING_HEADER = ../Sources/_AtomicsShims/include/_AtomicsShims.h OTHER_SWIFT_FLAGS = $(inherited) -Xfrontend -parse-stdlib GCC_PREPROCESSOR_DEFINITIONS = $(inherited) ATOMICS_SINGLE_MODULE=1 ATOMICS_NATIVE_BUILTINS=1 diff --git a/Xcode/AtomicsTests.xcconfig b/Xcode/AtomicsTests.xcconfig index be60be2..80c4fc1 100644 --- a/Xcode/AtomicsTests.xcconfig +++ b/Xcode/AtomicsTests.xcconfig @@ -15,11 +15,6 @@ PRODUCT_BUNDLE_IDENTIFIER = org.swift.AtomicsTests SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator watchos watchsimulator appletvos appletvsimulator ARCHS = $(ARCHS_STANDARD) -MACOSX_DEPLOYMENT_TARGET = 12.0 -IPHONEOS_DEPLOYMENT_TARGET = 15.0 -WATCHOS_DEPLOYMENT_TARGET = 8.0 -TVOS_DEPLOYMENT_TARGET = 15.0 - CURRENT_PROJECT_VERSION = 1 MARKETING_VERSION = 1.0