From e322739ea24a2e047f4fea346ea495a6b84753e5 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 13 Feb 2024 16:55:01 -0800 Subject: [PATCH] Move CSSTokenizer to "react/renderer/css" (#42832) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/42832 Various analogs to CSS types and utilities currently exist between `core` and `components/view`. These don't really belong well with either, so this adds a top-level "css" library, and moves `CSSTokenizer` there. This is statically linked into Fabric binary on Android OSS. Changelog: [Internal] Reviewed By: rshest Differential Revision: D53377527 fbshipit-source-id: 62888966c597f1865af75ad43dfedfc401a9ab6b --- .../ReactAndroid/build.gradle.kts | 4 ++++ .../cmake-utils/ReactNative-application.cmake | 2 ++ .../ReactAndroid/src/main/jni/CMakeLists.txt | 1 + .../src/main/jni/react/fabric/CMakeLists.txt | 1 + .../ReactCommon/React-Fabric.podspec | 5 +++++ .../react/renderer/css/CMakeLists.txt | 20 +++++++++++++++++++ .../{components/view => css}/CSSTokenizer.cpp | 2 +- .../{components/view => css}/CSSTokenizer.h | 0 .../view => css}/tests/CSSTokenizerTest.cpp | 3 +-- 9 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 packages/react-native/ReactCommon/react/renderer/css/CMakeLists.txt rename packages/react-native/ReactCommon/react/renderer/{components/view => css}/CSSTokenizer.cpp (98%) rename packages/react-native/ReactCommon/react/renderer/{components/view => css}/CSSTokenizer.h (100%) rename packages/react-native/ReactCommon/react/renderer/{components/view => css}/tests/CSSTokenizerTest.cpp (98%) diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 7e0640a0e50a..5253a08e1a92 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -79,6 +79,9 @@ val preparePrefab by // migrate one library at a time. input.set( listOf( + PrefabPreprocessingEntry( + "react_render_css", + Pair("../ReactCommon/react/renderer/css/", "react/renderer/css/")), PrefabPreprocessingEntry( "react_render_debug", Pair("../ReactCommon/react/renderer/debug/", "react/renderer/debug/")), @@ -632,6 +635,7 @@ android { create("react_render_debug") { headers = File(prefabHeadersDir, "react_render_debug").absolutePath } + create("react_render_css") { headers = File(prefabHeadersDir, "react_render_css").absolutePath } create("turbomodulejsijni") { headers = File(prefabHeadersDir, "turbomodulejsijni").absolutePath } diff --git a/packages/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake b/packages/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake index 1ad0af8843db..48cb5110ebe5 100644 --- a/packages/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake +++ b/packages/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake @@ -62,6 +62,7 @@ target_compile_options(${CMAKE_PROJECT_NAME} # Prefab packages from React Native find_package(ReactAndroid REQUIRED CONFIG) +add_library(react_render_css ALIAS ReactAndroid::react_render_css) add_library(react_render_debug ALIAS ReactAndroid::react_render_debug) add_library(turbomodulejsijni ALIAS ReactAndroid::turbomodulejsijni) add_library(runtimeexecutor ALIAS ReactAndroid::runtimeexecutor) @@ -102,6 +103,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} react_cxxreactpackage # prefab ready react_render_componentregistry # prefab ready react_render_core # prefab ready + react_render_css # prefab ready react_render_debug # prefab ready react_render_graphics # prefab ready react_render_imagemanager # prefab ready diff --git a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt index 0fe09d67baa6..e406215f5438 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt @@ -79,6 +79,7 @@ add_react_common_subdir(react/renderer/scheduler) add_react_common_subdir(react/renderer/telemetry) add_react_common_subdir(react/renderer/uimanager) add_react_common_subdir(react/renderer/core) +add_react_common_subdir(react/renderer/css) add_react_common_subdir(react/renderer/element) add_react_common_subdir(react/renderer/graphics) add_react_common_subdir(react/renderer/debug) diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt index 38dfe037936a..a4407cf4d81c 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt @@ -31,6 +31,7 @@ target_link_libraries( react_render_attributedstring react_render_componentregistry react_render_core + react_render_css react_render_debug react_render_graphics react_render_imagemanager diff --git a/packages/react-native/ReactCommon/React-Fabric.podspec b/packages/react-native/ReactCommon/React-Fabric.podspec index 0963b3314aa8..11737a23798a 100644 --- a/packages/react-native/ReactCommon/React-Fabric.podspec +++ b/packages/react-native/ReactCommon/React-Fabric.podspec @@ -225,6 +225,11 @@ Pod::Spec.new do |s| end end + s.subspec "css" do |ss| + ss.source_files = "react/renderer/css/*.{cpp,h}" + ss.header_dir = "react/renderer/css" + end + s.subspec "imagemanager" do |ss| ss.dependency folly_dep_name, folly_version ss.compiler_flags = folly_compiler_flags diff --git a/packages/react-native/ReactCommon/react/renderer/css/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/css/CMakeLists.txt new file mode 100644 index 000000000000..a4834c3a0256 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/css/CMakeLists.txt @@ -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. + +cmake_minimum_required(VERSION 3.13) +set(CMAKE_VERBOSE_MAKEFILE on) + +add_compile_options( + -fexceptions + -frtti + -std=c++20 + -Wall + -Wpedantic) + +file(GLOB react_render_css_SRC CONFIGURE_DEPENDS *.cpp) +add_library(react_render_css STATIC ${react_render_css_SRC}) + +target_include_directories(react_render_css PUBLIC ${REACT_COMMON_DIR}) +target_link_libraries(react_render_css glog glog_init react_debug) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/CSSTokenizer.cpp b/packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.cpp similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/CSSTokenizer.cpp rename to packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.cpp index 945d395e4422..99ddce3a2098 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/CSSTokenizer.cpp +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/CSSTokenizer.h b/packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.h similarity index 100% rename from packages/react-native/ReactCommon/react/renderer/components/view/CSSTokenizer.h rename to packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.h diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/tests/CSSTokenizerTest.cpp b/packages/react-native/ReactCommon/react/renderer/css/tests/CSSTokenizerTest.cpp similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/tests/CSSTokenizerTest.cpp rename to packages/react-native/ReactCommon/react/renderer/css/tests/CSSTokenizerTest.cpp index 9a11a79b62cc..cac2e8885b88 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/tests/CSSTokenizerTest.cpp +++ b/packages/react-native/ReactCommon/react/renderer/css/tests/CSSTokenizerTest.cpp @@ -6,8 +6,7 @@ */ #include -#include -#include +#include namespace facebook::react {