rust_stdlib_prebuilt_filegroup_host

 name string, The name of the module. Must be unique across all modules.
 srcs configurable list of string, srcs lists files that will be included in this filegroup
 exclude_srcs configurable list of string
 defaults list of string
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_common_srcs configurable list of string, Sources that will be included in the filegroup, but any module dependencies will be added using the device os and the common architecture's variant.
 device_first_srcs configurable list of string, Sources that will be included in the filegroup, but any module dependencies will be added using the device os and the device's first architecture's variant.
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended with <product name>-. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be coral-foo.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled configurable bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 export_to_make_var string, Create a make variable with the specified name that contains the list of files in the filegroup, relative to the root of the source tree.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 path string, The base path to the files. May be used by other modules to determine which portion of the path to use. For example, when a filegroup is used as data in a cc_test rule, the base path is stripped off the path and the remaining path is used as the installation directory.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.arc
exclude_srcs
  []string
srcs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.malloc_low_memory
srcs
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[bool]
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required configurable list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
target.android
 compile_multilib string
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 toolchain_srcs list of string, path to toolchain files, relative to the top of the toolchain source
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/main/README.md#visibility for more details.

rust_stdlib_prebuilt_host

 name string, The name of the module. Must be unique across all modules.
 srcs list of string, path to the prebuilt file
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
 aliases list of string, Rust crate dependencies to rename. Each entry should be a string of the form "dependencyname:alias". "dependencyname" here should be the name of the crate, not the Android module. This is equivalent to writing `alias = { package = "dependencyname" }` in a `Cargo.toml`.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". Prefix pattern (com.foo.*) can be used to match with any APEX name with the prefix(com.foo.). Default is ["//apex_available:platform"].
 apex_exclude bool, Deprecated - exclude this rust_ffi target from being included in APEXes. TODO(b/362509506): remove this once all apex_exclude uses are switched to stubs.
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 cargo_env_compat bool, Enables emitting certain Cargo environment variables. Only intended to be used for compatibility purposes. Will set CARGO_CRATE_NAME to the crate_name property's value. Will set CARGO_BIN_NAME to the output filename value without the extension.
 cargo_pkg_version string, If cargo_env_compat is true, sets the CARGO_PKG_VERSION env var to this value.
 cfgs configurable list of string, list of configuration options to enable for this crate. To enable features, use the "features" property.
 clippy_lints string, name of the lint set that should be used to validate this module. Possible values are "default" (for using a sensible set of lints depending on the module's location), "android" (for the strictest lint set that applies to all Android platform code), "vendor" (for a relaxed set) and "none" (to disable the execution of clippy). The default value is "default". See also the `lints` property.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 crate_name string, crate name, required for modules which produce Rust libraries: rust_library, rust_ffi and SourceProvider modules which create library variants (rust_bindgen). This must be the expected extern crate name used in source, and is required to conform to an enforced format matching library output files (if the output file is lib<someName><suffix>, the crate_name property must be <someName>).
 crate_root string, Entry point that is passed to rustc to begin the compilation. E.g. main.rs or lib.rs. When this property is set,

   * sandboxing is enabled for this module, and
   * the srcs attribute is interpreted as a list of all source files potentially
         used in compilation, including the entrypoint, and
   * compile_data can be used to add additional files used in compilation that
         not directly used as source files.

 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended with <product name>-. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be coral-foo.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
dylib VariantLibraryProperties
 enabled bool
 srcs list of string
 edition string, specific rust edition that should be used if the default version is not desired
 enabled configurable bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 export_include_dirs list of string, path to include directories to export to cc_* modules, only relevant for static/shared variants.
 extra_exported_symbols string, A version_script formatted text file with additional symbols to export for rust shared or dylibs which the rustc compiler does not automatically export, e.g. additional symbols from whole_static_libs. Unlike Version_script, this is not meant to imply a stable API.
 features configurable list of string, list of features to enable for this crate
 flags list of string, flags to pass to rustc. To enable configuration options or features, use the "cfgs" or "features" properties.
 force_use_prebuilt bool
 host_required list of string, names of other modules to install on host if this module is installed
 include_dirs list of string, TODO: Remove this when all instances of Include_dirs have been removed from rust_ffi modules. path to include directories to pass to cc_* modules, only relevant for static/shared variants (deprecated, use export_include_dirs instead).
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 installable bool
 ld_flags list of string, flags to pass to the linker
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 lints string, name of the lint set that should be used to validate this module. Possible values are "default" (for using a sensible set of lints depending on the module's location), "android" (for the strictest lint set that applies to all Android platform code), "vendor" (for a relaxed set) and "none" (for ignoring all lint warnings and errors). The default value is "default".
lto
Control whether LTO is used for the final (Rust) linkage. This does not impact cross-language LTO.
 thin bool, Whether thin LTO should be enabled. By default this is true. LTO provides such a large code size benefit for Rust, this should always be enabled for production builds unless there's a clear need to disable it.
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 no_stdlibs bool, whether to suppress inclusion of standard crates - defaults to false Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 prefer configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefer_rlib bool, Change the rustlibs linkage to select rlib linkage by default for device targets. Also link libstd as an rlib as well on device targets. Note: This is the default behavior for host targets. This is primarily meant for rust_binary and rust_ffi modules where the default linkage of libstd might need to be overridden in some use cases. This should generally be avoided with other module types since it may cause collisions at linkage if all dependencies of the root binary module do not link against libstd the same way.
 proc_macros configurable list of string, list of rust proc_macro crate dependencies
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.arc
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.build_from_text_stub
static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
sanitize.address
  *bool
product_variables.malloc_low_memory
shared_libs
  []string
whole_static_libs
  []string
static_libs
  []string
srcs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[bool]
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required configurable list of string, names of other modules to install if this module is installed
rlib VariantLibraryProperties
 enabled bool
 srcs list of string
 rlibs configurable list of string, list of rust rlib crate dependencies
 rustlibs configurable list of string, list of rust automatic crate dependencies. Rustlibs linkage is rlib for host targets and dylib for device targets.
sanitize
enable AddressSanitizer, HWAddressSanitizer, and others.
 address bool
 hwaddress bool
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 fuzzer bool
 never bool
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared VariantLibraryProperties
 enabled bool
 srcs list of string
 shared_libs configurable list of string, list of C shared library dependencies
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static VariantLibraryProperties
 enabled bool
 srcs list of string
 static_libs configurable list of string, list of C static library dependencies. These dependencies do not normally propagate to dependents and may need to be redeclared. See whole_static_libs for bundling static dependencies into a library.
 stdlibs configurable list of string, list of Rust system library dependencies. This is usually only needed when `no_stdlibs` is true, in which case it can be used to depend on system crates like `core` and `alloc`.
 stem string, sets name of the output
strip
 none bool, Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs *ast.SelectorExpr
Generate stubs to make this library accessible to APEXes. Can only be set for modules producing shared libraries.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, append to name of output
 sysroot bool, Whether this library is part of the Rust toolchain sysroot.
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_expansive_default_srcs bool, Set this to true to use an expansive default set of source file requirements (all .rs, .h, .xml, and .md files in the module tree). This is primarily for tracking sources for RBE purposes. Currently defaults to true, though this may change in the future.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable. DEPRECATED: This property is being deprecated b/308188211. Use RELEASE_APEX_CONTRIBUTIONS build flags to select prebuilts of mainline modules.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead
 version_script string, Version script to pass to the linker. By default this will replace the implicit rustc emitted version script to mirror expected behavior in CC. This is only relevant for rust_ffi_shared modules which are exposing a versioned C API.
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/main/README.md#visibility for more details.
 whole_static_libs configurable list of string, Similar to static_libs, but will bundle the static library dependency into a library. This is helpful to avoid having to redeclare the dependency for dependents of this library, but in some cases may also result in bloat if multiple dependencies all include the same static library whole. The common use case for this is when the static library is unlikely to be a dependency of other modules to avoid having to redeclare the static library dependency for every dependent module. If you are not sure what to, for rust_library modules most static dependencies should go in static_libraries, and for rust_ffi modules most static dependencies should go into whole_static_libraries. For rust_ffi static variants, these libraries will be included in the resulting static library archive. For rust_library rlib variants, these libraries will be bundled into the resulting rlib library. This will include all of the static libraries symbols in any dylibs or binaries which use this rlib as well.