From 678fb81ed59e3ad2bf7701694f16ab57940c5969 Mon Sep 17 00:00:00 2001 From: Tyson Andre Date: Tue, 2 Mar 2021 14:42:02 -0500 Subject: [PATCH 1/5] Fix typo in 15to16 upgrading notes --- Usage Docs/15to16.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Usage Docs/15to16.md b/Usage Docs/15to16.md index 7f42575..c238926 100644 --- a/Usage Docs/15to16.md +++ b/Usage Docs/15to16.md @@ -6,7 +6,7 @@ This guide will help you navigate the changes that were introduced in v16. ## Client supports multiple socket.io versions -The client now supports socket.io 3 servers. This is mostly a transparent change, however if your sever +The client now supports socket.io 3 servers. This is mostly a transparent change, however if your server is socket.io 2, you must send `.version(.two)` as an option to the manager. ```swift From 9609774b3a5de7330bd864fc9c258dfa61849bd6 Mon Sep 17 00:00:00 2001 From: Wyatt Mufson Date: Thu, 17 Jun 2021 11:38:43 -0400 Subject: [PATCH 2/5] Fix swift warnings --- Source/SocketIO/Engine/SocketEngine.swift | 2 +- Source/SocketIO/Engine/SocketEngineSpec.swift | 2 +- Source/SocketIO/Manager/SocketManagerSpec.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift index cd26116..991385c 100644 --- a/Source/SocketIO/Engine/SocketEngine.swift +++ b/Source/SocketIO/Engine/SocketEngine.swift @@ -751,7 +751,7 @@ extension SocketEngine { case .cancelled: wsConnected = false websocketDidDisconnect(error: EngineError.canceled) - case let .disconnected(reason, code): + case .disconnected(_, _): wsConnected = false websocketDidDisconnect(error: nil) case let .text(msg): diff --git a/Source/SocketIO/Engine/SocketEngineSpec.swift b/Source/SocketIO/Engine/SocketEngineSpec.swift index 1eecffd..fc0aa58 100644 --- a/Source/SocketIO/Engine/SocketEngineSpec.swift +++ b/Source/SocketIO/Engine/SocketEngineSpec.swift @@ -27,7 +27,7 @@ import Foundation import Starscream /// Specifies a SocketEngine. -public protocol SocketEngineSpec: class { +public protocol SocketEngineSpec: AnyObject { // MARK: Properties /// The client for this engine. diff --git a/Source/SocketIO/Manager/SocketManagerSpec.swift b/Source/SocketIO/Manager/SocketManagerSpec.swift index 87be545..8c57c91 100644 --- a/Source/SocketIO/Manager/SocketManagerSpec.swift +++ b/Source/SocketIO/Manager/SocketManagerSpec.swift @@ -45,7 +45,7 @@ import Foundation /// To disconnect a socket and remove it from the manager, either call `SocketIOClient.disconnect()` on the socket, /// or call one of the `disconnectSocket` methods on this class. /// -public protocol SocketManagerSpec : AnyObject, SocketEngineClient { +public protocol SocketManagerSpec : SocketEngineClient { // MARK: Properties /// Returns the socket associated with the default namespace ("/"). From 61d0a41103fc58bfab49552d680b59f39608d038 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Sat, 10 Jul 2021 11:24:29 +0200 Subject: [PATCH 3/5] docs: add compatibility table --- README.md | 2 +- Usage Docs/15to16.md | 19 ++++++++++++ Usage Docs/Compatibility.md | 61 +++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 Usage Docs/Compatibility.md diff --git a/README.md b/README.md index ab883f9..8e1273e 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ socket.connect() ``` ## Features -- Supports socket.io 2.0+/3.0+. +- Supports Socket.IO server 2.0+/3.0+/4.0+ (see the [compatibility table](https://nuclearace.github.io/Socket.IO-Client-Swift/Compatibility.html)) - Supports Binary - Supports Polling and WebSockets - Supports TLS/SSL diff --git a/Usage Docs/15to16.md b/Usage Docs/15to16.md index c238926..d50fd8d 100644 --- a/Usage Docs/15to16.md +++ b/Usage Docs/15to16.md @@ -13,4 +13,23 @@ is socket.io 2, you must send `.version(.two)` as an option to the manager. SocketManager(socketURL: URL(string:"http://localhost:8087/")!, config: [.version(.two)]) ``` +## How to upgrade +- first, upgrade the Socket.IO server to v4 with the compatibility mode enabled (`allowEIO3: true`) +- then, upgrade the clients to v16 +- finally, once all clients have upgraded, disable the compatibility mode + +You can check the version of the connection on the server side with: + +```js +io.on("connection", (socket) => { + // either 3 for the 3rd revision of the protocol (Socket.IO v2) or 4 for the 4th revision (Socket.IO v3/v4) + const version = socket.conn.protocol; +}); +``` + +See also: + +- [Compatibility table](https://nuclearace.github.io/Socket.IO-Client-Swift/Compatibility.html) +- Migrating from 2.x to 3.0: https://socket.io/docs/v4/migrating-from-2-x-to-3-0/ +- Migrating from 3.x to 4.0: https://socket.io/docs/v4/migrating-from-3-x-to-4-0/ diff --git a/Usage Docs/Compatibility.md b/Usage Docs/Compatibility.md new file mode 100644 index 0000000..9841073 --- /dev/null +++ b/Usage Docs/Compatibility.md @@ -0,0 +1,61 @@ +Here is the compatibility table with the Node.js server: + + + + + + + + + + + + + + + + + + + + + + + +
Swift Client versionSocket.IO server version
2.x3.x4.x
v15.xYESYES1YES2
v16.xYES3YESYES
+ +[1] Yes, with allowEIO3: true (server) and `.connectParams(["EIO": "3"])` (client): + +*Server* + +```js +const { createServer } = require("http"); +const { Server } = require("socket.io"); + +const httpServer = createServer(); +const io = new Server(httpServer, { + allowEIO3: true +}); + +httpServer.listen(8080); +``` + +*Client* + +```swift +SocketManager(socketURL: URL(string:"http://localhost:8080/")!, config: [.connectParams(["EIO": "3"])]) +``` + +[2] Yes, allowEIO3: true (server) + +[3] Yes, with `.version(.two)` (client): + +```swift +SocketManager(socketURL: URL(string:"http://localhost:8080/")!, config: [.version(.two)]) +``` + +See also: + +- Migrating from 2.x to 3.0: https://socket.io/docs/v4/migrating-from-2-x-to-3-0/ +- Migrating from 3.x to 4.0: https://socket.io/docs/v4/migrating-from-3-x-to-4-0/ +- Socket.IO protocol: https://github.com/socketio/socket.io-protocol From f4f071551f0ff49ded5b7748f5791928188fbe40 Mon Sep 17 00:00:00 2001 From: NachoSoto Date: Fri, 29 Oct 2021 19:50:45 -0700 Subject: [PATCH 4/5] Added support for Mac Catalyst --- Socket.IO-Client-Swift.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index b832920..90f3b01 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -722,6 +722,7 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "$(inherited)"; + SUPPORTS_MACCATALYST = YES; SWIFT_INCLUDE_PATHS = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; @@ -787,6 +788,7 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "$(inherited)"; + SUPPORTS_MACCATALYST = YES; SWIFT_INCLUDE_PATHS = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; From c6d28246ea58bf973d29a0b6e63be79c0ce8e0c0 Mon Sep 17 00:00:00 2001 From: NachoSoto Date: Tue, 2 Nov 2021 11:05:00 -0700 Subject: [PATCH 5/5] Updated project to use XCFramework This enables support for macCatalyst --- .../project.pbxproj | 121 +++++++----------- 1 file changed, 49 insertions(+), 72 deletions(-) diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index 90f3b01..e34e324 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -19,9 +19,9 @@ 1C686BE71F869AFD007D8627 /* SocketParserTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C686BD71F869AF1007D8627 /* SocketParserTest.swift */; }; 1C686BE81F869AFD007D8627 /* SocketNamespacePacketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C686BD81F869AF1007D8627 /* SocketNamespacePacketTest.swift */; }; 572EF2431B51F18A00EEBB58 /* SocketIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2381B51F18A00EEBB58 /* SocketIO.framework */; }; + 579C7D4C2731B487009F8A2F /* Starscream.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 579C7D4B2731B487009F8A2F /* Starscream.xcframework */; }; 6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA08A971D615C0B0061FD2A /* Security.framework */; }; 74BF53581F894326004972D8 /* SocketIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF23C1B51F18A00EEBB58 /* SocketIO.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 74D0F5961F8053950037C4DC /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9432E00B1F77F883006AF628 /* Starscream.framework */; }; 74DA21741F09440F009C19EE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 74DA21731F09440F009C19EE /* libz.tbd */; }; 74DA217C1F09457B009C19EE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 74DA21731F09440F009C19EE /* libz.tbd */; }; DD52B048C71D724ABBD18C71 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD52BDC9E66AADA2CC5E8246 /* SocketTypes.swift */; }; @@ -75,18 +75,15 @@ 572EF23B1B51F18A00EEBB58 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 572EF23C1B51F18A00EEBB58 /* SocketIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocketIO.h; sourceTree = ""; }; 572EF2421B51F18A00EEBB58 /* SocketIO-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SocketIO-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 579C7D4B2731B487009F8A2F /* Starscream.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Starscream.xcframework; path = Carthage/Build/Starscream.xcframework; sourceTree = ""; }; 6CA08A951D615C040061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 6CA08A971D615C0B0061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 6CA08A991D615C140061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 749FA19F1F8112E7002FBB30 /* Starscream.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = Starscream.framework.dSYM; path = Carthage/Build/Mac/Starscream.framework.dSYM; sourceTree = ""; }; 749FA1A11F811408002FBB30 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 74D0F58D1F804FED0037C4DC /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; 74DA21731F09440F009C19EE /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; 74DA217D1F0945E9009C19EE /* libcommonCrypto.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcommonCrypto.tbd; path = usr/lib/system/libcommonCrypto.tbd; sourceTree = SDKROOT; }; 9432E0061F77F7CA006AF628 /* SSLSecurity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSLSecurity.swift; sourceTree = ""; }; - 9432E0091F77F87D006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/iOS/Starscream.framework; sourceTree = ""; }; - 9432E00B1F77F883006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/Mac/Starscream.framework; sourceTree = ""; }; - 9432E00D1F77F889006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/tvOS/Starscream.framework; sourceTree = ""; }; DD52B078DB0A3C3D1BB507CD /* SocketIOClientOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketIOClientOption.swift; sourceTree = ""; }; DD52B09F7984E730513AB7E5 /* SocketAckManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAckManager.swift; sourceTree = ""; }; DD52B1D9BC4AE46D38D827DE /* SocketIOStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketIOStatus.swift; sourceTree = ""; }; @@ -120,8 +117,8 @@ buildActionMask = 2147483647; files = ( 74DA21741F09440F009C19EE /* libz.tbd in Frameworks */, + 579C7D4C2731B487009F8A2F /* Starscream.xcframework in Frameworks */, 6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */, - 74D0F5961F8053950037C4DC /* Starscream.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -231,11 +228,8 @@ isa = PBXGroup; children = ( 749FA1A11F811408002FBB30 /* Foundation.framework */, - 749FA19F1F8112E7002FBB30 /* Starscream.framework.dSYM */, + 579C7D4B2731B487009F8A2F /* Starscream.xcframework */, 74D0F58D1F804FED0037C4DC /* libz.tbd */, - 9432E0091F77F87D006AF628 /* Starscream.framework */, - 9432E00B1F77F883006AF628 /* Starscream.framework */, - 9432E00D1F77F889006AF628 /* Starscream.framework */, 74DA217D1F0945E9009C19EE /* libcommonCrypto.tbd */, 74DA21731F09440F009C19EE /* libz.tbd */, 6CA08A9E1D615C340061FD2A /* tvOS */, @@ -541,33 +535,9 @@ "ENABLE_BITCODE[sdk=macosx*]" = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - "FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/tvOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=appletvsimulator*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/tvOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=watchos*]" = ( - "$(PROJECT_DIR)/Carthage/Build/watchOS", - "$(inherited)", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=watchsimulator*]" = ( - "$(PROJECT_DIR)/Carthage/Build/watchOS", + FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/", ); GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -616,33 +586,9 @@ ENABLE_BITCODE = YES; "ENABLE_BITCODE[sdk=macosx*]" = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - "FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/tvOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=appletvsimulator*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/tvOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=watchos*]" = ( - "$(PROJECT_DIR)/Carthage/Build/watchOS", - "$(inherited)", - ); - "FRAMEWORK_SEARCH_PATHS[sdk=watchsimulator*]" = ( - "$(PROJECT_DIR)/Carthage/Build/watchOS", + FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/", ); GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -655,7 +601,8 @@ MACOSX_DEPLOYMENT_TARGET = 10.14; PRODUCT_NAME = SocketIO; SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphonesimulator iphoneos watchos watchsimulator"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; TVOS_DEPLOYMENT_TARGET = 10.0; VALID_ARCHS = "i386 x86_64 armv7 armv7s arm64 armv7k"; @@ -712,8 +659,16 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SocketIO/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; @@ -779,8 +734,16 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SocketIO/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; @@ -864,8 +827,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SocketIO/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; @@ -940,8 +910,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SocketIO/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks @loader_path/../Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO;