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'
14folly_version = '2021.07.22.00'
15boost_compiler_flags = '-Wno-documentation'
16
17header_subspecs = {
18  'CoreModulesHeaders'          => 'React/CoreModules/**/*.h',
19  'RCTActionSheetHeaders'       => 'Libraries/ActionSheetIOS/*.h',
20  'RCTAnimationHeaders'         => 'Libraries/NativeAnimation/{Drivers/*,Nodes/*,*}.{h}',
21  'RCTBlobHeaders'              => 'Libraries/Blob/{ABI47_0_0RCTBlobManager,ABI47_0_0RCTFileReaderModule}.h',
22  'RCTImageHeaders'             => 'Libraries/Image/*.h',
23  'RCTLinkingHeaders'           => 'Libraries/LinkingIOS/*.h',
24  'RCTNetworkHeaders'           => 'Libraries/Network/*.h',
25  'RCTPushNotificationHeaders'  => 'Libraries/PushNotificationIOS/*.h',
26  'RCTSettingsHeaders'          => 'Libraries/Settings/*.h',
27  'RCTTextHeaders'              => 'Libraries/Text/**/*.h',
28  'RCTVibrationHeaders'         => 'Libraries/Vibration/*.h',
29}
30
31Pod::Spec.new do |s|
32  s.name                   = "ABI47_0_0React-Core"
33  s.version                = version
34  s.summary                = "The core of React Native."
35  s.homepage               = "https://reactnative.dev/"
36  s.license                = package["license"]
37  s.author                 = "Facebook, Inc. and its affiliates"
38  s.platforms              = { :ios => "12.4" }
39  s.source                 = { :path => "." }
40  s.resource_bundle        = { "ABI47_0_0AccessibilityResources" => ["React/AccessibilityResources/*.lproj"]}
41  s.compiler_flags         = folly_compiler_flags + ' ' + boost_compiler_flags
42  s.header_dir             = "ABI47_0_0React"
43  s.framework              = "JavaScriptCore"
44  s.pod_target_xcconfig    = {
45    "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/ABI47_0_0React-hermes\" \"${PODS_ROOT}/Headers/Public/ABI47_0_0hermes-engine\" \"${PODS_ROOT}/Headers/Public/FlipperKit\" \"$(PODS_ROOT)/Headers/Public/ReactCommon\" \"$(PODS_ROOT)/Headers/Public/React-RCTFabric\"",
46    "FRAMEWORK_SEARCH_PATHS" => "\"${PODS_CONFIGURATION_BUILD_DIR}/React-hermes\"",
47    "DEFINES_MODULE" => "YES",
48    "GCC_PREPROCESSOR_DEFINITIONS" => "RCT_METRO_PORT=${RCT_METRO_PORT}",
49    "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
50  }
51  s.user_target_xcconfig   = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/ABI47_0_0React-Core\""}
52  s.default_subspec        = "Default"
53
54  s.subspec "Default" do |ss|
55    ss.source_files           = "React/**/*.{c,h,m,mm,S,cpp}"
56    ss.exclude_files          = "React/CoreModules/**/*",
57                                "React/DevSupport/**/*",
58                                "React/Fabric/**/*",
59                                "React/FBReactNativeSpec/**/*",
60                                "React/Tests/**/*",
61                                "React/Inspector/**/*"
62    ss.private_header_files   = "React/Cxx*/*.h"
63  end
64
65  s.subspec "DevSupport" do |ss|
66    ss.source_files = "React/DevSupport/*.{h,mm,m}",
67                      "React/Inspector/*.{h,mm,m}"
68
69    ss.dependency "ABI47_0_0React-Core/Default", version
70    ss.dependency "ABI47_0_0React-Core/RCTWebSocket", version
71    ss.dependency "ABI47_0_0React-jsinspector", version
72  end
73
74  s.subspec "RCTWebSocket" do |ss|
75    ss.source_files = "Libraries/WebSocket/*.{h,m}"
76    ss.dependency "ABI47_0_0React-Core/Default", version
77  end
78
79  # Add a subspec containing just the headers for each
80  # pod that should live under <React/*.h>
81  header_subspecs.each do |name, headers|
82    s.subspec name do |ss|
83      ss.source_files = headers
84      ss.dependency "ABI47_0_0React-Core/Default"
85    end
86  end
87
88  s.dependency "RCT-Folly", folly_version
89  s.dependency "ABI47_0_0React-cxxreact", version
90  s.dependency "ABI47_0_0React-perflogger", version
91  s.dependency "ABI47_0_0React-jsi", version
92  s.dependency "ABI47_0_0React-jsiexecutor", version
93  s.dependency "ABI47_0_0Yoga"
94  s.dependency "glog"
95end
96