Skip to content

Commit a12ed2b

Browse files
coadofacebook-github-bot
authored andcommitted
Use public umbrellas in root headers (#58575)
Summary: Route public C++ dependencies through their supported umbrella entry points so framework consumers can use the root module with strict API enforcement enabled. Ensure CocoaPods dynamic-framework builds can resolve those entry points both while compiling React-Fabric and from downstream consumers. The root subspec selects the core and view umbrella subspecs so their headers are packaged, while framework header search paths live on the top-level pod target because exported root headers are also compiled from sibling subspecs such as mounting. Stage the iOS ImageRequestParams header under its canonical imagemanager include path in the prebuilt header inventory. The public ImageManager umbrella exposes this platform-specific type transitively, so framework builds need it alongside the root imagemanager headers. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D120532145
1 parent b71d466 commit a12ed2b

5 files changed

Lines changed: 34 additions & 35 deletions

File tree

‎packages/react-native/ReactCommon/React-Fabric.podspec‎

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,27 @@ end
1818

1919
react_native_path = ".."
2020

21+
header_search_path = [
22+
"\"$(PODS_TARGET_SRCROOT)/ReactCommon\"",
23+
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
24+
"\"$(PODS_TARGET_SRCROOT)\""
25+
]
26+
27+
if ENV['USE_FRAMEWORKS']
28+
header_search_path = header_search_path + [
29+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/textlayoutmanager/platform/ios\"",
30+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/scrollview/platform/cxx\"",
31+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/scrollview/platform/ios\"",
32+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/legacyviewmanagerinterop/platform/ios\"",
33+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/text/platform/cxx\"",
34+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/textinput/platform/ios\"",
35+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/view/platform/cxx\"",
36+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/view\"",
37+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/core\"",
38+
"\"$(PODS_TARGET_SRCROOT)/react/renderer/debug\"",
39+
]
40+
end
41+
2142
Pod::Spec.new do |s|
2243
s.name = "React-Fabric"
2344
s.version = version
@@ -30,7 +51,8 @@ Pod::Spec.new do |s|
3051
s.source_files = podspec_sources("dummyFile.cpp", "")
3152
s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
3253
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
33-
"DEFINES_MODULE" => "YES" }
54+
"DEFINES_MODULE" => "YES",
55+
"HEADER_SEARCH_PATHS" => header_search_path.join(" ") }
3456

3557
resolve_use_frameworks(s, header_mappings_dir: "./", module_name: "React_Fabric")
3658

@@ -89,32 +111,9 @@ Pod::Spec.new do |s|
89111
end
90112

91113
s.subspec "core" do |ss|
92-
header_search_path = [
93-
"\"$(PODS_TARGET_SRCROOT)/ReactCommon\"",
94-
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
95-
"\"$(PODS_TARGET_SRCROOT)\""
96-
]
97-
98-
if ENV['USE_FRAMEWORKS']
99-
header_search_path = header_search_path + [
100-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/textlayoutmanager/platform/ios\"",
101-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/scrollview/platform/cxx\"",
102-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/scrollview/platform/ios\"",
103-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/legacyviewmanagerinterop/platform/ios\"",
104-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/text/platform/cxx\"",
105-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/textinput/platform/ios\"",
106-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/components/view/platform/cxx\"",
107-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/core\"",
108-
"\"$(PODS_TARGET_SRCROOT)/react/renderer/debug\"",
109-
]
110-
end
111-
112114
ss.source_files = podspec_sources("react/renderer/core/**/*.{m,mm,cpp,h}", "react/renderer/core/**/*.{h}")
113115
ss.exclude_files = ["react/renderer/core/tests", "react/renderer/core/React"]
114116
ss.header_dir = "react/renderer/core"
115-
ss.pod_target_xcconfig = {
116-
"HEADER_SEARCH_PATHS" => header_search_path.join(" ")
117-
}
118117
end
119118

120119
s.subspec "coreUmbrella" do |ss|
@@ -141,6 +140,8 @@ Pod::Spec.new do |s|
141140

142141
s.subspec "components" do |ss|
143142
ss.subspec "root" do |sss|
143+
sss.dependency "React-Fabric/coreUmbrella"
144+
sss.dependency "React-Fabric/components/viewUmbrella"
144145
sss.source_files = podspec_sources("react/renderer/components/root/**/*.{m,mm,cpp,h}", "react/renderer/components/root/**/*.{h}")
145146
sss.exclude_files = "react/renderer/components/root/tests"
146147
sss.header_dir = "react/renderer/components/root"

‎packages/react-native/ReactCommon/react/renderer/components/root/RootComponentDescriptor.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
#include <react/cxxstableapi/FrameworksGuard.h>
1111

12+
#include <React/RendererCore.h>
1213
#include <react/renderer/components/root/RootShadowNode.h>
13-
#include <react/renderer/core/ConcreteComponentDescriptor.h>
1414

1515
namespace facebook::react {
1616

‎packages/react-native/ReactCommon/react/renderer/components/root/RootProps.h‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,8 @@
99

1010
#include <react/cxxstableapi/FrameworksGuard.h>
1111

12-
#include <memory>
13-
14-
#include <react/renderer/components/view/ViewProps.h>
15-
#include <react/renderer/core/LayoutConstraints.h>
16-
#include <react/renderer/core/LayoutContext.h>
17-
#include <react/renderer/core/PropsParserContext.h>
12+
#include <React/RendererCore.h>
13+
#include <React/View.h>
1814

1915
namespace facebook::react {
2016

‎packages/react-native/ReactCommon/react/renderer/components/root/RootShadowNode.h‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@
1111

1212
#include <memory>
1313

14+
#include <React/RendererCore.h>
15+
#include <React/View.h>
1416
#include <react/renderer/components/root/RootProps.h>
15-
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
16-
#include <react/renderer/core/LayoutContext.h>
17-
#include <react/renderer/core/PropsParserContext.h>
1817

1918
namespace facebook::react {
2019

‎packages/react-native/scripts/ios-prebuild/headers-config.js‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,10 @@ const PodspecExceptions /*: {[key: string]: PodSpecConfiguration} */ = {
185185

186186
{
187187
name: 'imagemanager',
188-
headerPatterns: ['react/renderer/imagemanager/*.h'],
188+
headerPatterns: [
189+
'react/renderer/imagemanager/*.h',
190+
'react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h',
191+
],
189192
headerDir: 'react/renderer/imagemanager',
190193
},
191194

0 commit comments

Comments
 (0)