1load(
2    "//tools/build_defs/oss:rn_defs.bzl",
3    "ANDROID",
4    "APPLE",
5    "CXX",
6    "FBJNI_TARGET",
7    "fb_xplat_cxx_test",
8    "get_apple_compiler_flags",
9    "get_apple_inspector_flags",
10    "get_preprocessor_flags_for_build_mode",
11    "react_native_xplat_target",
12    "rn_xplat_cxx_library",
13    "subdir_glob",
14)
15
16oncall("react_native")
17
18APPLE_COMPILER_FLAGS = get_apple_compiler_flags()
19
20rn_xplat_cxx_library(
21    name = "graphics",
22    srcs = glob(
23        [
24            "*.cpp",
25        ],
26    ),
27    headers = subdir_glob(
28        [
29            ("", "*.h"),
30        ],
31        prefix = "",
32    ),
33    header_namespace = "",
34    exported_headers = subdir_glob(
35        [
36            ("", "*.h"),
37        ],
38        prefix = "react/renderer/graphics",
39    ),
40    compiler_flags_pedantic = True,
41    cxx_exported_headers = subdir_glob(
42        [
43            ("platform/cxx/react/renderer/graphics", "**/*.h"),
44        ],
45        prefix = "react/renderer/graphics",
46    ),
47    cxx_srcs = glob(
48        [
49            "platform/cxx/react/renderer/graphics/**/*.cpp",
50        ],
51    ),
52    fbandroid_allow_jni_merging = True,
53    fbandroid_deps = [
54        FBJNI_TARGET,
55        "//xplat/folly:dynamic",
56    ],
57    fbandroid_exported_headers = subdir_glob(
58        [
59            ("platform/android/react/renderer/graphics", "**/*.h"),
60        ],
61        prefix = "react/renderer/graphics",
62    ),
63    fbandroid_srcs = glob(
64        [
65            "platform/android/react/renderer/graphics/**/*.cpp",
66        ],
67    ),
68    fbobjc_compiler_flags = APPLE_COMPILER_FLAGS,
69    fbobjc_exported_headers = subdir_glob(
70        [
71            ("platform/ios/react/renderer/graphics", "*.h"),
72        ],
73        prefix = "react/renderer/graphics",
74    ),
75    fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(),
76    force_static = True,
77    ios_deps = [
78        "//xplat/js/react-native-github:RCTCxxBridge",
79        "//xplat/js/react-native-github:RCTImage",
80    ],
81    ios_frameworks = [
82        "$SDKROOT/System/Library/Frameworks/CoreGraphics.framework",
83        "$SDKROOT/System/Library/Frameworks/Foundation.framework",
84        "$SDKROOT/System/Library/Frameworks/UIKit.framework",
85    ],
86    ios_srcs = glob(
87        [
88            "platform/ios/**/*.cpp",
89            "platform/ios/**/*.mm",
90        ],
91    ),
92    labels = [
93        "pfh:ReactNative_CommonInfrastructurePlaceholder",
94    ],
95    macosx_tests_override = [],
96    platforms = (ANDROID, APPLE, CXX),
97    preprocessor_flags = [
98        "-DLOG_TAG=\"ReactNative\"",
99        "-DWITH_FBSYSTRACE=1",
100    ],
101    tests = [":tests"],
102    visibility = ["PUBLIC"],
103    deps = [
104        react_native_xplat_target("react/debug:debug"),
105        react_native_xplat_target("butter:butter"),
106        "//third-party/glog:glog",
107        "//xplat/fbsystrace:fbsystrace",
108        "//xplat/folly:hash",
109    ],
110)
111
112fb_xplat_cxx_test(
113    name = "tests",
114    srcs = glob(["tests/**/*.cpp"]),
115    headers = glob(["tests/**/*.h"]),
116    compiler_flags = [
117        "-fexceptions",
118        "-frtti",
119        "-std=c++17",
120        "-Wall",
121    ],
122    contacts = ["[email protected]"],
123    platforms = (ANDROID, APPLE, CXX),
124    deps = [
125        ":graphics",
126        "//xplat/third-party/gmock:gtest",
127    ],
128)
129