Unify usage of USE_HERMES flag (#41625)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/41625

To tell React Native whether we are building with hermes or not on iOS, we were using 2 different build time flags:
- USE_HERMES
- RCT_USE_HERMES

The first was widely used by the OSS use case, while the latter was set internally.
Worse than that, their default values were the opposite and we were never setting the RCT_USE_HERMES explicitly with Cocoapods, while there was some piece of code that was trying to "smartly" detect whether Hermes was included or not.

This change unifies the behavior, removing the "smartness" in favor od a declarative approach.

## Changelog:
[Internal] - Unify the USE_HERMES flags

Reviewed By: christophpurrer

Differential Revision: D51549284

fbshipit-source-id: 829ad361e185d5b4fa227605523af3a8e590e95c
This commit is contained in:
Riccardo Cipolleschi
2023-11-27 10:46:13 -08:00
committed by Facebook GitHub Bot
parent 6d9d6def98
commit 3a045b6026
2 changed files with 4 additions and 11 deletions
+2 -1
View File
@@ -22,6 +22,7 @@ socket_rocket_version = '0.7.0'
boost_compiler_flags = '-Wno-documentation'
use_hermes = ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == '1'
use_hermes_flag = use_hermes ? "-DUSE_HERMES=1" : ""
header_subspecs = {
'CoreModulesHeaders' => 'React/CoreModules/**/*.h',
@@ -63,7 +64,7 @@ Pod::Spec.new do |s|
s.platforms = min_supported_versions
s.source = source
s.resource_bundle = { "RCTI18nStrings" => ["React/I18n/strings/*.lproj"]}
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags + ' ' + use_hermes_flag
s.header_dir = "React"
s.framework = "JavaScriptCore"
s.pod_target_xcconfig = {
@@ -41,15 +41,7 @@
#import <jsireact/JSIExecutor.h>
#import <reactperflogger/BridgeNativeModulePerfLogger.h>
#ifndef RCT_USE_HERMES
#if __has_include(<reacthermes/HermesExecutorFactory.h>)
#define RCT_USE_HERMES 1
#else
#define RCT_USE_HERMES 0
#endif
#endif
#if RCT_USE_HERMES
#if USE_HERMES
#import <reacthermes/HermesExecutorFactory.h>
#else
#import "JSCExecutorFactory.h"
@@ -423,7 +415,7 @@ struct RCTInstanceCallback : public InstanceCallback {
}
if (!executorFactory) {
auto installBindings = RCTJSIExecutorRuntimeInstaller(nullptr);
#if RCT_USE_HERMES
#if USE_HERMES
executorFactory = std::make_shared<HermesExecutorFactory>(installBindings);
#else
executorFactory = std::make_shared<JSCExecutorFactory>(installBindings);