mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
[LOCAL] Make 0.70 compatible with Xcode 15 (thanks to @AlexanderEggers for the commit in main)
This commit is contained in:
@@ -474,6 +474,60 @@ class UtilsTests < Test::Unit::TestCase
|
||||
assert_equal(user_project_mock.save_invocation_count, 1)
|
||||
end
|
||||
|
||||
# ================================= #
|
||||
# Test - Apply Xcode 15 Patch #
|
||||
# ================================= #
|
||||
|
||||
def test_applyXcode15Patch_correctlyAppliesNecessaryPatch
|
||||
# Arrange
|
||||
first_target = prepare_target("FirstTarget")
|
||||
second_target = prepare_target("SecondTarget")
|
||||
third_target = TargetMock.new("ThirdTarget", [
|
||||
BuildConfigurationMock.new("Debug", {
|
||||
"GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
|
||||
}),
|
||||
BuildConfigurationMock.new("Release", {
|
||||
"GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
|
||||
}),
|
||||
], nil)
|
||||
|
||||
user_project_mock = UserProjectMock.new("a/path", [
|
||||
prepare_config("Debug"),
|
||||
prepare_config("Release"),
|
||||
],
|
||||
:native_targets => [
|
||||
first_target,
|
||||
second_target
|
||||
]
|
||||
)
|
||||
pods_projects_mock = PodsProjectMock.new([], {"hermes-engine" => {}}, :native_targets => [
|
||||
third_target
|
||||
])
|
||||
installer = InstallerMock.new(pods_projects_mock, [
|
||||
AggregatedProjectMock.new(user_project_mock)
|
||||
])
|
||||
|
||||
# Act
|
||||
ReactNativePodsUtils.apply_xcode_15_patch(installer)
|
||||
|
||||
# Assert
|
||||
first_target.build_configurations.each do |config|
|
||||
assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
|
||||
'$(inherited) "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
|
||||
)
|
||||
end
|
||||
second_target.build_configurations.each do |config|
|
||||
assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
|
||||
'$(inherited) "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
|
||||
)
|
||||
end
|
||||
third_target.build_configurations.each do |config|
|
||||
assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
|
||||
'$(inherited) "SomeFlag=1" "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
# ==================================== #
|
||||
# Test - Set Node_Modules User Setting #
|
||||
# ==================================== #
|
||||
|
||||
@@ -119,6 +119,18 @@ class ReactNativePodsUtils
|
||||
end
|
||||
end
|
||||
|
||||
def self.apply_xcode_15_patch(installer)
|
||||
installer.target_installation_results.pod_target_installation_results
|
||||
.each do |pod_name, target_installation_result|
|
||||
target_installation_result.native_target.build_configurations.each do |config|
|
||||
# unary_function and binary_function are no longer provided in C++17 and newer standard modes as part of Xcode 15. They can be re-enabled with setting _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
|
||||
# Ref: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Deprecations
|
||||
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited) '
|
||||
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << '"_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" '
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.apply_mac_catalyst_patches(installer)
|
||||
# Fix bundle signing issues
|
||||
installer.pods_project.targets.each do |target|
|
||||
|
||||
@@ -162,6 +162,7 @@ def react_native_post_install(installer, react_native_path = "../node_modules/re
|
||||
ReactNativePodsUtils.fix_library_search_paths(installer)
|
||||
ReactNativePodsUtils.fix_react_bridging_header_search_paths(installer)
|
||||
ReactNativePodsUtils.set_node_modules_user_settings(installer, react_native_path)
|
||||
ReactNativePodsUtils.apply_xcode_15_patch(installer)
|
||||
|
||||
NewArchitectureHelper.set_clang_cxx_language_standard_if_needed(installer)
|
||||
is_new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
|
||||
|
||||
Reference in New Issue
Block a user