1*fe5cfb17STomasz Sapeta# Copyright (c) Meta Platforms, Inc. and affiliates. 2*fe5cfb17STomasz Sapeta# 3*fe5cfb17STomasz Sapeta# This source code is licensed under the MIT license found in the 4*fe5cfb17STomasz Sapeta# LICENSE file in the root directory of this source tree. 5*fe5cfb17STomasz Sapeta 6*fe5cfb17STomasz Sapetarequire "json" 7*fe5cfb17STomasz Sapeta 8*fe5cfb17STomasz Sapetapackage = JSON.parse(File.read(File.join(__dir__, "..", "package.json"))) 9*fe5cfb17STomasz Sapetaversion = package['version'] 10*fe5cfb17STomasz Sapeta 11*fe5cfb17STomasz Sapeta 12*fe5cfb17STomasz Sapeta 13*fe5cfb17STomasz Sapetafolly_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' 14*fe5cfb17STomasz Sapetafolly_version = '2021.07.22.00' 15*fe5cfb17STomasz Sapetaboost_compiler_flags = '-Wno-documentation' 16*fe5cfb17STomasz Sapetausing_hermes = ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == "1" 17*fe5cfb17STomasz SapetaPod::Spec.new do |s| 18*fe5cfb17STomasz Sapeta s.name = "ABI48_0_0ReactCommon" 19*fe5cfb17STomasz Sapeta s.module_name = "ABI48_0_0ReactCommon" 20*fe5cfb17STomasz Sapeta s.version = version 21*fe5cfb17STomasz Sapeta s.summary = "-" # TODO 22*fe5cfb17STomasz Sapeta s.homepage = "https://reactnative.dev/" 23*fe5cfb17STomasz Sapeta s.license = package["license"] 24*fe5cfb17STomasz Sapeta s.author = "Facebook, Inc. and its affiliates" 25*fe5cfb17STomasz Sapeta s.platforms = { :ios => "12.4" } 26*fe5cfb17STomasz Sapeta s.source = { :path => "." } 27*fe5cfb17STomasz Sapeta s.header_dir = "ABI48_0_0ReactCommon" # Use global header_dir for all subspecs for use_frameworks! compatibility 28*fe5cfb17STomasz Sapeta s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags 29*fe5cfb17STomasz Sapeta s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Headers/Private/ABI48_0_0React-Core\"", 30*fe5cfb17STomasz Sapeta "USE_HEADERMAP" => "YES", "DEFINES_MODULE" => "YES", 31*fe5cfb17STomasz Sapeta "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", 32*fe5cfb17STomasz Sapeta "GCC_WARN_PEDANTIC" => "YES" } 33*fe5cfb17STomasz Sapeta 34*fe5cfb17STomasz Sapeta # TODO (T48588859): Restructure this target to align with dir structure: "react/nativemodule/..." 35*fe5cfb17STomasz Sapeta # Note: Update this only when ready to minimize breaking changes. 36*fe5cfb17STomasz Sapeta s.subspec "turbomodule" do |ss| 37*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0React-callinvoker", version 38*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0React-perflogger", version 39*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0React-Core", version 40*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0React-cxxreact", version 41*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0React-jsi", version 42*fe5cfb17STomasz Sapeta ss.dependency "RCT-Folly", folly_version 43*fe5cfb17STomasz Sapeta s.dependency "ABI48_0_0React-logger", version 44*fe5cfb17STomasz Sapeta ss.dependency "DoubleConversion" 45*fe5cfb17STomasz Sapeta ss.dependency "glog" 46*fe5cfb17STomasz Sapeta if using_hermes 47*fe5cfb17STomasz Sapeta ss.dependency "ABI48_0_0hermes-engine" 48*fe5cfb17STomasz Sapeta end 49*fe5cfb17STomasz Sapeta 50*fe5cfb17STomasz Sapeta ss.subspec "bridging" do |sss| 51*fe5cfb17STomasz Sapeta sss.dependency "ABI48_0_0React-jsi", version 52*fe5cfb17STomasz Sapeta sss.source_files = "react/bridging/**/*.{cpp,h}" 53*fe5cfb17STomasz Sapeta sss.exclude_files = "react/bridging/tests" 54*fe5cfb17STomasz Sapeta sss.header_dir = "ABI48_0_0react/bridging" 55*fe5cfb17STomasz Sapeta sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" } 56*fe5cfb17STomasz Sapeta if using_hermes 57*fe5cfb17STomasz Sapeta sss.dependency "ABI48_0_0hermes-engine" 58*fe5cfb17STomasz Sapeta end 59*fe5cfb17STomasz Sapeta end 60*fe5cfb17STomasz Sapeta 61*fe5cfb17STomasz Sapeta ss.subspec "core" do |sss| 62*fe5cfb17STomasz Sapeta sss.source_files = "react/nativemodule/core/ReactCommon/**/*.{cpp,h}", 63*fe5cfb17STomasz Sapeta "react/nativemodule/core/platform/ios/**/*.{mm,cpp,h}" 64*fe5cfb17STomasz Sapeta excluded_files = ENV['USE_FRAMEWORKS'] == nil ? 65*fe5cfb17STomasz Sapeta "react/nativemodule/core/ReactCommon/LongLivedObject.h" : 66*fe5cfb17STomasz Sapeta "react/nativemodule/core/ReactCommon/{LongLivedObject,CallbackWrapper}.h" 67*fe5cfb17STomasz Sapeta sss.exclude_files = excluded_files 68*fe5cfb17STomasz Sapeta end 69*fe5cfb17STomasz Sapeta 70*fe5cfb17STomasz Sapeta s.subspec "react_debug_core" do |sss| 71*fe5cfb17STomasz Sapeta sss.source_files = "react/debug/*.{cpp,h}" 72*fe5cfb17STomasz Sapeta end 73*fe5cfb17STomasz Sapeta 74*fe5cfb17STomasz Sapeta ss.subspec "samples" do |sss| 75*fe5cfb17STomasz Sapeta sss.source_files = "react/nativemodule/samples/ReactCommon/**/*.{cpp,h}", 76*fe5cfb17STomasz Sapeta "react/nativemodule/samples/platform/ios/**/*.{mm,cpp,h}" 77*fe5cfb17STomasz Sapeta sss.dependency "ABI48_0_0ReactCommon/turbomodule/core", version 78*fe5cfb17STomasz Sapeta end 79*fe5cfb17STomasz Sapeta end 80*fe5cfb17STomasz Sapetaend 81