1# Copyright (c) Meta Platforms, Inc. and affiliates.
2#
3# This source code is licensed under the MIT license found in the
4# LICENSE file in the root directory of this source tree.
5
6require "json"
7
8package = JSON.parse(File.read(File.join(__dir__, "..", "package.json")))
9version = package['version']
10
11
12
13folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-gnu-zero-variadic-macro-arguments'
14folly_version = '2021.07.22.00'
15folly_dep_name = 'RCT-Folly/Fabric'
16boost_compiler_flags = '-Wno-documentation'
17react_native_path = ".."
18
19Pod::Spec.new do |s|
20  s.name                   = "ABI48_0_0React-Fabric"
21  s.version                = version
22  s.summary                = "Fabric for React Native."
23  s.homepage               = "https://reactnative.dev/"
24  s.license                = package["license"]
25  s.author                 = "Facebook, Inc. and its affiliates"
26  s.platforms              = { :ios => "12.4" }
27  s.source                 = { :path => "." }
28  s.source_files           = "dummyFile.cpp"
29  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
30                            "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" }
31
32  s.dependency folly_dep_name, folly_version
33  s.dependency "ABI48_0_0React-graphics", version
34  s.dependency "ABI48_0_0React-jsiexecutor", version
35  s.dependency "ABI48_0_0RCTRequired", version
36  s.dependency "ABI48_0_0RCTTypeSafety", version
37  s.dependency "ABI48_0_0ReactCommon/turbomodule/core", version
38  s.dependency "ABI48_0_0React-jsi", version
39
40  s.subspec "animations" do |ss|
41    ss.dependency             folly_dep_name, folly_version
42    ss.compiler_flags       = folly_compiler_flags
43    ss.source_files         = "react/renderer/animations/**/*.{m,mm,cpp,h}"
44    ss.exclude_files        = "react/renderer/animations/tests"
45    ss.header_dir           = "ABI48_0_0react/renderer/animations"
46    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
47  end
48
49  s.subspec "attributedstring" do |ss|
50    ss.dependency             folly_dep_name, folly_version
51    ss.compiler_flags       = folly_compiler_flags
52    ss.source_files         = "react/renderer/attributedstring/**/*.{m,mm,cpp,h}"
53    ss.exclude_files        = "react/renderer/attributedstring/tests"
54    ss.header_dir           = "ABI48_0_0react/renderer/attributedstring"
55    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
56  end
57
58  s.subspec "butter" do |ss|
59    ss.dependency             folly_dep_name, folly_version
60    ss.compiler_flags       = folly_compiler_flags
61    ss.source_files         = "butter/**/*.{m,mm,cpp,h}"
62    ss.exclude_files        = "butter/tests"
63    ss.header_dir           = "ABI48_0_0butter"
64    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
65  end
66
67  s.subspec "config" do |ss|
68    ss.source_files         = "react/config/*.{m,mm,cpp,h}"
69    ss.header_dir           = "ABI48_0_0react/config"
70    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"" }
71  end
72
73  s.subspec "core" do |ss|
74    ss.dependency             folly_dep_name, folly_version
75    ss.compiler_flags       = folly_compiler_flags + ' ' + boost_compiler_flags
76    ss.source_files         = "react/renderer/core/**/*.{m,mm,cpp,h}"
77    ss.exclude_files        = "react/renderer/core/tests"
78    ss.header_dir           = "ABI48_0_0react/renderer/core"
79    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
80  end
81
82  s.subspec "componentregistry" do |ss|
83    ss.dependency             folly_dep_name, folly_version
84    ss.compiler_flags       = folly_compiler_flags
85    ss.source_files         = "react/renderer/componentregistry/**/*.{m,mm,cpp,h}"
86    ss.header_dir           = "ABI48_0_0react/renderer/componentregistry"
87    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
88  end
89
90  s.subspec "componentregistrynative" do |ss|
91    ss.dependency             folly_dep_name, folly_version
92    ss.compiler_flags       = folly_compiler_flags
93    ss.source_files         = "react/renderer/componentregistry/native/**/*.{m,mm,cpp,h}"
94    ss.header_dir           = "ABI48_0_0react/renderer/componentregistry/native"
95    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
96  end
97
98  s.subspec "components" do |ss|
99    ss.subspec "activityindicator" do |sss|
100      sss.dependency             folly_dep_name, folly_version
101      sss.compiler_flags       = folly_compiler_flags
102      sss.source_files         = "react/renderer/components/activityindicator/**/*.{m,mm,cpp,h}"
103      sss.exclude_files        = "react/renderer/components/activityindicator/tests"
104      sss.header_dir           = "ABI48_0_0react/renderer/components/activityindicator"
105      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
106    end
107
108    ss.subspec "image" do |sss|
109      sss.dependency             folly_dep_name, folly_version
110      sss.compiler_flags       = folly_compiler_flags
111      sss.source_files         = "react/renderer/components/image/**/*.{m,mm,cpp,h}"
112      sss.exclude_files        = "react/renderer/components/image/tests"
113      sss.header_dir           = "ABI48_0_0react/renderer/components/image"
114      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
115    end
116
117    ss.subspec "inputaccessory" do |sss|
118      sss.dependency             folly_dep_name, folly_version
119      sss.compiler_flags       = folly_compiler_flags
120      sss.source_files         = "react/renderer/components/inputaccessory/**/*.{m,mm,cpp,h}"
121      sss.exclude_files        = "react/renderer/components/inputaccessory/tests"
122      sss.header_dir           = "ABI48_0_0react/renderer/components/inputaccessory"
123      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
124    end
125
126    ss.subspec "legacyviewmanagerinterop" do |sss|
127      sss.dependency             folly_dep_name, folly_version
128      sss.compiler_flags       = folly_compiler_flags
129      sss.source_files         = "react/renderer/components/legacyviewmanagerinterop/**/*.{m,mm,cpp,h}"
130      sss.exclude_files        = "react/renderer/components/legacyviewmanagerinterop/tests"
131      sss.header_dir           = "ABI48_0_0react/renderer/components/legacyviewmanagerinterop"
132      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/Headers/Private/React-Core\"" }
133    end
134
135    ss.subspec "modal" do |sss|
136      sss.dependency             folly_dep_name, folly_version
137      sss.compiler_flags       = folly_compiler_flags
138      sss.source_files         = "react/renderer/components/modal/**/*.{m,mm,cpp,h}"
139      sss.exclude_files        = "react/renderer/components/modal/tests"
140      sss.header_dir           = "ABI48_0_0react/renderer/components/modal"
141      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
142    end
143
144    ss.subspec "root" do |sss|
145      sss.dependency             folly_dep_name, folly_version
146      sss.compiler_flags       = folly_compiler_flags
147      sss.source_files         = "react/renderer/components/root/**/*.{m,mm,cpp,h}"
148      sss.exclude_files        = "react/renderer/components/root/tests"
149      sss.header_dir           = "ABI48_0_0react/renderer/components/root"
150      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
151    end
152
153    ss.subspec "safeareaview" do |sss|
154      sss.dependency             folly_dep_name, folly_version
155      sss.compiler_flags       = folly_compiler_flags
156      sss.source_files         = "react/renderer/components/safeareaview/**/*.{m,mm,cpp,h}"
157      sss.exclude_files        = "react/renderer/components/safeareaview/tests"
158      sss.header_dir           = "ABI48_0_0react/renderer/components/safeareaview"
159      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
160    end
161
162    ss.subspec "scrollview" do |sss|
163      sss.dependency             folly_dep_name, folly_version
164      sss.compiler_flags       = folly_compiler_flags
165      sss.source_files         = "react/renderer/components/scrollview/**/*.{m,mm,cpp,h}"
166      sss.exclude_files        = "react/renderer/components/scrollview/tests"
167      sss.header_dir           = "ABI48_0_0react/renderer/components/scrollview"
168      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
169    end
170
171    ss.subspec "slider" do |sss|
172      sss.dependency             folly_dep_name, folly_version
173      sss.compiler_flags       = folly_compiler_flags
174      sss.source_files         = "react/renderer/components/slider/**/*.{m,mm,cpp,h}"
175      sss.exclude_files        = "react/renderer/components/slider/tests/**/*",
176                                 "react/renderer/components/slider/platform/android"
177      sss.header_dir           = "ABI48_0_0react/renderer/components/slider"
178      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
179    end
180
181    ss.subspec "text" do |sss|
182      sss.dependency             folly_dep_name, folly_version
183      sss.compiler_flags       = folly_compiler_flags
184      sss.source_files         = "react/renderer/components/text/**/*.{m,mm,cpp,h}"
185      sss.exclude_files        = "react/renderer/components/text/tests"
186      sss.header_dir           = "ABI48_0_0react/renderer/components/text"
187      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
188    end
189
190    ss.subspec "textinput" do |sss|
191      sss.dependency             folly_dep_name, folly_version
192      sss.compiler_flags       = folly_compiler_flags
193      sss.source_files         = "react/renderer/components/textinput/iostextinput/**/*.{m,mm,cpp,h}"
194      sss.exclude_files        = "react/renderer/components/textinput/iostextinput/tests"
195      sss.header_dir           = "ABI48_0_0react/renderer/components/iostextinput"
196      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
197    end
198
199    ss.subspec "unimplementedview" do |sss|
200      sss.dependency             folly_dep_name, folly_version
201      sss.compiler_flags       = folly_compiler_flags
202      sss.source_files         = "react/renderer/components/unimplementedview/**/*.{m,mm,cpp,h}"
203      sss.exclude_files        = "react/renderer/components/unimplementedview/tests"
204      sss.header_dir           = "ABI48_0_0react/renderer/components/unimplementedview"
205      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
206    end
207
208    ss.subspec "view" do |sss|
209      sss.dependency             folly_dep_name, folly_version
210      sss.dependency             "ABI48_0_0Yoga"
211      sss.compiler_flags       = folly_compiler_flags
212      sss.source_files         = "react/renderer/components/view/**/*.{m,mm,cpp,h}"
213      sss.exclude_files        = "react/renderer/components/view/tests"
214      sss.header_dir           = "ABI48_0_0react/renderer/components/view"
215      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
216    end
217  end
218
219  s.subspec "debug_core" do |ss|
220    ss.dependency             folly_dep_name, folly_version
221    ss.compiler_flags       = folly_compiler_flags
222    ss.source_files         = "react/debug/**/*.{m,mm,cpp,h}"
223    ss.exclude_files        = "react/debug/tests"
224    ss.header_dir           = "ABI48_0_0react/debug"
225    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
226  end
227
228  s.subspec "debug_renderer" do |ss|
229    ss.dependency             folly_dep_name, folly_version
230    ss.compiler_flags       = folly_compiler_flags
231    ss.source_files         = "react/renderer/debug/**/*.{m,mm,cpp,h}"
232    ss.exclude_files        = "react/renderer/debug/tests"
233    ss.header_dir           = "ABI48_0_0react/renderer/debug"
234    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
235  end
236
237  s.subspec "imagemanager" do |ss|
238    ss.dependency             "ABI48_0_0React-RCTImage", version
239    ss.dependency             folly_dep_name, folly_version
240    ss.compiler_flags       = folly_compiler_flags
241    ss.source_files         = "react/renderer/imagemanager/**/*.{m,mm,cpp,h}"
242    ss.exclude_files        = "react/renderer/imagemanager/tests",
243                              "react/renderer/imagemanager/platform/android",
244                              "react/renderer/imagemanager/platform/cxx"
245    ss.header_dir           = "ABI48_0_0react/renderer/imagemanager"
246    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
247  end
248
249  s.subspec "mapbuffer" do |ss|
250    ss.dependency             folly_dep_name, folly_version
251    ss.compiler_flags       = folly_compiler_flags
252    ss.source_files         = "react/renderer/mapbuffer/**/*.{m,mm,cpp,h}"
253    ss.exclude_files        = "react/renderer/mapbuffer/tests"
254    ss.header_dir           = "ABI48_0_0react/renderer/mapbuffer"
255    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
256  end
257
258  s.subspec "mounting" do |ss|
259    ss.dependency             folly_dep_name, folly_version
260    ss.compiler_flags       = folly_compiler_flags
261    ss.source_files         = "react/renderer/mounting/**/*.{m,mm,cpp,h}"
262    ss.exclude_files        = "react/renderer/mounting/tests"
263    ss.header_dir           = "ABI48_0_0react/renderer/mounting"
264    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
265  end
266
267  s.subspec "scheduler" do |ss|
268    ss.dependency             folly_dep_name, folly_version
269    ss.compiler_flags       = folly_compiler_flags
270    ss.source_files         = "react/renderer/scheduler/**/*.{m,mm,cpp,h}"
271    ss.header_dir           = "ABI48_0_0react/renderer/scheduler"
272    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
273  end
274
275  s.subspec "templateprocessor" do |ss|
276    ss.dependency             folly_dep_name, folly_version
277    ss.compiler_flags       = folly_compiler_flags
278    ss.source_files         = "react/renderer/templateprocessor/**/*.{m,mm,cpp,h}"
279    ss.exclude_files        = "react/renderer/templateprocessor/tests"
280    ss.header_dir           = "ABI48_0_0react/renderer/templateprocessor"
281    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
282  end
283
284  s.subspec "textlayoutmanager" do |ss|
285    ss.dependency             folly_dep_name, folly_version
286    ss.dependency             "ABI48_0_0React-Fabric/uimanager"
287    ss.compiler_flags       = folly_compiler_flags
288    ss.source_files         = "react/renderer/textlayoutmanager/platform/ios/**/*.{m,mm,cpp,h}",
289                              "react/renderer/textlayoutmanager/*.{m,mm,cpp,h}"
290    ss.exclude_files        = "react/renderer/textlayoutmanager/tests",
291                              "react/renderer/textlayoutmanager/platform/android",
292                              "react/renderer/textlayoutmanager/platform/cxx"
293    ss.header_dir           = "ABI48_0_0react/renderer/textlayoutmanager"
294    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
295  end
296
297  s.subspec "uimanager" do |ss|
298    ss.dependency             folly_dep_name, folly_version
299    ss.compiler_flags       = folly_compiler_flags
300    ss.source_files         = "react/renderer/uimanager/**/*.{m,mm,cpp,h}"
301    ss.exclude_files        = "react/renderer/uimanager/tests"
302    ss.header_dir           = "ABI48_0_0react/renderer/uimanager"
303    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
304  end
305
306  s.subspec "telemetry" do |ss|
307    ss.dependency             folly_dep_name, folly_version
308    ss.compiler_flags       = folly_compiler_flags
309    ss.source_files         = "react/renderer/telemetry/**/*.{m,mm,cpp,h}"
310    ss.exclude_files        = "react/renderer/telemetry/tests"
311    ss.header_dir           = "ABI48_0_0react/renderer/telemetry"
312    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
313  end
314
315  s.subspec "leakchecker" do |ss|
316    ss.dependency             folly_dep_name, folly_version
317    ss.compiler_flags       = folly_compiler_flags
318    ss.source_files         = "react/renderer/leakchecker/**/*.{cpp,h}"
319    ss.exclude_files        = "react/renderer/leakchecker/tests"
320    ss.header_dir           = "ABI48_0_0react/renderer/leakchecker"
321    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"",
322                                "GCC_WARN_PEDANTIC" => "YES" }
323  end
324
325  s.subspec "runtimescheduler" do |ss|
326    ss.dependency             folly_dep_name, folly_version
327    ss.compiler_flags       = folly_compiler_flags
328    ss.source_files         = "react/renderer/runtimescheduler/**/*.{cpp,h}"
329    ss.exclude_files        = "react/renderer/runtimescheduler/tests"
330    ss.header_dir           = "ABI48_0_0react/renderer/runtimescheduler"
331    ss.pod_target_xcconfig  = {"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"",
332                               "GCC_WARN_PEDANTIC" => "YES" }
333  end
334
335  s.subspec "utils" do |ss|
336    ss.source_files         = "react/utils/*.{m,mm,cpp,h}"
337    ss.header_dir           = "ABI48_0_0react/utils"
338    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\""}
339  end
340
341end
342