# Copyright (c) Facebook, Inc. and its affiliates. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. load("//tools/build_defs:fb_native_wrapper.bzl", "fb_native") load( "//tools/build_defs/oss:rn_codegen_defs.bzl", "rn_codegen_components", "rn_codegen_modules", ) load( "//tools/build_defs/oss:rn_defs.bzl", "react_native_root_target", ) fb_native.genrule( # The schema name must have the following format: "{name}-codegen-modules-schema" # Why: Internally, we have build scripts that find all NativeModule schemas in the # dependencies of an app, and build TurboModuleManager delegates. Those scripts assume # that all schema targets have the aforementioned naming scheme. name = "FBReactNativeSpec-codegen-modules-schema", srcs = glob( [ "**/*.js", ], exclude = [ "**/__tests__/**/*", ], ), cmd = "$(exe {}) $OUT $SRCS".format(react_native_root_target("packages/react-native-codegen:write_to_json")), out = "schema.json", labels = [ "codegen_rule", "react_native_schema_target", ], ) rn_codegen_modules( name = "FBReactNativeSpec", android_package_name = "com.facebook.fbreact.specs", library_labels = ["supermodule:xplat/default/public.react_native.infra"], schema_target = ":FBReactNativeSpec-codegen-modules-schema", ) rn_codegen_components( name = "FBReactNativeComponentSpec", library_labels = ["supermodule:xplat/default/public.react_native.infra"], # Why does FBReactNativeComponentSpec depend on -codegen-modules-schema? # The module codegen schema also contains components. We cannot change the name # of the schema target, because internally, we have infra that depends on how # it's named. # # TODO(T83341482): Clean up how OSS NativeModule codegen is declared schema_target = ":FBReactNativeSpec-codegen-modules-schema", )