diff --git a/ReactAndroid/src/main/jni/CMakeLists.txt b/ReactAndroid/src/main/jni/CMakeLists.txt index 3eaf2652ecc..4de03502c65 100644 --- a/ReactAndroid/src/main/jni/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/CMakeLists.txt @@ -93,6 +93,7 @@ add_react_android_subdir(src/main/jni/first-party/fbjni) add_react_android_subdir(src/main/jni/first-party/fb) add_react_android_subdir(src/main/jni/first-party/fbgloginit) add_react_android_subdir(src/main/jni/first-party/yogajni) +add_react_android_subdir(src/main/jni/react/cxxcomponents) add_react_android_subdir(src/main/jni/react/jni) add_react_android_subdir(src/main/jni/react/reactperflogger) add_react_android_subdir(src/main/jni/react/jscexecutor) diff --git a/ReactAndroid/src/main/jni/react/cxxcomponents/BUCK b/ReactAndroid/src/main/jni/react/cxxcomponents/BUCK new file mode 100644 index 00000000000..1f6f4597038 --- /dev/null +++ b/ReactAndroid/src/main/jni/react/cxxcomponents/BUCK @@ -0,0 +1,46 @@ +load( + "//tools/build_defs/oss:rn_defs.bzl", + "ANDROID", + "APPLE", + "CXX", + "react_native_xplat_target", + "rn_xplat_cxx_library", + "subdir_glob", +) + +rn_xplat_cxx_library( + name = "components", + srcs = glob( + ["**/*.cpp"], + ), + headers = glob( + ["**/*.h"], + ), + header_namespace = "", + exported_headers = subdir_glob( + [ + ("", "**/*.h"), + ], + prefix = "react/cxxcomponents", + ), + force_static = True, + labels = [ + "pfh:ReactNative_CommonInfrastructurePlaceholder", + "supermodule:xplat/default/public.react_native.infra", + ], + platforms = (APPLE, ANDROID, CXX), + preprocessor_flags = [ + "-DLOG_TAG=\"ReactNative\"", + "-DWITH_FBSYSTRACE=1", + ], + soname = "libcxxcomponents.$(ext)", + tests = [":tests"], + visibility = ["PUBLIC"], + deps = [ + "//third-party/glog:glog", + "//xplat/fbsystrace:fbsystrace", + "//xplat/folly:memory", + "//xplat/folly:molly", + react_native_xplat_target("react/renderer/core:core"), + ], +) diff --git a/ReactAndroid/src/main/jni/react/cxxcomponents/CMakeLists.txt b/ReactAndroid/src/main/jni/react/cxxcomponents/CMakeLists.txt new file mode 100644 index 00000000000..b60af533acb --- /dev/null +++ b/ReactAndroid/src/main/jni/react/cxxcomponents/CMakeLists.txt @@ -0,0 +1,22 @@ +# 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++17 + -Wall + -Wpedantic + -Wno-gnu-zero-variadic-macro-arguments) + +file(GLOB_RECURSE cxxcomponents_SRC CONFIGURE_DEPENDS *.cpp *.h) + +add_library(cxxcomponents SHARED ${cxxcomponents_SRC}) + +target_include_directories(cxxcomponents PUBLIC .) +set_target_properties(cxxcomponents PROPERTIES LINKER_LANGUAGE CXX) diff --git a/ReactAndroid/src/main/jni/react/fabric/Component.h b/ReactAndroid/src/main/jni/react/cxxcomponents/Component.h similarity index 100% rename from ReactAndroid/src/main/jni/react/fabric/Component.h rename to ReactAndroid/src/main/jni/react/cxxcomponents/Component.h diff --git a/ReactAndroid/src/main/jni/react/fabric/ComponentManager.h b/ReactAndroid/src/main/jni/react/cxxcomponents/ComponentManager.h similarity index 92% rename from ReactAndroid/src/main/jni/react/fabric/ComponentManager.h rename to ReactAndroid/src/main/jni/react/cxxcomponents/ComponentManager.h index b7d5f7087d2..3f2123b8977 100644 --- a/ReactAndroid/src/main/jni/react/fabric/ComponentManager.h +++ b/ReactAndroid/src/main/jni/react/cxxcomponents/ComponentManager.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include namespace facebook::react { diff --git a/ReactAndroid/src/main/jni/react/fabric/BUCK b/ReactAndroid/src/main/jni/react/fabric/BUCK index 0a9480be3ee..2ba8a8de664 100644 --- a/ReactAndroid/src/main/jni/react/fabric/BUCK +++ b/ReactAndroid/src/main/jni/react/fabric/BUCK @@ -35,6 +35,7 @@ rn_xplat_cxx_library( react_native_xplat_target("react/renderer/componentregistry:componentregistry"), react_native_xplat_target("react/renderer/components/scrollview:scrollview"), react_native_xplat_target("runtimeexecutor:runtimeexecutor"), + "//xplat/js/react-native-github/ReactAndroid/src/main/jni/react/cxxcomponents:components", react_native_target("jni/react/jni:jni"), "//xplat/fbsystrace:fbsystrace", "//xplat/jsi:JSIDynamic", diff --git a/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt b/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt index c4d743cfa10..920103e9cb8 100644 --- a/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt @@ -18,6 +18,7 @@ target_include_directories(fabricjni PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries( fabricjni butter + cxxcomponents fb fbjni folly_runtime diff --git a/ReactAndroid/src/main/jni/react/fabric/ComponentRegistryResolver.h b/ReactAndroid/src/main/jni/react/fabric/ComponentRegistryResolver.h index 67eb046f8ff..5d8adec466a 100644 --- a/ReactAndroid/src/main/jni/react/fabric/ComponentRegistryResolver.h +++ b/ReactAndroid/src/main/jni/react/fabric/ComponentRegistryResolver.h @@ -8,7 +8,7 @@ #pragma once #include -#include +#include namespace facebook { namespace react { diff --git a/ReactAndroid/src/main/jni/react/fabric/CppComponentRegistry.h b/ReactAndroid/src/main/jni/react/fabric/CppComponentRegistry.h index f417b386e36..0354a19cde7 100644 --- a/ReactAndroid/src/main/jni/react/fabric/CppComponentRegistry.h +++ b/ReactAndroid/src/main/jni/react/fabric/CppComponentRegistry.h @@ -14,8 +14,8 @@ #include #include -#include -#include +#include +#include #include namespace facebook {