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