mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
b3040ec624
Summary: I discovered that 0.69 could run React Native as Dynamic framework with Hermes and starting from 0.70 that's not possible anymore. This diff restore that possibility. Notice that now Hermes provisdes JSI and Dynamic Frameworks requires that all the dependencies are explicitly defined, therefore, whenever we have a pod that depended on `React-jsi`, now it also has to explicitly depends on `hermes-engine` ## Changelog [iOS][Fixed] - Add Back dynamic framework support for the Old Architecture with Hermes Reviewed By: cortinico Differential Revision: D42829728 fbshipit-source-id: a660e3b1e346ec6cf3ceb8771dd8bceb0dbcb13a
87 lines
3.8 KiB
Ruby
87 lines
3.8 KiB
Ruby
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||
#
|
||
# This source code is licensed under the MIT license found in the
|
||
# LICENSE file in the root directory of this source tree.
|
||
|
||
require "json"
|
||
|
||
package = JSON.parse(File.read(File.join(__dir__, "..", "package.json")))
|
||
version = package['version']
|
||
|
||
source = { :git => 'https://github.com/facebook/react-native.git' }
|
||
if version == '1000.0.0'
|
||
# This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
|
||
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
|
||
else
|
||
source[:tag] = "v#{version}"
|
||
end
|
||
|
||
folly_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'
|
||
folly_version = '2021.07.22.00'
|
||
boost_compiler_flags = '-Wno-documentation'
|
||
using_hermes = ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == "1"
|
||
Pod::Spec.new do |s|
|
||
s.name = "ReactCommon"
|
||
s.module_name = "ReactCommon"
|
||
s.version = version
|
||
s.summary = "-" # TODO
|
||
s.homepage = "https://reactnative.dev/"
|
||
s.license = package["license"]
|
||
s.author = "Meta Platforms, Inc. and its affiliates"
|
||
s.platforms = { :ios => "12.4" }
|
||
s.source = source
|
||
s.header_dir = "ReactCommon" # Use global header_dir for all subspecs for use_frameworks! compatibility
|
||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||
"USE_HEADERMAP" => "YES",
|
||
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
|
||
"GCC_WARN_PEDANTIC" => "YES" }
|
||
|
||
# TODO (T48588859): Restructure this target to align with dir structure: "react/nativemodule/..."
|
||
# Note: Update this only when ready to minimize breaking changes.
|
||
s.subspec "turbomodule" do |ss|
|
||
ss.dependency "React-callinvoker", version
|
||
ss.dependency "React-perflogger", version
|
||
ss.dependency "React-Core", version
|
||
ss.dependency "React-cxxreact", version
|
||
ss.dependency "React-jsi", version
|
||
ss.dependency "RCT-Folly", folly_version
|
||
s.dependency "React-logger", version
|
||
ss.dependency "DoubleConversion"
|
||
ss.dependency "glog"
|
||
if using_hermes
|
||
ss.dependency "hermes-engine"
|
||
end
|
||
|
||
ss.subspec "bridging" do |sss|
|
||
sss.dependency "React-jsi", version
|
||
sss.source_files = "react/bridging/**/*.{cpp,h}"
|
||
sss.exclude_files = "react/bridging/tests"
|
||
sss.header_dir = "react/bridging"
|
||
sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/RCT-Folly\"" }
|
||
if using_hermes
|
||
sss.dependency "hermes-engine"
|
||
end
|
||
end
|
||
|
||
ss.subspec "core" do |sss|
|
||
sss.source_files = "react/nativemodule/core/ReactCommon/**/*.{cpp,h}",
|
||
"react/nativemodule/core/platform/ios/**/*.{mm,cpp,h}"
|
||
excluded_files = ENV['USE_FRAMEWORKS'] == nil ?
|
||
"react/nativemodule/core/ReactCommon/LongLivedObject.h" :
|
||
"react/nativemodule/core/ReactCommon/{LongLivedObject,CallbackWrapper}.h"
|
||
sss.exclude_files = excluded_files
|
||
end
|
||
|
||
ss.subspec "samples" do |sss|
|
||
sss.source_files = "react/nativemodule/samples/ReactCommon/**/*.{cpp,h}",
|
||
"react/nativemodule/samples/platform/ios/**/*.{mm,cpp,h}"
|
||
sss.dependency "ReactCommon/turbomodule/core", version
|
||
end
|
||
end
|
||
|
||
s.subspec "react_debug_core" do |sss|
|
||
sss.source_files = "react/debug/*.{cpp,h}"
|
||
end
|
||
end
|