From b70707b96df399e2ed6f75afe744bb5d67d188da Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 24 Nov 2022 08:45:15 -0800 Subject: [PATCH] Expose `hermes-executor` to be consumed via prefab (#35457) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/35457 This exposes `hermes-executor` to be consumed via prefab so that libraries can depend on it and use its symbols if needed (Expo and Reanimated need it). Changelog: [Internal] [Changed] - Expose `hermes-executor` to be consumed via prefab Reviewed By: cipolleschi Differential Revision: D41520019 fbshipit-source-id: d590a043ea89fdd8ff41b0ed20900c9cf381a1e4 --- ReactAndroid/build.gradle | 14 ++++++++++++-- ReactCommon/hermes/executor/CMakeLists.txt | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index f14aa4d2352..1bf06ae8826 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -174,6 +174,13 @@ final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTa "rrc_image", new Pair("../ReactCommon/react/renderer/components/image/", "react/renderer/components/image/") ), + // This prefab target is used by Expo & Reanimated to load a new instance of Hermes + new PrefabPreprocessingEntry( + "hermes-executor", + // "hermes-executor" is statically linking agaisnt "hermes-executor-common" + // and "hermes-inspector". Here we expose only the headers that we know are needed. + new Pair("../ReactCommon/hermes/inspector/", "hermes/inspector/") + ), ] ) it.outputDir.set(prefabHeadersDir) @@ -404,7 +411,6 @@ android { targets "reactnativejni", "jscexecutor", - "hermes-executor", "jsijniprofiler", "reactnativeblob", "reactperfloggerjni", @@ -427,7 +433,8 @@ android { "yoga", "folly_runtime", "react_nativemodule_core", - "react_render_imagemanager" + "react_render_imagemanager", + "hermes-executor" } } ndk { @@ -532,6 +539,9 @@ android { react_render_imagemanager { headers(new File(prefabHeadersDir, "react_render_imagemanager").absolutePath) } + "hermes-executor" { + headers(new File(prefabHeadersDir, "hermes-executor").absolutePath) + } } publishing { diff --git a/ReactCommon/hermes/executor/CMakeLists.txt b/ReactCommon/hermes/executor/CMakeLists.txt index b6575a08e19..4a2f54b5984 100644 --- a/ReactCommon/hermes/executor/CMakeLists.txt +++ b/ReactCommon/hermes/executor/CMakeLists.txt @@ -19,7 +19,8 @@ target_link_libraries(hermes-executor-common jsireact hermes-engine::libhermes jsi - debug hermes-inspector + debug + hermes-inspector ) if(${CMAKE_BUILD_TYPE} MATCHES Debug)