diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index f2ceeda5348d7d..c618f77046f17c 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -254,6 +254,7 @@ def react_native_post_install(installer) cpp_flags = NEW_ARCH_OTHER_CPLUSPLUSFLAGS end modify_flags_for_new_architecture(installer, cpp_flags) + apply_xcode_15_patch(installer) end @@ -661,3 +662,16 @@ def __apply_Xcode_12_5_M1_post_install_workaround(installer) time_header = "#{Pod::Config.instance.installation_root.to_s}/Pods/RCT-Folly/folly/portability/Time.h" `sed -i -e $'s/ && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0)//' #{time_header}` end + +# Fix to build react native on Xcode 15 beta 1 +def 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