[IOS] Fix build error of iOS RPC (#5621)
authorMORITA Kazutaka <morita.kazutaka@gmail.com>
Tue, 19 May 2020 14:09:18 +0000 (23:09 +0900)
committerGitHub <noreply@github.com>
Tue, 19 May 2020 14:09:18 +0000 (07:09 -0700)
* [IOS] Fix build error of iOS RPC

- Update to C++14
- Use the latest RPC protocol
- Resolve CoreML dependency

* Fix clang-format error

apps/ios_rpc/tvmrpc.xcodeproj/project.pbxproj
apps/ios_rpc/tvmrpc/TVMRuntime.mm

index 0c08490..b33c892 100644 (file)
@@ -34,6 +34,7 @@
                C02637661F1C2690007247A9 /* TVMRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = C02637651F1C2690007247A9 /* TVMRuntime.mm */; };
                C02637691F1C26AF007247A9 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C02637681F1C26AF007247A9 /* ViewController.mm */; };
                C05A2C891F1DCE0900D4798B /* tvmrpcLauncher.mm in Sources */ = {isa = PBXBuildFile; fileRef = C05A2C881F1DCE0900D4798B /* tvmrpcLauncher.mm */; };
+               D7685AD324390EAE00D1469C /* CoreML.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7685AD224390EAD00D1469C /* CoreML.framework */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -62,6 +63,7 @@
                C05A2C861F1DCE0900D4798B /* tvmrpcLauncher.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = tvmrpcLauncher.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
                C05A2C881F1DCE0900D4798B /* tvmrpcLauncher.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = tvmrpcLauncher.mm; sourceTree = "<group>"; };
                C05A2C8A1F1DCE0900D4798B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+               D7685AD224390EAD00D1469C /* CoreML.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreML.framework; path = System/Library/Frameworks/CoreML.framework; sourceTree = SDKROOT; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -69,6 +71,7 @@
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               D7685AD324390EAE00D1469C /* CoreML.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -88,6 +91,7 @@
                                C026374D1F1C25E8007247A9 /* tvmrpc */,
                                C05A2C871F1DCE0900D4798B /* tvmrpcLauncher */,
                                C026374C1F1C25E8007247A9 /* Products */,
+                               D7685AD124390EAD00D1469C /* Frameworks */,
                        );
                        indentWidth = 2;
                        sourceTree = "<group>";
                        path = tvmrpcLauncher;
                        sourceTree = "<group>";
                };
+               D7685AD124390EAD00D1469C /* Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               D7685AD224390EAD00D1469C /* CoreML.framework */,
+                       );
+                       name = Frameworks;
+                       sourceTree = "<group>";
+               };
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
                                ALWAYS_SEARCH_USER_PATHS = NO;
                                CLANG_ANALYZER_NONNULL = YES;
                                CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
                                CLANG_CXX_LIBRARY = "libc++";
                                CLANG_ENABLE_MODULES = YES;
                                CLANG_ENABLE_OBJC_ARC = YES;
                                ALWAYS_SEARCH_USER_PATHS = NO;
                                CLANG_ANALYZER_NONNULL = YES;
                                CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
                                CLANG_CXX_LIBRARY = "libc++";
                                CLANG_ENABLE_MODULES = YES;
                                CLANG_ENABLE_OBJC_ARC = YES;
index 289450b..d9b834b 100644 (file)
@@ -37,6 +37,9 @@
 #include "../../../src/runtime/workspace_pool.cc"
 
 // RPC server
+#include "../../../src/runtime/rpc/rpc_channel.cc"
+#include "../../../src/runtime/rpc/rpc_endpoint.cc"
+#include "../../../src/runtime/rpc/rpc_local_session.cc"
 #include "../../../src/runtime/rpc/rpc_module.cc"
 #include "../../../src/runtime/rpc/rpc_server_env.cc"
 #include "../../../src/runtime/rpc/rpc_session.cc"
@@ -82,9 +85,9 @@ class NSStreamChannel final : public RPCChannel {
 FEventHandler CreateServerEventHandler(NSOutputStream* outputStream, std::string name,
                                        std::string remote_key) {
   std::unique_ptr<NSStreamChannel> ch(new NSStreamChannel(outputStream));
-  std::shared_ptr<RPCSession> sess = RPCSession::Create(std::move(ch), name, remote_key);
+  std::shared_ptr<RPCEndpoint> sess = RPCEndpoint::Create(std::move(ch), name, remote_key);
   return [sess](const std::string& in_bytes, int flag) {
-    return sess->ServerEventHandler(in_bytes, flag);
+    return sess->ServerAsyncIOEventHandler(in_bytes, flag);
   };
 }
 
@@ -115,7 +118,7 @@ void LaunchSyncServer() {
   std::string url, key;
   int port;
   CHECK(fs >> url >> port >> key) << "Invalid RPC config file " << name;
-  RPCConnect(url, port, "server:" + key)->ServerLoop();
+  RPCConnect(url, port, "server:" + key, TVMArgs(nullptr, nullptr, 0))->ServerLoop();
 }
 
 TVM_REGISTER_GLOBAL("tvm.rpc.server.workpath").set_body([](TVMArgs args, TVMRetValue* rv) {