Skip to content

Commit d3daf11

Browse files
coadometa-codesync[bot]
authored andcommitted
Let third-party pods resolve the C++ stable API guard headers (#57846)
Summary: Pull Request resolved: #57846 `install_modules_dependencies` is the helper every third-party New Architecture library calls from its own podspec, and `update_search_paths` covers the user project and the pod targets that don't go through it. Neither knew about `React-cxxstableapi`. React Native's public C++ headers are starting to include the shared guard header `<react/cxxstableapi/UmbrellaGuard.h>`. The include is unconditional, so a third-party pod that includes any guarded React Native header has to be able to resolve it. Today it can't: in the default static-library mode `$(PODS_ROOT)/Headers/Public/React-cxxstableapi` is missing from the search path, and under `use_frameworks!` the `React_cxxstableapi.framework/Headers` entry is missing. Declare the dependency and add the matching framework header search path in both places. Changelog: [iOS][Added] - Add a `React-cxxstableapi` dependency to third-party New Architecture pods so they can resolve React Native's C++ API guard headers Reviewed By: cipolleschi Differential Revision: D110052811 fbshipit-source-id: d72a8c0be4b667104a7e1b091130121f396396ba
1 parent e71fc4e commit d3daf11

4 files changed

Lines changed: 6 additions & 1 deletion

File tree

packages/react-native/scripts/cocoapods/__tests__/new_architecture-test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ def test_installModulesDependencies_whenNewArchEnabledAndNewArchAndNoSearchPaths
165165
{ :dependency_name => "React-rendererdebug" },
166166
{ :dependency_name => "React-jsi" },
167167
{ :dependency_name => "React-renderercss" },
168+
{ :dependency_name => "React-cxxstableapi" },
168169
{ :dependency_name => "hermes-engine" },
169170
{ :dependency_name => "glog" },
170171
{ :dependency_name => "boost" },
@@ -216,6 +217,7 @@ def test_installModulesDependencies_whenNewArchDisabledAndSearchPathsAndCompiler
216217
{ :dependency_name => "React-rendererdebug" },
217218
{ :dependency_name => "React-jsi" },
218219
{ :dependency_name => "React-renderercss" },
220+
{ :dependency_name => "React-cxxstableapi" },
219221
{ :dependency_name => "hermes-engine" },
220222
{ :dependency_name => "glog" },
221223
{ :dependency_name => "boost" },

packages/react-native/scripts/cocoapods/__tests__/utils-test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ def test_updateSearchPaths_whenUseFrameworks_addsSearchPaths
741741
# Assert
742742
user_project_mock.build_configurations.each do |config|
743743
received_search_path = config.build_settings["HEADER_SEARCH_PATHS"]
744-
expected_search_path = "$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-renderercss/React_renderercss.framework/Headers"
744+
expected_search_path = "$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-renderercss/React_renderercss.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-cxxstableapi/React_cxxstableapi.framework/Headers"
745745
assert_equal(expected_search_path, received_search_path)
746746
end
747747

packages/react-native/scripts/cocoapods/new_architecture.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ def self.install_modules_dependencies(spec, new_arch_enabled, folly_version = He
9696
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-ImageManager", "React_ImageManager", []))
9797
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-rendererdebug", "React_rendererdebug", []))
9898
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-renderercss", "React_renderercss", []))
99+
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-cxxstableapi", "React_cxxstableapi", []))
99100
.each { |search_path|
100101
header_search_paths << "\"#{search_path}\""
101102
}
@@ -132,6 +133,7 @@ def self.install_modules_dependencies(spec, new_arch_enabled, folly_version = He
132133
spec.dependency "React-rendererdebug"
133134
spec.dependency 'React-jsi'
134135
spec.dependency 'React-renderercss'
136+
spec.dependency 'React-cxxstableapi'
135137

136138
depend_on_js_engine(spec)
137139
add_rn_third_party_dependencies(spec)

packages/react-native/scripts/cocoapods/utils.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ def self.update_search_paths(installer)
369369
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-graphics", "React_graphics", ["react/renderer/graphics/platform/ios"]))
370370
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-featureflags", "React_featureflags", []))
371371
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-renderercss", "React_renderercss", []))
372+
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-cxxstableapi", "React_cxxstableapi", []))
372373
.each{ |search_path|
373374
header_search_paths = self.add_search_path_if_not_included(header_search_paths, search_path)
374375
}

0 commit comments

Comments
 (0)