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