Skip to content

Commit 84d57fa

Browse files
TurboModules: Simplify React-bridging usage (facebook#35212)
Summary: Pull Request resolved: facebook#35212 A previous change - facebook#34011 - already fixed basic usage of <react/bridging/.../ imports. However that change was only tailored towards the usage of: <react/bridging/CallbackWrapper.h> Any other header besides <react/bridging/CallbackWrapper.h> from <react/bridging/... can't be imported at this in Xcode .... which is bad. For C++ TurboModules we need to be able to access *any* <react/bridging/...> header via the React-Codegen CocoaPod. Hence adding bridging now as a sub-spec to the ReactCommon CocoaPod Changelog: [Internal] Differential Revision: D41057878 fbshipit-source-id: 13995636132576cbe325473db667e45aea3cf489
1 parent f0b7cbe commit 84d57fa

8 files changed

+15
-102
lines changed

ReactCommon/React-bridging.podspec

Lines changed: 0 additions & 43 deletions
This file was deleted.

ReactCommon/ReactCommon.podspec

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,14 @@ Pod::Spec.new do |s|
3232
s.source = source
3333
s.header_dir = "ReactCommon" # Use global header_dir for all subspecs for use_frameworks! compatibility
3434
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
35-
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Headers/Private/React-Core\" \"$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers\"",
35+
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
3636
"USE_HEADERMAP" => "YES",
3737
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
3838
"GCC_WARN_PEDANTIC" => "YES" }
3939

4040
# TODO (T48588859): Restructure this target to align with dir structure: "react/nativemodule/..."
4141
# Note: Update this only when ready to minimize breaking changes.
4242
s.subspec "turbomodule" do |ss|
43-
ss.dependency "React-bridging", version
4443
ss.dependency "React-callinvoker", version
4544
ss.dependency "React-perflogger", version
4645
ss.dependency "React-Core", version
@@ -51,6 +50,14 @@ Pod::Spec.new do |s|
5150
ss.dependency "DoubleConversion"
5251
ss.dependency "glog"
5352

53+
ss.subspec "bridging" do |sss|
54+
sss.dependency "React-jsi", version
55+
sss.source_files = "react/bridging/**/*.{cpp,h}"
56+
sss.exclude_files = "react/bridging/tests"
57+
sss.header_dir = "react/bridging"
58+
sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
59+
end
60+
5461
ss.subspec "core" do |sss|
5562
sss.source_files = "react/nativemodule/core/ReactCommon/**/*.{cpp,h}",
5663
"react/nativemodule/core/platform/ios/**/*.{mm,cpp,h}"

scripts/cocoapods/__tests__/codegen_utils-test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ def get_podspec_no_fabric_no_script
466466
"React-Core": ["99.98.97"],
467467
"React-jsi": ["99.98.97"],
468468
"hermes-engine": ["99.98.97"],
469+
"ReactCommon/turbomodule/bridging": ["99.98.97"],
469470
"ReactCommon/turbomodule/core": ["99.98.97"]
470471
}
471472
}

scripts/cocoapods/__tests__/new_architecture-test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ def test_installModulesDependencies_whenNewArchEnabledAndNewArchAndNoSearchPaths
134134
{ :dependency_name => "React-Codegen" },
135135
{ :dependency_name => "RCTRequired" },
136136
{ :dependency_name => "RCTTypeSafety" },
137+
{ :dependency_name => "ReactCommon/turbomodule/bridging" },
137138
{ :dependency_name => "ReactCommon/turbomodule/core" }
138139
])
139140
end

scripts/cocoapods/__tests__/utils-test.rb

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -328,60 +328,6 @@ def test_fixLibrarySearchPaths_correctlySetsTheSearchPathsForAllProjects
328328
assert_equal(pods_projects_mock.save_invocation_count, 1)
329329
end
330330

331-
# ============================================= #
332-
# Test - Fix React-bridging Header Search Paths #
333-
# ============================================= #
334-
335-
def test_fixReactBridgingHeaderSearchPaths_correctlySetsTheHeaderSearchPathsForAllTargets
336-
# Arrange
337-
first_target = prepare_target("FirstTarget")
338-
second_target = prepare_target("SecondTarget")
339-
third_target = TargetMock.new("ThirdTarget", [
340-
BuildConfigurationMock.new("Debug", {
341-
"HEADER_SEARCH_PATHS" => '$(inherited) "${PODS_ROOT}/Headers/Public" '
342-
}),
343-
BuildConfigurationMock.new("Release", {
344-
"HEADER_SEARCH_PATHS" => '$(inherited) "${PODS_ROOT}/Headers/Public" '
345-
}),
346-
], nil)
347-
348-
user_project_mock = UserProjectMock.new("a/path", [
349-
prepare_config("Debug"),
350-
prepare_config("Release"),
351-
],
352-
:native_targets => [
353-
first_target,
354-
second_target
355-
]
356-
)
357-
pods_projects_mock = PodsProjectMock.new([], {"hermes-engine" => {}}, :native_targets => [
358-
third_target
359-
])
360-
installer = InstallerMock.new(pods_projects_mock, [
361-
AggregatedProjectMock.new(user_project_mock)
362-
])
363-
364-
# Act
365-
ReactNativePodsUtils.fix_react_bridging_header_search_paths(installer)
366-
367-
# Assert
368-
first_target.build_configurations.each do |config|
369-
assert_equal(config.build_settings["HEADER_SEARCH_PATHS"].strip,
370-
'$(inherited) "$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" "$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers"'
371-
)
372-
end
373-
second_target.build_configurations.each do |config|
374-
assert_equal(config.build_settings["HEADER_SEARCH_PATHS"].strip,
375-
'$(inherited) "$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" "$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers"'
376-
)
377-
end
378-
third_target.build_configurations.each do |config|
379-
assert_equal(config.build_settings["HEADER_SEARCH_PATHS"].strip,
380-
'$(inherited) "${PODS_ROOT}/Headers/Public" "$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" "$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers"'
381-
)
382-
end
383-
end
384-
385331
# ===================================== #
386332
# Test - Apply Xcode14 React-Core patch #
387333
# ===================================== #

scripts/cocoapods/codegen_utils.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,14 @@ def get_react_codegen_spec(package_json_file, folly_version: '2021.07.22.00', fa
9898
].join(' ')
9999
},
100100
'dependencies': {
101-
"FBReactNativeSpec": [version],
102-
"React-jsiexecutor": [version],
101+
"FBReactNativeSpec": [version],
102+
"React-jsiexecutor": [version],
103103
"RCT-Folly": [folly_version],
104104
"RCTRequired": [version],
105105
"RCTTypeSafety": [version],
106106
"React-Core": [version],
107107
"React-jsi": [version],
108+
"ReactCommon/turbomodule/bridging": [version],
108109
"ReactCommon/turbomodule/core": [version]
109110
}
110111
}

scripts/cocoapods/new_architecture.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def self.install_modules_dependencies(spec, new_arch_enabled, folly_version)
8787

8888
spec.dependency "RCTRequired"
8989
spec.dependency "RCTTypeSafety"
90+
spec.dependency "ReactCommon/turbomodule/bridging"
9091
spec.dependency "ReactCommon/turbomodule/core"
9192
end
9293
end

scripts/react_native_pods.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ def use_react_native! (
9393
pod 'React-RCTVibration', :path => "#{prefix}/Libraries/Vibration"
9494
pod 'React-Core/RCTWebSocket', :path => "#{prefix}/"
9595

96-
pod 'React-bridging', :path => "#{prefix}/ReactCommon"
9796
pod 'React-cxxreact', :path => "#{prefix}/ReactCommon/cxxreact"
9897

9998
if hermes_enabled

0 commit comments

Comments
 (0)