-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extracting Platform Specific TM code to break dependency cycle betwee…
…n ReactCommon and React-Core (#36461) Summary: Pull Request resolved: #36461 This change breaks a dependency cycle between `ReactCommon` and `React-Core`. `React-Core` depends on `ReactCommon` to have access to the various `TurboModule` native files. `ReactCommon` depends on `React-Core` because the content of the `core/platform/ios` folder and the `samples` folder needs to access the `RCTBridge` and other files in Core. To break the circular dependency, we introduced two new `podspecs`: * `React-NativeModulesApple` for the content of `core/platform/ios`. * `ReactCommon-Samples` for the content of the `samples` folder. In this way, the new dependencies are linear as `React-NativeModulesApple` and `ReactCommon-Samples` depends on `React-Core` and `ReactCommon` and `React-Core` only depends on `ReactCommon`. While doing this, we also make sure that all the include path are aligned, to limit the amount of breaking changes. ## Changelog: [iOS][Breaking] - Split the `ReactCommon/react/nativemodule/core/platform/ios` and `ReactCommon/react/nativemodule/samples` in two separate pods to break circular dependencies. Reviewed By: mdvacca Differential Revision: D44023865 fbshipit-source-id: a97569506350db5735ac5534b1592471de196cbe
- Loading branch information
1 parent
320e51f
commit 21d5302
Showing
25 changed files
with
340 additions
and
175 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# 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 = "React-NativeModulesApple" | ||
s.module_name = "React_NativeModulesApple" | ||
s.header_dir = "ReactCommon" # Use global header_dir for all subspecs for use_frameworks! compatibility | ||
s.version = version | ||
s.summary = "-" | ||
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.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" } | ||
if ENV['USE_FRAMEWORKS'] | ||
s.header_mappings_dir = './' | ||
end | ||
|
||
s.source_files = "ReactCommon/**/*.{mm,cpp,h}" | ||
|
||
s.dependency "ReactCommon/turbomodule/core" | ||
s.dependency "ReactCommon/turbomodule/bridging" | ||
s.dependency "React-callinvoker" | ||
s.dependency "React-Core" | ||
s.dependency "React-cxxreact" | ||
s.dependency "React-runtimeexecutor" | ||
s.dependency "React-jsi" | ||
|
||
if using_hermes | ||
s.dependency "hermes-engine" | ||
end | ||
end |
59 changes: 59 additions & 0 deletions
59
ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# 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-Samples" | ||
s.module_name = "ReactCommon_Samples" | ||
s.header_dir = "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.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\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers\"", | ||
"USE_HEADERMAP" => "YES", | ||
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17", | ||
"GCC_WARN_PEDANTIC" => "YES" } | ||
if ENV['USE_FRAMEWORKS'] | ||
s.header_mappings_dir = './' | ||
end | ||
|
||
|
||
|
||
s.source_files = "ReactCommon/**/*.{cpp,h}", | ||
"platform/ios/**/*.{mm,cpp,h}" | ||
|
||
s.dependency "RCT-Folly" | ||
s.dependency "DoubleConversion" | ||
s.dependency "ReactCommon/turbomodule/core" | ||
s.dependency "React-NativeModulesApple" | ||
s.dependency "React-Core" | ||
s.dependency "React-cxxreact" | ||
s.dependency "React-Codegen" | ||
|
||
if using_hermes | ||
s.dependency "hermes-engine" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.