forked from microsoft/react-native-macos
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add C++ header for default TurboModules and cross-platform reuse (fac…
…ebook#44361) Summary: Pull Request resolved: facebook#44361 In order to keep all platforms in sync (Android, iOS, Windows, etc.), it makes sense to consolidate all C++ TurboModules that we want available by default on all platforms to a shared C++ header / implementation. This moves the duplicated code from Android and iOS to such a shared module provider and updates relevant build specs. ## Changelog [Internal] Reviewed By: christophpurrer Differential Revision: D56835783
- Loading branch information
1 parent
9066308
commit 3d110d3
Showing
9 changed files
with
116 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
packages/react-native/ReactCommon/react/nativemodule/defaults/CMakeLists.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Copyright (c) Meta Platforms, Inc. and affiliates. | ||
# | ||
# This source code is licensed under the MIT license found in the | ||
# LICENSE file in the root directory of this source tree. | ||
|
||
cmake_minimum_required(VERSION 3.13) | ||
set(CMAKE_VERBOSE_MAKEFILE on) | ||
|
||
add_compile_options( | ||
-fexceptions | ||
-frtti | ||
-std=c++20 | ||
-Wall | ||
-Wpedantic | ||
-DLOG_TAG=\"ReactNative\") | ||
|
||
file(GLOB react_nativemodule_defaults_SRC CONFIGURE_DEPENDS *.cpp) | ||
add_library(react_nativemodule_defaults SHARED ${react_nativemodule_defaults_SRC}) | ||
|
||
target_include_directories(react_nativemodule_defaults PUBLIC ${REACT_COMMON_DIR}) | ||
|
||
target_link_libraries(react_nativemodule_defaults | ||
react_nativemodule_dom | ||
react_nativemodule_featureflags | ||
react_nativemodule_microtasks | ||
) |
32 changes: 32 additions & 0 deletions
32
packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
#include <react/nativemodule/dom/NativeDOM.h> | ||
#include <react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h> | ||
#include <react/nativemodule/microtasks/NativeMicrotasks.h> | ||
|
||
namespace facebook::react { | ||
|
||
inline std::shared_ptr<TurboModule> getCoreCxxTurboModule( | ||
const std::string& name, | ||
const std::shared_ptr<CallInvoker>& jsInvoker) { | ||
if (name == NativeReactNativeFeatureFlags::kModuleName) { | ||
return std::make_shared<NativeReactNativeFeatureFlags>(jsInvoker); | ||
} | ||
|
||
if (name == NativeMicrotasks::kModuleName) { | ||
return std::make_shared<NativeMicrotasks>(jsInvoker); | ||
} | ||
|
||
if (name == NativeDOM::kModuleName) { | ||
return std::make_shared<NativeDOM>(jsInvoker); | ||
} | ||
|
||
return nullptr; | ||
} | ||
|
||
} // namespace facebook::react |
50 changes: 50 additions & 0 deletions
50
...s/react-native/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# Copyright (c) Meta Platforms, Inc. and 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 if system("git rev-parse --git-dir > /dev/null 2>&1") | ||
else | ||
source[:tag] = "v#{version}" | ||
end | ||
|
||
header_search_paths = [] | ||
|
||
if ENV['USE_FRAMEWORKS'] | ||
header_search_paths << "\"$(PODS_TARGET_SRCROOT)/../../..\"" # this is needed to allow the defaultsnativemodule to access its own files | ||
end | ||
|
||
Pod::Spec.new do |s| | ||
s.name = "React-defaultsnativemodule" | ||
s.version = version | ||
s.summary = "React Native Default native modules" | ||
s.homepage = "https://reactnative.dev/" | ||
s.license = package["license"] | ||
s.author = "Meta Platforms, Inc. and its affiliates" | ||
s.platforms = min_supported_versions | ||
s.source = source | ||
s.source_files = "*.{cpp,h}" | ||
s.header_dir = "react/nativemodule/defaults" | ||
s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20", | ||
"HEADER_SEARCH_PATHS" => header_search_paths.join(' '), | ||
"DEFINES_MODULE" => "YES" } | ||
|
||
if ENV['USE_FRAMEWORKS'] | ||
s.module_name = "React_defaultsnativemodule" | ||
s.header_mappings_dir = "../.." | ||
end | ||
|
||
install_modules_dependencies(s) | ||
|
||
s.dependency "React-domnativemodule" | ||
s.dependency "React-featureflagsnativemodule" | ||
s.dependency "React-microtasksnativemodule" | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters