TM iOS: Install SampleTurboModule in RNTester (pods)

Summary: This sets up RCTSampleTurboModule (and other variants) in RNTester when built with cocoapods. There's no call site yet though. And RNTester.xcodeproj doesn't support it.

Reviewed By: cpojer

Differential Revision: D14932535

fbshipit-source-id: db8eafd6777cbec8f3592dafdccbdd7cf44e38bc
This commit is contained in:
Kevin Gozali 2019-04-15 12:07:04 -07:00 коммит произвёл Facebook Github Bot
Родитель a2aba45067
Коммит 4da6e4a042
8 изменённых файлов: 157 добавлений и 8 удалений

Просмотреть файл

@ -38,6 +38,7 @@ target 'RNTester' do
pod 'yoga', :path => '../ReactCommon/yoga' pod 'yoga', :path => '../ReactCommon/yoga'
pod 'React-turbomodule-core', :path => '../ReactCommon/turbomodule/core' pod 'React-turbomodule-core', :path => '../ReactCommon/turbomodule/core'
pod 'React-turbomodule-samples', :path => '../ReactCommon/turbomodule/samples'
# Third party deps podspec link # Third party deps podspec link
pod 'DoubleConversion', :podspec => '../third-party-podspecs/DoubleConversion.podspec' pod 'DoubleConversion', :podspec => '../third-party-podspecs/DoubleConversion.podspec'

Просмотреть файл

@ -99,6 +99,19 @@ PODS:
- React-Core (= 1000.0.0) - React-Core (= 1000.0.0)
- React-cxxreact (= 1000.0.0) - React-cxxreact (= 1000.0.0)
- React-jsi (= 1000.0.0) - React-jsi (= 1000.0.0)
- React-turbomodule-samples (1000.0.0):
- Folly (= 2018.10.22.00)
- React-Core (= 1000.0.0)
- React-cxxreact (= 1000.0.0)
- React-jsi (= 1000.0.0)
- React-turbomodule-core (= 1000.0.0)
- React-turbomodule-samples/samples-ios (= 1000.0.0)
- React-turbomodule-samples/samples-ios (1000.0.0):
- Folly (= 2018.10.22.00)
- React-Core (= 1000.0.0)
- React-cxxreact (= 1000.0.0)
- React-jsi (= 1000.0.0)
- React-turbomodule-core (= 1000.0.0)
- yoga (1000.0.0.React) - yoga (1000.0.0.React)
DEPENDENCIES: DEPENDENCIES:
@ -127,6 +140,7 @@ DEPENDENCIES:
- React-RCTVibration (from `../Libraries/Vibration`) - React-RCTVibration (from `../Libraries/Vibration`)
- React-RCTWebSocket (from `../Libraries/WebSocket`) - React-RCTWebSocket (from `../Libraries/WebSocket`)
- React-turbomodule-core (from `../ReactCommon/turbomodule/core`) - React-turbomodule-core (from `../ReactCommon/turbomodule/core`)
- React-turbomodule-samples (from `../ReactCommon/turbomodule/samples`)
- yoga (from `../ReactCommon/yoga`) - yoga (from `../ReactCommon/yoga`)
SPEC REPOS: SPEC REPOS:
@ -184,6 +198,8 @@ EXTERNAL SOURCES:
:path: "../Libraries/WebSocket" :path: "../Libraries/WebSocket"
React-turbomodule-core: React-turbomodule-core:
:path: "../ReactCommon/turbomodule/core" :path: "../ReactCommon/turbomodule/core"
React-turbomodule-samples:
:path: "../ReactCommon/turbomodule/samples"
yoga: yoga:
:path: "../ReactCommon/yoga" :path: "../ReactCommon/yoga"
@ -213,9 +229,10 @@ SPEC CHECKSUMS:
React-RCTText: 469ec754592c92fc639825e558908c2f0e783e2c React-RCTText: 469ec754592c92fc639825e558908c2f0e783e2c
React-RCTVibration: ade3c169b54f3bc16c9a9918e17e48ef66aee6ba React-RCTVibration: ade3c169b54f3bc16c9a9918e17e48ef66aee6ba
React-RCTWebSocket: 90b78ed51d53d17db417d3956decba3f7ace58e4 React-RCTWebSocket: 90b78ed51d53d17db417d3956decba3f7ace58e4
React-turbomodule-core: d4c0c7d6a7d97e25ac6d0316c2a7950d199b398e React-turbomodule-core: 67a461c91319c0bf2228dc46c7dafbbb921eebee
React-turbomodule-samples: b28927d482d6fcfc3cbe2fd25f304799d2ff9bb7
yoga: 542cb34fe3bca476487e08eb516dd640ea996a65 yoga: 542cb34fe3bca476487e08eb516dd640ea996a65
PODFILE CHECKSUM: e587e581dcf974f8a9b7b1ff624f5114082b8045 PODFILE CHECKSUM: f7d0a09c9ea25315395b7248591d4a372b87cf3f
COCOAPODS: 1.6.1 COCOAPODS: 1.6.1

Просмотреть файл

@ -28,7 +28,9 @@
#endif #endif
#ifdef RN_TURBO_MODULE_ENABLED #ifdef RN_TURBO_MODULE_ENABLED
#import <React/RCTTurboModuleManager.h> #import <jsireact/RCTTurboModuleManager.h>
#import "RNTesterTurboModuleProvider.h"
#endif #endif
#ifdef RN_TURBO_MODULE_ENABLED #ifdef RN_TURBO_MODULE_ENABLED
@ -150,22 +152,23 @@
#ifdef RN_TURBO_MODULE_ENABLED #ifdef RN_TURBO_MODULE_ENABLED
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
jsInvoker:(std::shared_ptr<facebook::react::JSCallInvoker>)jsInvoker jsInvoker:(std::shared_ptr<facebook::react::JSCallInvoker>)jsInvoker
{ {
return nullptr; return RNTesterTurboModuleProvider(name, jsInvoker);
} }
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
instance:(id<RCTTurboModule>)instance instance:(id<RCTTurboModule>)instance
jsInvoker:(std::shared_ptr<facebook::react::JSCallInvoker>)jsInvoker jsInvoker:(std::shared_ptr<facebook::react::JSCallInvoker>)jsInvoker
{ {
return nullptr; return RNTesterTurboModuleProvider(name, instance, jsInvoker);
} }
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass - (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
{ {
return nil; // No custom initializer here.
return [moduleClass new];
} }
#endif #endif

Просмотреть файл

@ -0,0 +1,31 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
#ifdef RN_TURBO_MODULE_ENABLED
#import <jsireact/RCTTurboModule.h>
namespace facebook {
namespace react {
/**
* Provide a pure C++ instance of a TurboModule, specific to this app.
*/
std::shared_ptr<TurboModule> RNTesterTurboModuleProvider(const std::string &name, std::shared_ptr<JSCallInvoker> jsInvoker);
/**
* Provide an instance of a ObjCTurboModule, given the ObjC instance, specific to this app.
*/
std::shared_ptr<TurboModule> RNTesterTurboModuleProvider(const std::string &name,
id<RCTTurboModule> instance,
std::shared_ptr<JSCallInvoker> jsInvoker);
} // namespace react
} // namespace facebook
#endif

Просмотреть файл

@ -0,0 +1,42 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
#ifdef RN_TURBO_MODULE_ENABLED
#import "RNTesterTurboModuleProvider.h"
#import <jsireact/RCTSampleTurboCxxModule.h>
#import <jsireact/RCTSampleTurboModule.h>
// NOTE: This entire file should be codegen'ed.
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> RNTesterTurboModuleProvider(const std::string &name, std::shared_ptr<JSCallInvoker> jsInvoker) {
if (name == "SampleTurboCxxModule") {
return std::make_shared<SampleTurboCxxModule>(jsInvoker);
}
return nullptr;
}
std::shared_ptr<TurboModule> RNTesterTurboModuleProvider(const std::string &name,
id<RCTTurboModule> instance,
std::shared_ptr<JSCallInvoker> jsInvoker) {
if (name == "SampleTurboModule") {
return std::make_shared<NativeSampleTurboModuleSpecJSI>(instance, jsInvoker);
}
return nullptr;
}
} // namespace react
} // namespace facebook
#endif

Просмотреть файл

@ -17,6 +17,7 @@
3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; };
3D56F9F11D6F6E9B00F53A06 /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */; }; 3D56F9F11D6F6E9B00F53A06 /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3D13F83E1D6F6AE000E69E0E /* RNTesterBundle.bundle */; };
5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; };
5CB07C9B226467E60039471C /* RNTesterTurboModuleProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB07C99226467E60039471C /* RNTesterTurboModuleProvider.mm */; };
68D134442238528800D0B233 /* Swizzle_RCTFabricSurface.m in Sources */ = {isa = PBXBuildFile; fileRef = 68D134432238528800D0B233 /* Swizzle_RCTFabricSurface.m */; }; 68D134442238528800D0B233 /* Swizzle_RCTFabricSurface.m in Sources */ = {isa = PBXBuildFile; fileRef = 68D134432238528800D0B233 /* Swizzle_RCTFabricSurface.m */; };
68E1E4BC2230DF2F00570185 /* ComponentRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68E1E4BB2230DF2F00570185 /* ComponentRegistry.cpp */; }; 68E1E4BC2230DF2F00570185 /* ComponentRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 68E1E4BB2230DF2F00570185 /* ComponentRegistry.cpp */; };
B9C5BB1881F54450DBCA70F5 /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8508AD3C1DC3509924E63948 /* libPods-RNTester.a */; }; B9C5BB1881F54450DBCA70F5 /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8508AD3C1DC3509924E63948 /* libPods-RNTester.a */; };
@ -50,6 +51,8 @@
3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "RNTester/legacy_image@2x.png"; sourceTree = "<group>"; }; 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "RNTester/legacy_image@2x.png"; sourceTree = "<group>"; };
5BEC8567F3741044B6A5EFC5 /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Pods/Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = "<group>"; }; 5BEC8567F3741044B6A5EFC5 /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Pods/Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = "<group>"; };
5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = "<group>"; }; 5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = "<group>"; };
5CB07C99226467E60039471C /* RNTesterTurboModuleProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RNTesterTurboModuleProvider.mm; path = RNTester/RNTesterTurboModuleProvider.mm; sourceTree = "<group>"; };
5CB07C9A226467E60039471C /* RNTesterTurboModuleProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNTesterTurboModuleProvider.h; path = RNTester/RNTesterTurboModuleProvider.h; sourceTree = "<group>"; };
68D134432238528800D0B233 /* Swizzle_RCTFabricSurface.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Swizzle_RCTFabricSurface.m; sourceTree = "<group>"; }; 68D134432238528800D0B233 /* Swizzle_RCTFabricSurface.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Swizzle_RCTFabricSurface.m; sourceTree = "<group>"; };
68E1E4BB2230DF2F00570185 /* ComponentRegistry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentRegistry.cpp; sourceTree = "<group>"; }; 68E1E4BB2230DF2F00570185 /* ComponentRegistry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentRegistry.cpp; sourceTree = "<group>"; };
8508AD3C1DC3509924E63948 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8508AD3C1DC3509924E63948 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; };
@ -89,6 +92,8 @@
children = ( children = (
13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
5C60EB1B226440DB0018C04F /* AppDelegate.mm */, 5C60EB1B226440DB0018C04F /* AppDelegate.mm */,
5CB07C9A226467E60039471C /* RNTesterTurboModuleProvider.h */,
5CB07C99226467E60039471C /* RNTesterTurboModuleProvider.mm */,
13B07FB71A68108700A75B9A /* main.m */, 13B07FB71A68108700A75B9A /* main.m */,
2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */, 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */,
13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
@ -329,6 +334,7 @@
68E1E4BC2230DF2F00570185 /* ComponentRegistry.cpp in Sources */, 68E1E4BC2230DF2F00570185 /* ComponentRegistry.cpp in Sources */,
272E6B3F1BEA849E001FCF37 /* UpdatePropertiesExampleView.m in Sources */, 272E6B3F1BEA849E001FCF37 /* UpdatePropertiesExampleView.m in Sources */,
68D134442238528800D0B233 /* Swizzle_RCTFabricSurface.m in Sources */, 68D134442238528800D0B233 /* Swizzle_RCTFabricSurface.m in Sources */,
5CB07C9B226467E60039471C /* RNTesterTurboModuleProvider.mm in Sources */,
27F441EC1BEBE5030039B79C /* FlexibleSizeExampleView.m in Sources */, 27F441EC1BEBE5030039B79C /* FlexibleSizeExampleView.m in Sources */,
5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */, 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */,
13B07FC11A68108700A75B9A /* main.m in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */,

Просмотреть файл

@ -43,6 +43,6 @@ Pod::Spec.new do |s|
s.subspec "core-ios" do |ss| s.subspec "core-ios" do |ss|
ss.source_files = "platform/ios/*.{mm,cpp,h}" ss.source_files = "platform/ios/*.{mm,cpp,h}"
ss.header_dir = "React" ss.header_dir = "jsireact"
end end
end end

Просмотреть файл

@ -0,0 +1,49 @@
# coding: utf-8
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
require "json"
package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json")))
version = package['version']
source = { :git => 'https://github.com/facebook/react-native.git' }
if version == '1000.0.0'
# This is an unpublished version, use the latest commit hash of the react-native repo, which were presumably in.
source[:commit] = `git rev-parse HEAD`.strip
else
source[:tag] = "v#{version}"
end
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
folly_version = '2018.10.22.00'
boost_compiler_flags = '-Wno-documentation'
Pod::Spec.new do |s|
s.name = "React-turbomodule-samples"
s.version = version
s.summary = "-" # TODO
s.homepage = "http://facebook.github.io/react-native/"
s.license = package["license"]
s.author = "Facebook, Inc. and its affiliates"
s.platforms = { :ios => "9.0", :tvos => "9.2" }
s.source = source
s.source_files = "*.{cpp,h}"
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/Folly\"" }
s.header_dir = "jsireact"
s.xcconfig = { "OTHER_CFLAGS" => "$(inherited) -DRN_TURBO_MODULE_ENABLED" }
s.dependency "React-Core", version
s.dependency "React-cxxreact", version
s.dependency "React-jsi", version
s.dependency "React-turbomodule-core", version
s.dependency "Folly", folly_version
s.subspec "samples-ios" do |ss|
ss.source_files = "platform/ios/*.{mm,cpp,h}"
ss.header_dir = "jsireact"
end
end