From cffeb603debf553af655eeaf2fe93c45c51ab02a Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Tue, 24 Sep 2024 03:35:15 -0700 Subject: [PATCH] Properly set `REACTNATIVE_MERGED_SO` for autolinked libraries. (#46606) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/46606 This fixes this issue reported here: https://github.com/react-native-community/discussions-and-proposals/discussions/816#discussioncomment-10673136 reported by both SWM and Expo. The problem is that `REACTNATIVE_MERGED_SO` is not properly set for autolinked libraries so they can't access it to understand if the version of ReactNative has merged so libraries or not. This fixes it, I've tested against https://github.com/tomekzaw/repro-reactnative-merged-so reproducer provided by tomekzaw Changelog: [Android] [Fixed] - Properly set `REACTNATIVE_MERGED_SO` for autolinked libraries Reviewed By: rubennorte Differential Revision: D63262687 fbshipit-source-id: c505dce9036bb4cd0366b7ab99412368963273af --- .../tasks/GenerateAutolinkingNewArchitecturesFileTask.kt | 4 ++++ .../GenerateAutolinkingNewArchitecturesFileTaskTest.kt | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTask.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTask.kt index 751c9269722..0de22fc0eb5 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTask.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTask.kt @@ -166,6 +166,10 @@ abstract class GenerateAutolinkingNewArchitecturesFileTask : DefaultTask() { cmake_minimum_required(VERSION 3.13) set(CMAKE_VERBOSE_MAKEFILE on) + # We set REACTNATIVE_MERGED_SO so libraries/apps can selectively decide to depend on either libreactnative.so + # or link against a old prefab target (this is needed for React Native 0.76 on). + set(REACTNATIVE_MERGED_SO true) + {{ libraryIncludes }} set(AUTOLINKED_LIBRARIES diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTaskTest.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTaskTest.kt index c9a9a53aba6..7abe10595b2 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTaskTest.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateAutolinkingNewArchitecturesFileTaskTest.kt @@ -115,6 +115,10 @@ class GenerateAutolinkingNewArchitecturesFileTaskTest { cmake_minimum_required(VERSION 3.13) set(CMAKE_VERBOSE_MAKEFILE on) + # We set REACTNATIVE_MERGED_SO so libraries/apps can selectively decide to depend on either libreactnative.so + # or link against a old prefab target (this is needed for React Native 0.76 on). + set(REACTNATIVE_MERGED_SO true) + set(AUTOLINKED_LIBRARIES @@ -137,6 +141,10 @@ class GenerateAutolinkingNewArchitecturesFileTaskTest { cmake_minimum_required(VERSION 3.13) set(CMAKE_VERBOSE_MAKEFILE on) + # We set REACTNATIVE_MERGED_SO so libraries/apps can selectively decide to depend on either libreactnative.so + # or link against a old prefab target (this is needed for React Native 0.76 on). + set(REACTNATIVE_MERGED_SO true) + add_subdirectory(./a/directory/ aPackage_autolinked_build) add_subdirectory(./another/directory/ anotherPackage_autolinked_build) add_subdirectory(./another/directory/cxx/ anotherPackage_cxxmodule_autolinked_build)