1*753557f6STomasz Sapetaload("@fbsource//tools/build_defs:glob_defs.bzl", "subdir_glob")
2*753557f6STomasz Sapetaload("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "APPLE", "CXX", "get_android_inspector_flags", "get_apple_compiler_flags", "get_apple_inspector_flags", "get_preprocessor_flags_for_build_mode", "react_native_xplat_target", "rn_xplat_cxx_library")
3*753557f6STomasz Sapeta
4*753557f6STomasz Sapetarn_xplat_cxx_library(
5*753557f6STomasz Sapeta    name = "module",
6*753557f6STomasz Sapeta    header_namespace = "",
7*753557f6STomasz Sapeta    exported_headers = subdir_glob(
8*753557f6STomasz Sapeta        [
9*753557f6STomasz Sapeta            ("", "CxxModule.h"),
10*753557f6STomasz Sapeta            ("", "JsArgumentHelpers.h"),
11*753557f6STomasz Sapeta            ("", "JsArgumentHelpers-inl.h"),
12*753557f6STomasz Sapeta        ],
13*753557f6STomasz Sapeta        prefix = "cxxreact",
14*753557f6STomasz Sapeta    ),
15*753557f6STomasz Sapeta    fbobjc_compiler_flags = get_apple_compiler_flags(),
16*753557f6STomasz Sapeta    force_static = True,
17*753557f6STomasz Sapeta    labels = [
18*753557f6STomasz Sapeta        "pfh:ReactNative_CommonInfrastructurePlaceholder",
19*753557f6STomasz Sapeta        "supermodule:xplat/default/public.react_native.infra",
20*753557f6STomasz Sapeta    ],
21*753557f6STomasz Sapeta    visibility = [
22*753557f6STomasz Sapeta        "PUBLIC",
23*753557f6STomasz Sapeta    ],
24*753557f6STomasz Sapeta    deps = [
25*753557f6STomasz Sapeta        "//xplat/folly:molly",
26*753557f6STomasz Sapeta    ],
27*753557f6STomasz Sapeta)
28*753557f6STomasz Sapeta
29*753557f6STomasz Sapetarn_xplat_cxx_library(
30*753557f6STomasz Sapeta    name = "jsbigstring",
31*753557f6STomasz Sapeta    srcs = [
32*753557f6STomasz Sapeta        "JSBigString.cpp",
33*753557f6STomasz Sapeta    ],
34*753557f6STomasz Sapeta    header_namespace = "",
35*753557f6STomasz Sapeta    exported_headers = subdir_glob(
36*753557f6STomasz Sapeta        [("", "JSBigString.h")],
37*753557f6STomasz Sapeta        prefix = "cxxreact",
38*753557f6STomasz Sapeta    ),
39*753557f6STomasz Sapeta    fbobjc_compiler_flags = get_apple_compiler_flags(),
40*753557f6STomasz Sapeta    force_static = True,
41*753557f6STomasz Sapeta    labels = [
42*753557f6STomasz Sapeta        "pfh:ReactNative_CommonInfrastructurePlaceholder",
43*753557f6STomasz Sapeta        "supermodule:xplat/default/public.react_native.infra",
44*753557f6STomasz Sapeta    ],
45*753557f6STomasz Sapeta    visibility = [
46*753557f6STomasz Sapeta        "PUBLIC",
47*753557f6STomasz Sapeta    ],
48*753557f6STomasz Sapeta    deps = [
49*753557f6STomasz Sapeta        "//xplat/folly:memory",
50*753557f6STomasz Sapeta        "//xplat/folly:molly",
51*753557f6STomasz Sapeta        "//xplat/folly:scope_guard",
52*753557f6STomasz Sapeta    ],
53*753557f6STomasz Sapeta)
54*753557f6STomasz Sapeta
55*753557f6STomasz Sapetarn_xplat_cxx_library(
56*753557f6STomasz Sapeta    name = "samplemodule",
57*753557f6STomasz Sapeta    srcs = ["SampleCxxModule.cpp"],
58*753557f6STomasz Sapeta    header_namespace = "",
59*753557f6STomasz Sapeta    exported_headers = ["SampleCxxModule.h"],
60*753557f6STomasz Sapeta    compiler_flags = [
61*753557f6STomasz Sapeta        "-fno-omit-frame-pointer",
62*753557f6STomasz Sapeta    ],
63*753557f6STomasz Sapeta    fbobjc_compiler_flags = get_apple_compiler_flags(),
64*753557f6STomasz Sapeta    labels = [
65*753557f6STomasz Sapeta        "pfh:ReactNative_CommonInfrastructurePlaceholder",
66*753557f6STomasz Sapeta        "supermodule:xplat/default/public.react_native.infra",
67*753557f6STomasz Sapeta    ],
68*753557f6STomasz Sapeta    soname = "libxplat_react_module_samplemodule.$(ext)",
69*753557f6STomasz Sapeta    visibility = [
70*753557f6STomasz Sapeta        "PUBLIC",
71*753557f6STomasz Sapeta    ],
72*753557f6STomasz Sapeta    deps = [
73*753557f6STomasz Sapeta        ":module",
74*753557f6STomasz Sapeta        "//third-party/glog:glog",
75*753557f6STomasz Sapeta        "//xplat/folly:memory",
76*753557f6STomasz Sapeta        "//xplat/folly:molly",
77*753557f6STomasz Sapeta    ],
78*753557f6STomasz Sapeta)
79*753557f6STomasz Sapeta
80*753557f6STomasz SapetaCXXREACT_PUBLIC_HEADERS = [
81*753557f6STomasz Sapeta    "CxxNativeModule.h",
82*753557f6STomasz Sapeta    "ErrorUtils.h",
83*753557f6STomasz Sapeta    "Instance.h",
84*753557f6STomasz Sapeta    "JSBundleType.h",
85*753557f6STomasz Sapeta    "JSExecutor.h",
86*753557f6STomasz Sapeta    "JSIndexedRAMBundle.h",
87*753557f6STomasz Sapeta    "JSModulesUnbundle.h",
88*753557f6STomasz Sapeta    "MessageQueueThread.h",
89*753557f6STomasz Sapeta    "MethodCall.h",
90*753557f6STomasz Sapeta    "ModuleRegistry.h",
91*753557f6STomasz Sapeta    "NativeModule.h",
92*753557f6STomasz Sapeta    "NativeToJsBridge.h",
93*753557f6STomasz Sapeta    "RAMBundleRegistry.h",
94*753557f6STomasz Sapeta    "ReactMarker.h",
95*753557f6STomasz Sapeta    "RecoverableError.h",
96*753557f6STomasz Sapeta    "SharedProxyCxxModule.h",
97*753557f6STomasz Sapeta    "SystraceSection.h",
98*753557f6STomasz Sapeta]
99*753557f6STomasz Sapeta
100*753557f6STomasz Sapetarn_xplat_cxx_library(
101*753557f6STomasz Sapeta    name = "bridge",
102*753557f6STomasz Sapeta    srcs = glob(
103*753557f6STomasz Sapeta        ["*.cpp"],
104*753557f6STomasz Sapeta        exclude = [
105*753557f6STomasz Sapeta            "JSBigString.cpp",
106*753557f6STomasz Sapeta            "SampleCxxModule.cpp",
107*753557f6STomasz Sapeta        ],
108*753557f6STomasz Sapeta    ),
109*753557f6STomasz Sapeta    headers = glob(
110*753557f6STomasz Sapeta        ["*.h"],
111*753557f6STomasz Sapeta        exclude = CXXREACT_PUBLIC_HEADERS,
112*753557f6STomasz Sapeta    ),
113*753557f6STomasz Sapeta    header_namespace = "",
114*753557f6STomasz Sapeta    exported_headers = dict([
115*753557f6STomasz Sapeta        (
116*753557f6STomasz Sapeta            "cxxreact/%s" % header,
117*753557f6STomasz Sapeta            header,
118*753557f6STomasz Sapeta        )
119*753557f6STomasz Sapeta        for header in CXXREACT_PUBLIC_HEADERS
120*753557f6STomasz Sapeta    ]),
121*753557f6STomasz Sapeta    fbandroid_preprocessor_flags = get_android_inspector_flags(),
122*753557f6STomasz Sapeta    fbobjc_compiler_flags = get_apple_compiler_flags(),
123*753557f6STomasz Sapeta    fbobjc_force_static = True,
124*753557f6STomasz Sapeta    fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(),
125*753557f6STomasz Sapeta    labels = [
126*753557f6STomasz Sapeta        "pfh:ReactNative_CommonInfrastructurePlaceholder",
127*753557f6STomasz Sapeta        "supermodule:xplat/default/public.react_native.infra",
128*753557f6STomasz Sapeta    ],
129*753557f6STomasz Sapeta    macosx_tests_override = [],
130*753557f6STomasz Sapeta    platforms = (ANDROID, APPLE, CXX),
131*753557f6STomasz Sapeta    preprocessor_flags = [
132*753557f6STomasz Sapeta        "-DLOG_TAG=\"ReactNative\"",
133*753557f6STomasz Sapeta        "-DWITH_FBSYSTRACE=1",
134*753557f6STomasz Sapeta    ],
135*753557f6STomasz Sapeta    tests = [
136*753557f6STomasz Sapeta        react_native_xplat_target("cxxreact/tests:tests"),
137*753557f6STomasz Sapeta    ],
138*753557f6STomasz Sapeta    visibility = ["PUBLIC"],
139*753557f6STomasz Sapeta    deps = [
140*753557f6STomasz Sapeta        ":jsbigstring",
141*753557f6STomasz Sapeta        ":module",
142*753557f6STomasz Sapeta        "//xplat/fbsystrace:fbsystrace",
143*753557f6STomasz Sapeta        "//xplat/folly:headers_only_do_not_use",
144*753557f6STomasz Sapeta        "//xplat/folly:memory",
145*753557f6STomasz Sapeta        "//xplat/folly:molly",
146*753557f6STomasz Sapeta        "//xplat/jsi:jsi",
147*753557f6STomasz Sapeta        react_native_xplat_target("callinvoker:callinvoker"),
148*753557f6STomasz Sapeta        react_native_xplat_target("jsinspector:jsinspector"),
149*753557f6STomasz Sapeta        react_native_xplat_target("runtimeexecutor:runtimeexecutor"),
150*753557f6STomasz Sapeta        react_native_xplat_target("reactperflogger:reactperflogger"),
151*753557f6STomasz Sapeta        react_native_xplat_target("logger:logger"),
152*753557f6STomasz Sapeta        "//third-party/glog:glog",
153*753557f6STomasz Sapeta        "//xplat/folly:optional",
154*753557f6STomasz Sapeta    ],
155*753557f6STomasz Sapeta)
156