Skip to content

Commit 490673c

Browse files
committed
[WIP] feat: make hermes build for visionOS
1 parent d7cadf1 commit 490673c

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

packages/react-native/sdks/hermes-engine/hermes-engine.podspec

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ react_native_path = File.join(__dir__, "..", "..")
1212
package = JSON.parse(File.read(File.join(react_native_path, "package.json")))
1313
version = package['version']
1414

15-
source_type = hermes_source_type(version, react_native_path)
15+
# Temporaily build from source until visionOS supports prebuilt binaries
16+
source_type = HermesEngineSourceType::BUILD_FROM_GITHUB_MAIN # hermes_source_type(version, react_native_path)
1617
source = podspec_source(source_type, version, react_native_path)
1718

1819
Pod::Spec.new do |spec|
@@ -35,7 +36,7 @@ Pod::Spec.new do |spec|
3536
}
3637

3738
spec.ios.vendored_frameworks = "destroot/Library/Frameworks/ios/hermes.framework"
38-
spec.visionos.vendored_frameworks = "destroot/Library/Frameworks/visionos/hermes.framework"
39+
spec.visionos.vendored_frameworks = "destroot/Library/Frameworks/xros/hermes.framework"
3940
spec.osx.vendored_frameworks = "destroot/Library/Frameworks/macosx/hermes.framework"
4041

4142
if HermesEngineSourceType::isPrebuilt(source_type) then
@@ -133,7 +134,7 @@ Pod::Spec.new do |spec|
133134
:name => '[RN] [2] Build Hermes',
134135
:input_files => ["#{hermesc_path}/ImportHermesc.cmake"],
135136
:output_files => [
136-
"${PODS_ROOT}/hermes-engine/build/iphonesimulator/API/hermes/hermes.framework/hermes"
137+
"${PODS_ROOT}/hermes-engine/build/xrsimulator/API/hermes/hermes.framework/hermes",
137138
],
138139
:script => <<-EOS
139140
. "${REACT_NATIVE_PATH}/scripts/xcode/with-environment.sh"

packages/react-native/sdks/hermes-engine/hermes-utils.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
require 'net/http'
77
require 'rexml/document'
88

9-
HERMES_GITHUB_URL = "https://github.com/facebook/hermes.git"
9+
HERMES_GITHUB_URL = "https://github.com/okwasniewski/hermes.git"
1010

1111
module HermesEngineSourceType
1212
LOCAL_PREBUILT_TARBALL = :local_prebuilt_tarball

packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ else
2424
cmake_build_type="MinSizeRel"
2525
fi
2626

27-
deployment_target=${IPHONEOS_DEPLOYMENT_TARGET}
27+
deployment_target=${XROS_DEPLOYMENT_TARGET}
2828
if [ -z "$deployment_target" ]; then
2929
deployment_target=${MACOSX_DEPLOYMENT_TARGET}
3030
fi
@@ -71,4 +71,4 @@ echo "Copy Apple framework to destroot/Library/Frameworks"
7171

7272
cp -pfR \
7373
"${PODS_ROOT}/hermes-engine/build/${PLATFORM_NAME}/API/hermes/hermes.framework" \
74-
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/ios"
74+
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/xros"

packages/react-native/sdks/hermes-engine/utils/create-dummy-hermes-xcframework.sh

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ pushd destroot/Library/Frameworks > /dev/null || exit 1
1919

2020
echo '' > dummy.c
2121

22-
mkdir -p macosx/hermes.framework
23-
clang dummy.c -dynamiclib -o macosx/hermes.framework/hermes
22+
platforms=( "macosx" "ios" "xros" ) # Add other platforms here if needed
2423

25-
mkdir -p ios/hermes.framework
26-
clang dummy.c -dynamiclib -o ios/hermes.framework/hermes
24+
for platform in "${platforms[@]}"
25+
do
26+
mkdir -p "${platform}/hermes.framework"
27+
clang dummy.c -dynamiclib -o "${platform}/hermes.framework/hermes"
28+
done
2729

2830
rm dummy.c
2931

packages/rn-tester/Podfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def pods(target_name, options = {})
4040
# Hermes is now enabled by default.
4141
# The following line will only disable Hermes if the USE_HERMES envvar is SET to a value other than 1 (e.g. USE_HERMES=0).
4242
# TODO: Make hermes work
43-
hermes_enabled = false # !ENV.has_key?('USE_HERMES') || ENV['USE_HERMES'] == '1'
43+
hermes_enabled = !ENV.has_key?('USE_HERMES') || ENV['USE_HERMES'] == '1'
4444
puts "Configuring #{target_name} with Fabric #{fabric_enabled ? "enabled" : "disabled"}.#{hermes_enabled ? " Using Hermes engine." : ""}"
4545

4646
use_react_native!(

0 commit comments

Comments
 (0)