load("@fbsource//tools/build_defs/apple:flag_defs.bzl", "get_preprocessor_flags_for_build_mode") load( "//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "APPLE", "CXX", "YOGA_CXX_TARGET", "fb_xplat_cxx_test", "get_apple_compiler_flags", "get_apple_inspector_flags", "react_native_xplat_target", "rn_xplat_cxx_library", "subdir_glob", ) APPLE_COMPILER_FLAGS = get_apple_compiler_flags() rn_xplat_cxx_library( name = "text", srcs = glob( ["**/*.cpp"], exclude = glob(["tests/**/*.cpp"]), ), headers = glob( ["**/*.h"], exclude = glob(["tests/**/*.h"]), ), header_namespace = "", exported_headers = subdir_glob( [ ("", "*.h"), ("basetext", "*.h"), ("paragraph", "*.h"), ("text", "*.h"), ("rawtext", "*.h"), ], prefix = "react/components/text", ), compiler_flags = [ "-fexceptions", "-frtti", "-std=c++14", "-Wall", ], cxx_tests = [":tests"], fbobjc_compiler_flags = APPLE_COMPILER_FLAGS, fbobjc_labels = ["supermodule:ios/default/public.react_native.infra"], fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(), force_static = True, platforms = (ANDROID, APPLE, CXX), preprocessor_flags = [ "-DLOG_TAG=\"ReactNative\"", "-DWITH_FBSYSTRACE=1", ], visibility = ["PUBLIC"], deps = [ "//xplat/fbsystrace:fbsystrace", "//xplat/folly:container_evicting_cache_map", "//xplat/folly:headers_only", "//xplat/folly:memory", "//xplat/folly:molly", "//xplat/third-party/glog:glog", YOGA_CXX_TARGET, react_native_xplat_target("utils:utils"), react_native_xplat_target("fabric/attributedstring:attributedstring"), react_native_xplat_target("fabric/core:core"), react_native_xplat_target("fabric/debug:debug"), react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/textlayoutmanager:textlayoutmanager"), react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/uimanager:uimanager"), ], ) fb_xplat_cxx_test( name = "tests", srcs = glob(["tests/**/*.cpp"]), headers = glob(["tests/**/*.h"]), compiler_flags = [ "-fexceptions", "-frtti", "-std=c++14", "-Wall", ], contacts = ["oncall+react_native@xmail.facebook.com"], platforms = ( # `Apple` and `Android` flavors are disabled because the module depends on `textlayoutmanager` which requires real an Emulator/Simulator to run. # At the same time, the code of tests does not rely on the simulator capabilities and it would be wasteful to add `fbandroid_use_instrumentation_test = True`. # (Beware of this option though.) # ANDROID, # APPLE, CXX ), deps = [ ":text", "//xplat/folly:molly", "//xplat/third-party/gmock:gtest", ], )