clang_binary_host
name
,
srcs
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
c_std
,
cflags
,
clang
,
clang_asflags
,
clang_cflags
,
compile_multilib
,
conlyflags
,
cpp_std
,
cppflags
,
debug
,
defaults
,
device_specific
,
dist
,
double_loadable
,
enabled
,
exclude_shared_libs
,
exclude_srcs
,
exclude_static_libs
,
export_generated_headers
,
export_header_lib_headers
,
export_shared_lib_headers
,
export_static_lib_headers
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_libs
,
host_ldlibs
,
host_required
,
include_build_directory
,
include_dirs
,
init_rc
,
inject_bssl_hash
,
installable
,
instruction_set
,
ldflags
,
licenses
,
local_include_dirs
,
logtags
,
lto
,
min_sdk_version
,
multilib
,
native_bridge_supported
,
native_coverage
,
no_libcrt
,
nocrt
,
notice
,
openmp
,
overrides
,
owner
,
pack_relocations
,
pgo
,
prefix_symbols
,
product_specific
,
proprietary
,
proto
,
ramdisk
,
ramdisk_available
,
recovery
,
recovery_available
,
relative_install_path
,
renderscript
,
required
,
rtti
,
runtime_libs
,
sanitize
,
sdk_member_name
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
static_executable
,
static_libs
,
stem
,
stl
,
strip
,
suffix
,
symlink_preferred_arch
,
symlinks
,
system_ext_specific
,
system_shared_libs
,
target
,
target.host
,
target.platform
,
target.ramdisk
,
target.recovery
,
target.vendor
,
target_required
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_flags
,
use_apex_name_macro
,
use_clang_lld
,
use_version_lib
,
vendor
,
vendor_available
,
version_script
,
vintf_fragments
,
visibility
,
vndk
,
whole_static_libs
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
list of strings, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files.
srcs may reference the outputs of other modules that produce source files like genrule
or filegroup using the syntax ":module".
⊕aidl
include_dirs
list of strings, list of directories that will be added to the aidl include paths.
local_include_dirs
list of strings, list of directories relative to the Blueprints file that will
be added to the aidl include paths.
generate_traces
bool, whether to generate traces (for systrace) for this interface
allow_undefined_symbols
bool, allow the module to contain undefined symbols. By default,
modules cannot contain undefined symbols that are not satisified by their immediate
dependencies. Set this flag to true to remove --no-undefined from the linker flags.
This flag should only be necessary for compiling low-level libraries like libc.
apex_available
list of strings, 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".
Default is ["//apex_available:platform"].
arch
interface
asflags
list of strings, list of module-specific flags that will be used for .S compiles
bootstrap
bool, Allows this module to use non-APEX version of libraries. Useful
for building binaries that are started before APEXes are activated.
c_std
string, C standard version to use. Can be a specific version (such as "gnu11"),
"experimental" (which will use draft versions like C1x when available),
or the empty string (which will use the default).
cflags
list of strings, list of module-specific flags that will be used for C and C++ compiles.
clang
bool, Deprecated. true is the default, false is invalid.
clang_asflags
list of strings, list of module-specific flags that will be used for .S compiles when
compiling with clang
clang_cflags
list of strings, list of module-specific flags that will be used for C and C++ compiles when
compiling with clang
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
conlyflags
list of strings, list of module-specific flags that will be used for C compiles
cpp_std
string, C++ standard version to use. Can be a specific version (such as
"gnu++11"), "experimental" (which will use draft versions like C++1z when
available), or the empty string (which will use the default).
cppflags
list of strings, list of module-specific flags that will be used for C++ compiles
⊕debug, release
cflags
list of strings, list of module-specific flags that will be used for C and C++ compiles in debug or
release builds
defaults
list of strings
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
targets
list of strings, 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).
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.
enabled
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_shared_libs
list of strings, list of shared libs that should not be used to build this module
exclude_srcs
list of strings, list of source files that should not be used to build the C/C++ module.
This is most useful in the arch/multilib variants to remove non-common files
exclude_static_libs
list of strings, list of static libs that should not be used to build this module
generated_sources
list of strings, list of generated sources to compile. These are the names of gensrcs or
genrule modules.
gnu_extensions
bool, if set to false, use -std=c++* instead of -std=gnu++*
group_static_libs
bool, group static libraries. This can resolve missing symbols issues with interdependencies
between static libraries, but it is generally better to order them correctly instead.
host_ldlibs
list of strings, -l arguments to pass to linker for host-provided shared libraries
host_required
list of strings, names of other modules to install on host if this module is installed
include_build_directory
bool, Add the directory containing the Android.bp file to the list of include
directories. Defaults to true.
include_dirs
list of strings, list of directories relative to the root of the source tree that will
be added to the include path using -I.
If possible, don't use this. If adding paths from the current directory use
local_include_dirs, if adding paths from other modules use export_include_dirs in
that module.
init_rc
list of strings, init.rc files to be installed if this module is installed
inject_bssl_hash
bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
installable
bool
instruction_set
string, the instruction set architecture to use to compile the C/C++
module.
ldflags
list of strings, list of module-specific flags that will be used for all link steps
licenses
list of strings, Names of the licenses that apply to this module.
local_include_dirs
list of strings, list of directories relative to the Blueprints file that will
be added to the include path using -I
logtags
list of strings, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags
file
⊕lto
Lto must violate capitialization style for acronyms so that it can be
referred to in blueprint files as "lto"
never
bool
full
bool
thin
bool
min_sdk_version
string, Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX).
multilib
interface
native_bridge_supported
bool, Whether this module is built for non-native architecures (also known as native bridge binary)
native_coverage
bool
no_libcrt
bool, don't link in libclang_rt.builtins-*.a
nocrt
bool, don't link in crt_begin and crt_end. This flag should only be necessary for
compiling crt or libc.
notice
string, relative path to a file to include in the list of notices for the device
openmp
bool, Build and link with OpenMP
overrides
list of strings, Names of modules to be overridden. Listed modules can only be other binaries
(in Make or Soong).
This does not completely prevent installation of the overridden binaries, but if both
binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed
from PRODUCT_PACKAGES.
owner
string, vendor who owns this module
pack_relocations
bool, Generate compact dynamic relocation table, default true.
⊕pgo
instrumentation
bool
sampling
bool
profile_file
string
benchmarks
list of strings
enable_profile_use
bool
cflags
list of strings, Additional compiler flags to use when building this module
for profiling (either instrumentation or sampling).
prefix_symbols
string, if set, add an extra objcopy --prefix-symbols= step
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).
proprietary
bool, whether this is a proprietary vendor module, and should be installed into /vendor
⊕proto
static
bool, Link statically against the protobuf runtime
type
string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
plugin
string, Proto plugin to use as the generator. Must be a cc_binary_host module.
include_dirs
list of strings, list of directories that will be added to the protoc include paths.
local_include_dirs
list of strings, list of directories relative to the bp file that will
be added to the protoc include paths.
canonical_path_from_root
bool, whether to identify the proto files from the root of the
source tree (the original method in Android, useful for
android-specific protos), or relative from where they were
specified (useful for external/third party protos).
This defaults to true today, but is expected to default to
false in the future.
ramdisk
bool, Whether this module is installed to ramdisk
ramdisk_available
bool, Make this module available when building for ramdisk
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
⊕renderscript
include_dirs
list of strings, list of directories that will be added to the llvm-rs-cc include paths
flags
list of strings, list of flags that will be passed to llvm-rs-cc
target_api
string, Renderscript API level to target
required
list of strings, names of other modules to install if this module is installed
rtti
bool, pass -frtti instead of -fno-rtti
runtime_libs
list of strings, list of modules that should be installed with this module. This is similar to 'required'
but '.vendor' suffix will be appended to the module names if the shared libraries have
vendor variants and this module uses VNDK.
⊕sanitize
enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer
never
bool
address
bool, main sanitizers
thread
bool
hwaddress
bool
undefined
bool, local sanitizers
all_undefined
bool
misc_undefined
list of strings
fuzzer
bool
safestack
bool
cfi
bool
integer_overflow
bool
scudo
bool
scs
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.
undefined
bool
cfi
bool
integer_overflow
bool
misc_undefined
list of strings
no_recover
list of strings
recover
list of strings, value to pass to -fsanitize-recover=
blacklist
string, value to pass to -fsanitize-blacklist
sdk_member_name
string, Name of the module that this sdk member is representing
sdk_variant_only
bool, If true, always create an sdk variant and don't create a platform variant.
sdk_version
string, Minimum sdk version supported when compiling against the ndk. Setting this property causes
two variants to be built, one for the platform and one for apps.
shared_libs
list of strings, list of modules that should be dynamically linked into this module.
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_executable
bool, compile executable with -static
static_libs
list of strings, list of modules that should be statically linked into this module.
stem
string, set the name of the output
stl
string, Select the STL library to use. Possible values are "libc++",
"libc++_static", "libstdc++", or "none". Leave blank to select the
default.
⊕strip
none
bool
all
bool
keep_symbols
bool
keep_symbols_list
list of strings
keep_symbols_and_debug_frame
bool
suffix
string, append to the name of the output
symlink_preferred_arch
bool, if set, install a symlink to the preferred architecture
symlinks
list of strings, install symlinks to the binary. Symlink names will have the suffix and the binary
extension (if any) appended
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).
system_shared_libs
list of strings, list of system libraries that will be dynamically linked to
shared library and executable modules. If unset, generally defaults to libc,
libm, and libdl. Set to [] to prevent linking against the defaults.
target
interface
⊕target.host, target.android
⊕target.platform
shared_libs
list of strings, list of shared libs that should be use to build the platform variant
of a module that sets sdk_version. This should rarely be necessary,
in most cases the same libraries are available for the SDK and platform
variants.
⊕target.ramdisk
static_libs
list of strings, list of static libs that only should be used to build the recovery
variant of the C/C++ module.
exclude_shared_libs
list of strings, list of shared libs that should not be used to build
the ramdisk variant of the C/C++ module.
exclude_static_libs
list of strings, list of static libs that should not be used to build
the ramdisk variant of the C/C++ module.
⊕target.recovery
srcs
list of strings, list of source files that should only be used in the
recovery variant of the C/C++ module.
exclude_srcs
list of strings, list of source files that should not be used to
build the recovery variant of the C/C++ module.
cflags
list of strings, List of additional cflags that should be used to build the recovery
variant of the C/C++ module.
shared_libs
list of strings, list of shared libs that only should be used to build the recovery
variant of the C/C++ module.
static_libs
list of strings, list of static libs that only should be used to build the recovery
variant of the C/C++ module.
exclude_shared_libs
list of strings, list of shared libs that should not be used to build
the recovery variant of the C/C++ module.
exclude_static_libs
list of strings, list of static libs that should not be used to build
the recovery variant of the C/C++ module.
⊕target.vendor
shared_libs
list of strings, list of shared libs that only should be used to build the vendor
variant of the C/C++ module.
static_libs
list of strings, list of static libs that only should be used to build the vendor
variant of the C/C++ module.
exclude_shared_libs
list of strings, list of shared libs that should not be used to build the vendor variant
of the C/C++ module.
exclude_static_libs
list of strings, list of static libs that should not be used to build the vendor variant
of the C/C++ module.
exclude_runtime_libs
list of strings, list of runtime libs that should not be installed along with the vendor
variant of the C/C++ module.
version_script
string, version script for this vendor variant
srcs
list of strings, list of source files that should only be used in the
vendor variant of the C/C++ module.
exclude_srcs
list of strings, list of source files that should not be used to
build the vendor variant of the C/C++ module.
cflags
list of strings, List of additional cflags that should be used to build the vendor
variant of the C/C++ module.
target_required
list of strings, names of other modules to install on target if this module is installed
tidy
bool, whether to run clang-tidy over C-like sources.
tidy_checks
list of strings, Extra checks to enable or disable in clang-tidy
tidy_checks_as_errors
list of strings, Checks that should be treated as errors.
tidy_flags
list of strings, Extra flags to pass to clang-tidy
use_apex_name_macro
bool, Adds __ANDROID_APEX_<APEX_MODULE_NAME>__ macro defined for apex variants in addition to __ANDROID_APEX__
use_clang_lld
bool, Use clang lld instead of gnu ld.
use_version_lib
bool, make android::build:GetBuildNumber() available containing the build ID.
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`.
In addition, this module should be allowed to be directly depended by
product modules with `product_specific: true`.
If set to true, three variants will be built separately, one like
normal, another limited to the set of libraries and headers
that are exposed to /vendor modules, and the other to /product modules.
The vendor and product variants 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 or /product
modules.
Default value is true when vndk: {enabled: true} or vendor: true.
Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
If PRODUCT_PRODUCT_VNDK_VERSION isn't set, product variant will not be used.
version_script
string, local file name to pass to the linker as --version_script
vintf_fragments
list of strings, VINTF manifest fragments to be installed if this module is installed
visibility
list of strings, 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/+/master/README.md#visibility for
more details.
⊕vndk
enabled
bool, declared as a VNDK or VNDK-SP module. The vendor variant
will be installed in /system instead of /vendor partition.
`vendor_available` must be explicitly set to either true or
false together with `vndk: {enabled: true}`.
support_system_process
bool, declared as a VNDK-SP module, which is a subset of VNDK.
`vndk: { enabled: true }` must set together.
All these modules are allowed to link to VNDK-SP or LL-NDK
modules only. Other dependency will cause link-type errors.
If `support_system_process` is not set or set to false,
the module is VNDK-core and can link to other VNDK-core,
VNDK-SP or LL-NDK modules only.
extends
string, Extending another module
whole_static_libs
list of strings, list of modules whose object files should be linked into this module
in their entirety. For static library modules, all of the .o files from the intermediate
directory of the dependency will be linked into this modules .a file. For a shared library,
the dependency's .a file will be linked into this module using -Wl,--whole-archive.
yacc
YaccProperties
clang_tblgen
name
,
compile_multilib
,
device_specific
,
dist
,
enabled
,
host_required
,
in
,
init_rc
,
licenses
,
native_bridge_supported
,
notice
,
outs
,
owner
,
product_specific
,
proprietary
,
ramdisk
,
recovery
,
required
,
soc_specific
,
system_ext_specific
,
target.host
,
target_required
,
vendor
,
vintf_fragments
,
visibility
name
string, The name of the module. Must be unique across all modules.
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
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
targets
list of strings, 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).
enabled
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.
host_required
list of strings, names of other modules to install on host if this module is installed
in
string
init_rc
list of strings, init.rc files to be installed if this module is installed
licenses
list of strings, Names of the licenses that apply to this module.
native_bridge_supported
bool, Whether this module is built for non-native architecures (also known as native bridge binary)
notice
string, relative path to a file to include in the list of notices for the device
outs
list of strings
owner
string, vendor who owns this module
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).
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
list of strings, 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_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.host, target.android
target_required
list of strings, names of other modules to install on target if this module is installed
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.
vintf_fragments
list of strings, VINTF manifest fragments to be installed if this module is installed
visibility
list of strings, 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/+/master/README.md#visibility for
more details.