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                   = "ABI49_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                 = "Meta Platforms, 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  if ENV['USE_FRAMEWORKS']
33    s.header_mappings_dir     = File.absolute_path('./')
34    s.module_name             = 'ABI49_0_0React_Fabric'
35  end
36
37  s.dependency folly_dep_name, folly_version
38  s.dependency "ABI49_0_0React-graphics", version
39  s.dependency "ABI49_0_0React-jsiexecutor", version
40  s.dependency "ABI49_0_0RCTRequired", version
41  s.dependency "ABI49_0_0RCTTypeSafety", version
42  s.dependency "ABI49_0_0ReactCommon/turbomodule/core", version
43  s.dependency "ABI49_0_0React-jsi", version
44  s.dependency "ABI49_0_0React-logger"
45  s.dependency "glog"
46  s.dependency "DoubleConversion"
47  s.dependency "ABI49_0_0React-Core"
48  s.dependency "ABI49_0_0React-debug"
49  s.dependency "ABI49_0_0React-utils"
50  s.dependency "ABI49_0_0React-runtimescheduler"
51
52  if ENV["USE_HERMES"] == nil || ENV["USE_HERMES"] == "1"
53    s.dependency "ABI49_0_0hermes-engine"
54  else
55    s.dependency "ABI49_0_0React-jsi"
56  end
57
58  s.subspec "animations" do |ss|
59    ss.dependency             folly_dep_name, folly_version
60    ss.compiler_flags       = folly_compiler_flags
61    ss.source_files         = "react/renderer/animations/**/*.{m,mm,cpp,h}"
62    ss.exclude_files        = "react/renderer/animations/tests"
63    ss.header_dir           = "ABI49_0_0react/renderer/animations"
64  end
65
66  s.subspec "attributedstring" do |ss|
67    ss.dependency             folly_dep_name, folly_version
68    ss.compiler_flags       = folly_compiler_flags
69    ss.source_files         = "react/renderer/attributedstring/**/*.{m,mm,cpp,h}"
70    ss.exclude_files        = "react/renderer/attributedstring/tests"
71    ss.header_dir           = "ABI49_0_0react/renderer/attributedstring"
72  end
73
74  s.subspec "butter" do |ss|
75    ss.dependency             folly_dep_name, folly_version
76    ss.compiler_flags       = folly_compiler_flags
77    ss.source_files         = "butter/**/*.{m,mm,cpp,h}"
78    ss.exclude_files        = "butter/tests"
79    ss.header_dir           = "ABI49_0_0butter"
80  end
81
82  s.subspec "config" do |ss|
83    ss.source_files         = "react/config/*.{m,mm,cpp,h}"
84    ss.header_dir           = "ABI49_0_0react/config"
85  end
86
87  s.subspec "core" do |ss|
88    header_search_path = [
89      "\"$(PODS_ROOT)/boost\"",
90      "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"",
91      "\"$(PODS_ROOT)/RCT-Folly\"",
92    ]
93
94    if ENV['USE_FRAMEWORKS']
95      header_search_path = header_search_path + [
96        "\"$(PODS_TARGET_SRCROOT)\"",
97        "\"$(PODS_ROOT)/DoubleConversion\"",
98        "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-Codegen/React_Codegen.framework/Headers\"",
99        "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"",
100        "\"$(PODS_TARGET_SRCROOT)/react/renderer/textlayoutmanager/platform/ios\"",
101        "\"$(PODS_TARGET_SRCROOT)/react/renderer/components/textinput/iostextinput\""
102      ]
103    end
104
105    ss.dependency             folly_dep_name, folly_version
106    ss.compiler_flags       = folly_compiler_flags + ' ' + boost_compiler_flags
107    ss.source_files         = "react/renderer/core/**/*.{m,mm,cpp,h}"
108    ss.exclude_files        = "react/renderer/core/tests"
109    ss.header_dir           = "ABI49_0_0react/renderer/core"
110    ss.pod_target_xcconfig  = {
111      "HEADER_SEARCH_PATHS" => header_search_path.join(" ")
112    }
113  end
114
115  s.subspec "componentregistry" do |ss|
116    ss.dependency             folly_dep_name, folly_version
117    ss.compiler_flags       = folly_compiler_flags
118    ss.source_files         = "react/renderer/componentregistry/**/*.{m,mm,cpp,h}"
119    ss.header_dir           = "ABI49_0_0react/renderer/componentregistry"
120  end
121
122  s.subspec "componentregistrynative" do |ss|
123    ss.dependency             folly_dep_name, folly_version
124    ss.compiler_flags       = folly_compiler_flags
125    ss.source_files         = "react/renderer/componentregistry/native/**/*.{m,mm,cpp,h}"
126    ss.header_dir           = "ABI49_0_0react/renderer/componentregistry/native"
127  end
128
129  s.subspec "components" do |ss|
130    ss.subspec "activityindicator" do |sss|
131      sss.dependency             folly_dep_name, folly_version
132      sss.compiler_flags       = folly_compiler_flags
133      sss.source_files         = "react/renderer/components/activityindicator/**/*.{m,mm,cpp,h}"
134      sss.exclude_files        = "react/renderer/components/activityindicator/tests"
135      sss.header_dir           = "ABI49_0_0react/renderer/components/activityindicator"
136    end
137
138    ss.subspec "image" do |sss|
139      sss.dependency             folly_dep_name, folly_version
140      sss.compiler_flags       = folly_compiler_flags
141      sss.source_files         = "react/renderer/components/image/**/*.{m,mm,cpp,h}"
142      sss.exclude_files        = "react/renderer/components/image/tests"
143      sss.header_dir           = "ABI49_0_0react/renderer/components/image"
144    end
145
146    ss.subspec "inputaccessory" do |sss|
147      sss.dependency             folly_dep_name, folly_version
148      sss.compiler_flags       = folly_compiler_flags
149      sss.source_files         = "react/renderer/components/inputaccessory/**/*.{m,mm,cpp,h}"
150      sss.exclude_files        = "react/renderer/components/inputaccessory/tests"
151      sss.header_dir           = "ABI49_0_0react/renderer/components/inputaccessory"
152    end
153
154    ss.subspec "legacyviewmanagerinterop" do |sss|
155      sss.dependency             folly_dep_name, folly_version
156      sss.compiler_flags       = folly_compiler_flags
157      sss.source_files         = "react/renderer/components/legacyviewmanagerinterop/**/*.{m,mm,cpp,h}"
158      sss.exclude_files        = "react/renderer/components/legacyviewmanagerinterop/tests"
159      sss.header_dir           = "ABI49_0_0react/renderer/components/legacyviewmanagerinterop"
160      sss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/React-Core\"" }
161    end
162
163    ss.subspec "modal" do |sss|
164      sss.dependency             folly_dep_name, folly_version
165      sss.compiler_flags       = folly_compiler_flags
166      sss.source_files         = "react/renderer/components/modal/**/*.{m,mm,cpp,h}"
167      sss.exclude_files        = "react/renderer/components/modal/tests"
168      sss.header_dir           = "ABI49_0_0react/renderer/components/modal"
169    end
170
171    ss.subspec "rncore" do |sss|
172      sss.dependency             folly_dep_name, folly_version
173      sss.compiler_flags       = folly_compiler_flags
174      sss.source_files         = "react/renderer/components/rncore/**/*.{m,mm,cpp,h}"
175      sss.header_dir           = "ABI49_0_0react/renderer/components/rncore"
176    end
177
178    ss.subspec "root" do |sss|
179      sss.dependency             folly_dep_name, folly_version
180      sss.compiler_flags       = folly_compiler_flags
181      sss.source_files         = "react/renderer/components/root/**/*.{m,mm,cpp,h}"
182      sss.exclude_files        = "react/renderer/components/root/tests"
183      sss.header_dir           = "ABI49_0_0react/renderer/components/root"
184    end
185
186    ss.subspec "safeareaview" do |sss|
187      sss.dependency             folly_dep_name, folly_version
188      sss.compiler_flags       = folly_compiler_flags
189      sss.source_files         = "react/renderer/components/safeareaview/**/*.{m,mm,cpp,h}"
190      sss.exclude_files        = "react/renderer/components/safeareaview/tests"
191      sss.header_dir           = "ABI49_0_0react/renderer/components/safeareaview"
192
193    end
194
195    ss.subspec "scrollview" do |sss|
196      sss.dependency             folly_dep_name, folly_version
197      sss.compiler_flags       = folly_compiler_flags
198      sss.source_files         = "react/renderer/components/scrollview/**/*.{m,mm,cpp,h}"
199      sss.exclude_files        = "react/renderer/components/scrollview/tests"
200      sss.header_dir           = "ABI49_0_0react/renderer/components/scrollview"
201
202    end
203
204    ss.subspec "text" do |sss|
205      sss.dependency             folly_dep_name, folly_version
206      sss.compiler_flags       = folly_compiler_flags
207      sss.source_files         = "react/renderer/components/text/**/*.{m,mm,cpp,h}"
208      sss.exclude_files        = "react/renderer/components/text/tests"
209      sss.header_dir           = "ABI49_0_0react/renderer/components/text"
210
211    end
212
213    ss.subspec "textinput" do |sss|
214      sss.dependency             folly_dep_name, folly_version
215      sss.compiler_flags       = folly_compiler_flags
216      sss.source_files         = "react/renderer/components/textinput/iostextinput/**/*.{m,mm,cpp,h}"
217      sss.exclude_files        = "react/renderer/components/textinput/iostextinput/tests"
218      sss.header_dir           = "ABI49_0_0react/renderer/components/iostextinput"
219
220    end
221
222    ss.subspec "unimplementedview" do |sss|
223      sss.dependency             folly_dep_name, folly_version
224      sss.compiler_flags       = folly_compiler_flags
225      sss.source_files         = "react/renderer/components/unimplementedview/**/*.{m,mm,cpp,h}"
226      sss.exclude_files        = "react/renderer/components/unimplementedview/tests"
227      sss.header_dir           = "ABI49_0_0react/renderer/components/unimplementedview"
228
229    end
230
231    ss.subspec "view" do |sss|
232      sss.dependency             folly_dep_name, folly_version
233      sss.dependency             "ABI49_0_0Yoga"
234      sss.compiler_flags       = folly_compiler_flags
235      sss.source_files         = "react/renderer/components/view/**/*.{m,mm,cpp,h}"
236      sss.exclude_files        = "react/renderer/components/view/tests"
237      sss.header_dir           = "ABI49_0_0react/renderer/components/view"
238
239    end
240  end
241
242  s.subspec "debug_renderer" do |ss|
243    ss.dependency             folly_dep_name, folly_version
244    ss.compiler_flags       = folly_compiler_flags
245    ss.source_files         = "react/renderer/debug/**/*.{m,mm,cpp,h}"
246    ss.exclude_files        = "react/renderer/debug/tests"
247    ss.header_dir           = "ABI49_0_0react/renderer/debug"
248  end
249
250  s.subspec "imagemanager" do |ss|
251    ss.dependency             folly_dep_name, folly_version
252    ss.compiler_flags       = folly_compiler_flags
253    ss.source_files         = "react/renderer/imagemanager/*.{m,mm,cpp,h}"
254    ss.header_dir           = "ABI49_0_0react/renderer/imagemanager"
255  end
256
257  s.subspec "mapbuffer" do |ss|
258    ss.dependency             folly_dep_name, folly_version
259    ss.compiler_flags       = folly_compiler_flags
260    ss.source_files         = "react/renderer/mapbuffer/**/*.{m,mm,cpp,h}"
261    ss.exclude_files        = "react/renderer/mapbuffer/tests"
262    ss.header_dir           = "ABI49_0_0react/renderer/mapbuffer"
263  end
264
265  s.subspec "mounting" do |ss|
266    ss.dependency             folly_dep_name, folly_version
267    ss.compiler_flags       = folly_compiler_flags
268    ss.source_files         = "react/renderer/mounting/**/*.{m,mm,cpp,h}"
269    ss.exclude_files        = "react/renderer/mounting/tests"
270    ss.header_dir           = "ABI49_0_0react/renderer/mounting"
271  end
272
273  s.subspec "scheduler" do |ss|
274    ss.dependency             folly_dep_name, folly_version
275    ss.compiler_flags       = folly_compiler_flags
276    ss.source_files         = "react/renderer/scheduler/**/*.{m,mm,cpp,h}"
277    ss.header_dir           = "ABI49_0_0react/renderer/scheduler"
278  end
279
280  s.subspec "templateprocessor" do |ss|
281    ss.dependency             folly_dep_name, folly_version
282    ss.compiler_flags       = folly_compiler_flags
283    ss.source_files         = "react/renderer/templateprocessor/**/*.{m,mm,cpp,h}"
284    ss.exclude_files        = "react/renderer/templateprocessor/tests"
285    ss.header_dir           = "ABI49_0_0react/renderer/templateprocessor"
286  end
287
288  s.subspec "textlayoutmanager" do |ss|
289    ss.dependency             folly_dep_name, folly_version
290    ss.dependency             "ABI49_0_0React-Fabric/uimanager"
291    ss.compiler_flags       = folly_compiler_flags
292    ss.source_files         = "react/renderer/textlayoutmanager/platform/ios/**/*.{m,mm,cpp,h}",
293                              "react/renderer/textlayoutmanager/*.{m,mm,cpp,h}"
294    ss.exclude_files        = "react/renderer/textlayoutmanager/tests",
295                              "react/renderer/textlayoutmanager/platform/android",
296                              "react/renderer/textlayoutmanager/platform/cxx"
297    ss.header_dir           = "ABI49_0_0react/renderer/textlayoutmanager"
298  end
299
300  s.subspec "uimanager" do |ss|
301    ss.dependency             folly_dep_name, folly_version
302    ss.compiler_flags       = folly_compiler_flags
303    ss.source_files         = "react/renderer/uimanager/**/*.{m,mm,cpp,h}"
304    ss.exclude_files        = "react/renderer/uimanager/tests"
305    ss.header_dir           = "ABI49_0_0react/renderer/uimanager"
306  end
307
308  s.subspec "telemetry" do |ss|
309    ss.dependency             folly_dep_name, folly_version
310    ss.compiler_flags       = folly_compiler_flags
311    ss.source_files         = "react/renderer/telemetry/**/*.{m,mm,cpp,h}"
312    ss.exclude_files        = "react/renderer/telemetry/tests"
313    ss.header_dir           = "ABI49_0_0react/renderer/telemetry"
314
315  end
316
317  s.subspec "leakchecker" do |ss|
318    ss.dependency             folly_dep_name, folly_version
319    ss.compiler_flags       = folly_compiler_flags
320    ss.source_files         = "react/renderer/leakchecker/**/*.{cpp,h}"
321    ss.exclude_files        = "react/renderer/leakchecker/tests"
322    ss.header_dir           = "ABI49_0_0react/renderer/leakchecker"
323    ss.pod_target_xcconfig  = { "GCC_WARN_PEDANTIC" => "YES" }
324  end
325end
326