Skip to content

Commit

Permalink
Move hermes to a separate podspec (#30478)
Browse files Browse the repository at this point in the history
Summary:
Hermes being a subspec of ReactCore causes some build issues when RN is included in 2 different targets. It also causes it to include a lot of additional dependencies that it doesn't need. This moves it to a separate podspec loosely based on other specs in ReactCommon.

[iOS] [Fixed] - Move hermes to a separate podspec

Pull Request resolved: #30478

Test Plan: Test that it builds and run properly in an app

Reviewed By: fkgozali

Differential Revision: D25308237

Pulled By: hramos

fbshipit-source-id: b4cc44ea2b1b854831e881dbbf9a2f30f6704001
  • Loading branch information
janicduplessis authored and grabbou committed Mar 1, 2021
1 parent 375cd9d commit 26d1d46
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 14 deletions.
11 changes: 0 additions & 11 deletions React-Core.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,6 @@ Pod::Spec.new do |s|
ss.private_header_files = "React/Cxx*/*.h"
end

s.subspec "Hermes" do |ss|
ss.platforms = { :osx => "10.14", :ios => "10.0" }
ss.source_files = "ReactCommon/hermes/executor/*.{cpp,h}",
"ReactCommon/hermes/inspector/*.{cpp,h}",
"ReactCommon/hermes/inspector/chrome/*.{cpp,h}",
"ReactCommon/hermes/inspector/detail/*.{cpp,h}"
ss.pod_target_xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "HERMES_ENABLE_DEBUGGER=1" }
ss.dependency "RCT-Folly/Futures"
ss.dependency "hermes-engine"
end

s.subspec "DevSupport" do |ss|
ss.source_files = "React/DevSupport/*.{h,mm,m}",
"React/Inspector/*.{h,mm,m}"
Expand Down
2 changes: 1 addition & 1 deletion React/CxxBridge/RCTCxxBridge.mm
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#define RCT_USE_HERMES 1
#endif
#if RCT_USE_HERMES
#import "HermesExecutorFactory.h"
#import <reacthermes/HermesExecutorFactory.h">
#else
#import "JSCExecutorFactory.h"
#endif
Expand Down
53 changes: 53 additions & 0 deletions ReactCommon/hermes/React-hermes.podspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Copyright (c) Facebook, Inc. and its 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
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'
folly_version = '2020.01.13.00'
boost_compiler_flags = '-Wno-documentation'

Pod::Spec.new do |s|
s.name = "React-hermes"
s.version = version
s.summary = "-" # TODO
s.homepage = "https://reactnative.dev/"
s.license = package["license"]
s.author = "Facebook, Inc. and its affiliates"
s.platforms = { :osx => "10.14", :ios => "10.0" }
s.source = source
s.source_files = "executor/*.{cpp,h}",
"inspector/*.{cpp,h}",
"inspector/chrome/*.{cpp,h}",
"inspector/detail/*.{cpp,h}"
s.public_header_files = "executor/HermesExecutorFactory.h"
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
s.pod_target_xcconfig = {
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\"",
"GCC_PREPROCESSOR_DEFINITIONS" => "HERMES_ENABLE_DEBUGGER=1",
}
s.header_dir = "reacthermes"
s.dependency "React-cxxreact", version
s.dependency "React-jsi", version
s.dependency "React-jsiexecutor", version
s.dependency "React-jsinspector", version
s.dependency "React-perflogger", version
s.dependency "RCT-Folly", folly_version
s.dependency "RCT-Folly/Futures", folly_version
s.dependency "DoubleConversion"
s.dependency "glog"
s.dependency "hermes-engine"
end
2 changes: 1 addition & 1 deletion packages/rn-tester/RNTester/AppDelegate.mm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define RCT_USE_HERMES 1
#endif
#if RCT_USE_HERMES
#import <React/HermesExecutorFactory.h>
#import <reacthermes/HermesExecutorFactory.h>
#else
#import <React/JSCExecutorFactory.h>
#endif
Expand Down
2 changes: 1 addition & 1 deletion scripts/react_native_pods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def use_react_native! (options={})
end

if hermes_enabled
pod 'React-Core/Hermes', :path => "#{prefix}/"
pod 'React-hermes', :path => "#{prefix}/ReactCommon/hermes"
pod 'hermes-engine', '~> 0.7.2'
pod 'libevent', :podspec => "#{prefix}/third-party-podspecs/libevent.podspec"
end
Expand Down

0 comments on commit 26d1d46

Please sign in to comment.