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] Differential Revision: D56835783
- Loading branch information
1 parent
9066308
commit b3a74e9
Showing
10 changed files
with
137 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 | ||
) |
33 changes: 33 additions & 0 deletions
33
packages/react-native/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp
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,33 @@ | ||
/* | ||
* 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 "DefaultTurboModules.h" | ||
#include <react/nativemodule/dom/NativeDOM.h> | ||
#include <react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h> | ||
#include <react/nativemodule/microtasks/NativeMicrotasks.h> | ||
|
||
namespace facebook::react { | ||
|
||
/* static */ std::shared_ptr<TurboModule> DefaultTurboModules::getTurboModule( | ||
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 |
20 changes: 20 additions & 0 deletions
20
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,20 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <ReactCommon/TurboModule.h> | ||
|
||
namespace facebook::react { | ||
|
||
struct DefaultTurboModules { | ||
static std::shared_ptr<TurboModule> getTurboModule( | ||
const std::string& name, | ||
const std::shared_ptr<CallInvoker>& jsInvoker); | ||
}; | ||
|
||
} // 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