320 строки
9.2 KiB
Python
320 строки
9.2 KiB
Python
load("@fbsource//xplat/hermes/defs:hermes.bzl", "HERMES_BYTECODE_VERSION")
|
|
load("//tools/build_defs:fb_native_wrapper.bzl", "fb_native")
|
|
load("//tools/build_defs:fb_xplat_platform_specific_rule.bzl", "fb_xplat_platform_specific_rule")
|
|
load("//tools/build_defs:fb_xplat_resource.bzl", "fb_xplat_resource")
|
|
load("//tools/build_defs/apple:fb_apple_asset_catalog.bzl", "fb_apple_asset_catalog")
|
|
load("//tools/build_defs/apple:fb_apple_bundle.bzl", "fb_apple_bundle")
|
|
load("//tools/build_defs/apple:fb_apple_test.bzl", "fb_apple_test")
|
|
load("//tools/build_defs/apple:fb_js_dep.bzl", "rn_js_bundle_dep")
|
|
load("//tools/build_defs/apple:flag_defs.bzl", "get_objc_arc_preprocessor_flags", "get_preprocessor_flags_for_build_mode")
|
|
load("//tools/build_defs/oss:metro_defs.bzl", "rn_library")
|
|
load(
|
|
"//tools/build_defs/oss:rn_defs.bzl",
|
|
"APPLE",
|
|
"YOGA_APPLE_TARGET",
|
|
"js_glob",
|
|
"make_resource_glob",
|
|
"react_fabric_component_plugin_provider",
|
|
"react_module_plugin_providers",
|
|
"rn_apple_library",
|
|
"rn_extra_build_flags",
|
|
"rn_xplat_cxx_library2",
|
|
)
|
|
load("//tools/build_defs/third_party:yarn_defs.bzl", "yarn_workspace")
|
|
|
|
yarn_workspace(
|
|
name = "yarn-workspace",
|
|
srcs = glob(
|
|
["**/*.js"],
|
|
exclude = [
|
|
"**/__fixtures__/**",
|
|
"**/__flowtests__/**",
|
|
"**/__mocks__/**",
|
|
"**/__server_snapshot_tests__/**",
|
|
"**/__tests__/**",
|
|
"**/node_modules/**",
|
|
"**/node_modules/.bin/**",
|
|
"**/.*",
|
|
"**/.*/**",
|
|
"**/.*/.*",
|
|
"**/*.xcodeproj/**",
|
|
"**/*.xcworkspace/**",
|
|
],
|
|
),
|
|
visibility = ["PUBLIC"],
|
|
)
|
|
|
|
rn_library(
|
|
name = "rn-tester",
|
|
srcs = js_glob(
|
|
[
|
|
"js",
|
|
"NativeModuleExample",
|
|
"NativeComponentExample",
|
|
"RCTTest",
|
|
],
|
|
excludes = [
|
|
"**/__*__/**",
|
|
"**/*.md",
|
|
"js/examples/WebSocket/http_test_server.js",
|
|
"js/examples/WebSocket/websocket_test_server.js",
|
|
],
|
|
),
|
|
codegen_components = True,
|
|
labels = ["supermodule:xplat/default/public.react_native.playground"],
|
|
native_component_spec_name = "MyNativeViewSpec",
|
|
skip_processors = True,
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
"//xplat/js:node_modules__nullthrows",
|
|
"//xplat/js/RKJSModules/Libraries/Core:Core",
|
|
"//xplat/js/RKJSModules/vendor/react:react",
|
|
"//xplat/js/react-native-github:react-native",
|
|
"//xplat/js/react-native-github/packages/assets:assets",
|
|
],
|
|
)
|
|
|
|
fb_native.filegroup(
|
|
name = "nativecomponent-srcs",
|
|
srcs = glob(
|
|
[
|
|
"**/*NativeComponent.js",
|
|
],
|
|
exclude = [
|
|
"NativeComponentExample/**/*",
|
|
],
|
|
),
|
|
visibility = ["PUBLIC"],
|
|
)
|
|
|
|
REACT_CORE_OSS_DEPS = [
|
|
"//xplat/js/react-native-github:ReactInternalApple",
|
|
"//xplat/js/react-native-github:RCTPushNotificationApple",
|
|
"//xplat/js/react-native-github:RCTLinkingApple",
|
|
"//xplat/js/react-native-github:RCTAnimationApple",
|
|
"//xplat/js/react-native-github:RCTImageApple",
|
|
"//xplat/js/react-native-github:RCTNetworkApple",
|
|
"//xplat/js/react-native-github:RCTTextApple",
|
|
"//xplat/js/react-native-github:RCTBlobApple",
|
|
]
|
|
|
|
fb_xplat_resource(
|
|
name = "RNTesterUnitTestsResources",
|
|
dirs = [],
|
|
files = [
|
|
"RNTesterUnitTests/RNTesterUnitTestsBundle.js",
|
|
],
|
|
platforms = APPLE,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
fb_apple_test(
|
|
name = "RNTesterUnitTests",
|
|
srcs = glob(
|
|
[
|
|
"RNTesterUnitTests/**/*.m",
|
|
],
|
|
),
|
|
headers = glob([
|
|
"RNTesterUnitTests/**/*.h",
|
|
]),
|
|
contacts = ["oncall+react_native@xmail.facebook.com"],
|
|
frameworks = [
|
|
"$PLATFORM_DIR/Developer/Library/Frameworks/XCTest.framework",
|
|
"CoreGraphics",
|
|
"Foundation",
|
|
"QuartzCore",
|
|
"UIKit",
|
|
],
|
|
preprocessor_flags = get_objc_arc_preprocessor_flags() + [
|
|
"-DHERMES_BYTECODE_VERSION={}".format(HERMES_BYTECODE_VERSION),
|
|
] + get_preprocessor_flags_for_build_mode(),
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:workspace",
|
|
],
|
|
deps = REACT_CORE_OSS_DEPS + [
|
|
"//xplat/js/react-native-github:RCTCxxBridgeApple",
|
|
":RCTTestApple",
|
|
":RNTesterUnitTestsResourcesApple",
|
|
"//fbobjc/VendorLib/OCMock:OCMock",
|
|
],
|
|
)
|
|
|
|
fb_xplat_resource(
|
|
name = "RNTesterIntegrationTestsResources",
|
|
files = make_resource_glob("RNTesterIntegrationTests"),
|
|
platforms = APPLE,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
fb_apple_test(
|
|
name = "RNTesterIntegrationTests",
|
|
autoglob = True,
|
|
contacts = ["oncall+react_native@xmail.facebook.com"],
|
|
frameworks = [
|
|
"$PLATFORM_DIR/Developer/Library/Frameworks/XCTest.framework",
|
|
"CoreGraphics",
|
|
"Foundation",
|
|
"QuartzCore",
|
|
"UIKit",
|
|
],
|
|
info_plist = "//xplat/configurations/buck/common_info_plists:ApplicationTest-Info.plist",
|
|
preprocessor_flags = get_objc_arc_preprocessor_flags() + get_preprocessor_flags_for_build_mode(),
|
|
test_host_app = "//fbobjc/Configurations/Buck/CommonTestHost:CommonTestHost",
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:workspace",
|
|
],
|
|
deps = REACT_CORE_OSS_DEPS + [
|
|
":RCTTestApple",
|
|
":RNTesterIntegrationTestsResourcesApple",
|
|
":RNTesterResourcesApple",
|
|
"//xplat/js/react-native-github:RCTCxxBridgeApple",
|
|
"//xplat/js/react-native-github/React/CoreModules:CoreModulesApple",
|
|
rn_js_bundle_dep("//xplat/js/RKJSModules/EntryPoints:RNTesterTestBundle"),
|
|
],
|
|
)
|
|
|
|
fb_xplat_platform_specific_rule(
|
|
name = "RNTesterBundleAssetCatalog",
|
|
dirs = ["RNTester/RNTesterBundle/OtherImages.xcassets"],
|
|
platform = APPLE,
|
|
rule = fb_apple_asset_catalog,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
fb_xplat_resource(
|
|
name = "RNTesterBundleResources",
|
|
dirs = [],
|
|
files = [
|
|
"RNTester/RNTesterBundle/ImageInBundle.png",
|
|
],
|
|
platforms = APPLE,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
rn_xplat_cxx_library2(
|
|
name = "RNTesterBundleBinary",
|
|
srcs = ["//xplat/configurations/buck/apple/common_files:dummy.c"],
|
|
deps = [":RNTesterBundleAssetCatalog"],
|
|
)
|
|
|
|
fb_apple_bundle(
|
|
name = "RNTesterBundle",
|
|
binary = ":RNTesterBundleBinaryApple#static",
|
|
extension = "bundle",
|
|
info_plist = "RNTester/RNTesterBundle/Info.plist",
|
|
info_plist_substitutions = {
|
|
"PRODUCT_BUNDLE_IDENTIFIER": "com.facebook.react.RNTesterBundle",
|
|
},
|
|
deps = [
|
|
":RNTesterBundleResourcesApple",
|
|
],
|
|
)
|
|
|
|
fb_xplat_platform_specific_rule(
|
|
name = "RNTesterAssetCatalog",
|
|
dirs = ["RNTester/Images.xcassets"],
|
|
platform = APPLE,
|
|
rule = fb_apple_asset_catalog,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
fb_xplat_resource(
|
|
name = "RNTesterResources",
|
|
dirs = [],
|
|
files = [
|
|
"RNTester/legacy_image@2x.png",
|
|
"RNTester/LaunchScreen.storyboard",
|
|
":RNTesterBundle",
|
|
],
|
|
platforms = APPLE,
|
|
visibility = [
|
|
"//fbobjc/Libraries/FBReactKit:",
|
|
],
|
|
)
|
|
|
|
rn_apple_library(
|
|
name = "RCTTestApple",
|
|
srcs = glob([
|
|
"RCTTest/**/*.m",
|
|
"RCTTest/**/*.mm",
|
|
]),
|
|
headers = glob([
|
|
"RCTTest/**/*.h",
|
|
]),
|
|
exported_headers = {
|
|
"RCTTest/RCTTestRunner.h": "RCTTest/RCTTestRunner.h",
|
|
},
|
|
autoglob = False,
|
|
frameworks = [
|
|
"XCTest",
|
|
],
|
|
header_path_prefix = "React",
|
|
labels = [
|
|
"disable_plugins_only_validation",
|
|
],
|
|
plugins = react_module_plugin_providers(
|
|
name = "TestModule",
|
|
native_class_func = "RCTTestModuleCls",
|
|
),
|
|
plugins_header = "FBRCTTestPlugins.h",
|
|
preprocessor_flags = get_objc_arc_preprocessor_flags() + get_preprocessor_flags_for_build_mode() + rn_extra_build_flags() + [
|
|
"-DRN_DISABLE_OSS_PLUGIN_HEADER",
|
|
],
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
"//xplat/js/react-native-github:RCTLinkingApple",
|
|
"//xplat/js/react-native-github:RCTPushNotificationApple",
|
|
"//xplat/js/react-native-github:ReactInternalApple",
|
|
"//xplat/js/react-native-github/React/CoreModules:CoreModulesApple",
|
|
YOGA_APPLE_TARGET,
|
|
],
|
|
)
|
|
|
|
rn_xplat_cxx_library2(
|
|
name = "NativeComponentExample",
|
|
plugins_only = True,
|
|
srcs = glob(
|
|
[
|
|
"NativeComponentExample/ios/*.m",
|
|
"NativeComponentExample/ios/*.mm",
|
|
],
|
|
),
|
|
headers = glob(
|
|
[
|
|
"NativeComponentExample/ios/*.h",
|
|
],
|
|
),
|
|
header_namespace = "",
|
|
compiler_flags = [
|
|
"-fexceptions",
|
|
"-frtti",
|
|
"-std=c++17",
|
|
"-Wall",
|
|
],
|
|
contacts = ["oncall+react_native@xmail.facebook.com"],
|
|
labels = [
|
|
"supermodule:xplat/default/public.react_native.infra",
|
|
],
|
|
plugins = [
|
|
react_fabric_component_plugin_provider("RNTMyNativeView", "RNTMyNativeViewCls"),
|
|
],
|
|
plugins_header = "RCTFabricComponentsPlugins.h",
|
|
reexport_all_header_dependencies = False,
|
|
visibility = ["PUBLIC"],
|
|
deps = [
|
|
":generated_components-MyNativeViewSpec",
|
|
"//xplat/js/react-native-github:RCTFabricComponentViewsBase",
|
|
],
|
|
)
|