clang_binary_host
name
,
srcs
,
exclude_srcs
,
defaults
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
clang
,
clang_asflags
,
clang_cflags
,
clang_verify
,
cmake_snapshot_supported
,
compile_multilib
,
conlyflags
,
cpp_std
,
cppflags
,
debug_ramdisk
,
device_first_generated_headers
,
device_specific
,
dist
,
dists
,
double_loadable
,
dynamic_list
,
enabled
,
exclude_generated_sources
,
exclude_runtime_libs
,
exclude_shared_libs
,
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_cross_supported
,
host_ldlibs
,
host_required
,
ignore_max_page_size
,
include_build_directory
,
include_dirs
,
init_rc
,
inject_bssl_hash
,
install_in_root
,
install_in_xbin
,
installable
,
instruction_set
,
ldflags
,
lex
,
licenses
,
linker_scripts
,
local_include_dirs
,
logtags
,
lto
,
lto_O0
,
min_sdk_version
,
multilib
,
native_bridge_supported
,
native_coverage
,
no_crt_pad_segment
,
no_full_install
,
no_libcrt
,
nocrt
,
odm_available
,
odm_dlkm_specific
,
openmp
,
optimize_for_size
,
orderfile
,
overrides
,
owner
,
pack_relocations
,
prefix_symbols
,
product_available
,
product_specific
,
product_variables.arc
,
product_variables.binder32bit
,
product_variables.build_from_text_stub
,
product_variables.debuggable
,
product_variables.enforce_vintf_manifest
,
product_variables.eng
,
product_variables.malloc_low_memory
,
product_variables.malloc_pattern_fill_contents
,
product_variables.malloc_zero_contents
,
product_variables.native_coverage
,
product_variables.override_rs_driver
,
product_variables.platform_sdk_version
,
product_variables.release_aidl_use_unfrozen
,
product_variables.safestack
,
product_variables.selinuxignoreneverallows
,
product_variables.shipping_api_level
,
product_variables.treble_linker_namespaces
,
product_variables.uml
,
product_variables.unbundled_build
,
proprietary
,
proto
,
ramdisk
,
ramdisk_available
,
recovery
,
recovery_available
,
relative_install_path
,
renderscript
,
required
,
rtti
,
runtime_libs
,
sanitize
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
static_executable
,
static_libs
,
stem
,
stl
,
strip
,
suffix
,
symlink_preferred_arch
,
symlinks
,
system_dlkm_specific
,
system_ext_specific
,
system_shared_libs
,
target
,
target.android
,
target.apex
,
target.host
,
target.non_apex
,
target.platform
,
target.product
,
target.ramdisk
,
target.recovery
,
target.vendor
,
target.vendor_ramdisk
,
target_required
,
team
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
use_generic_config
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, 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".
exclude_srcs
configurable list of string, 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
defaults
list of string
afdo
bool, Afdo allows developers self-service enroll for
automatic feedback-directed optimization using profile data.
⊕aidl
libs
list of string, List of aidl_library modules
include_dirs
list of string, list of directories that will be added to the aidl include paths.
local_include_dirs
list of string, 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
flags
list of string, list of flags that will be passed to the AIDL compiler
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 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"].
arch
interface
asflags
list of string, 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.
bpf_target
bool, cc Build rules targeting BPF must set this to true. The correct fix is to
ban targeting bpf in cc rules instead use bpf_rules. (b/323415017)
⊕buildstubs
bool
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
configurable list of string, 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 string, list of module-specific flags that will be used for .S compiles when
compiling with clang
clang_cflags
list of string, list of module-specific flags that will be used for C and C++ compiles when
compiling with clang
clang_verify
bool, Add "-Xclang -verify" to the cflags and appends "touch $out" to
the clang command line.
cmake_snapshot_supported
bool, Allows this module to be included in CMake release snapshots to be built outside of Android
build system and source tree.
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 string, 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
configurable list of string, list of module-specific flags that will be used for C++ compiles
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.
dynamic_list
string, local file name to pass to the linker as --dynamic-list. Not supported on darwin, and will fail to build
if provided to the darwin variant of a module.
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_generated_sources
list of string, list of generated sources 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_runtime_libs
list of string, list of runtime libs that should not be installed along with this module.
exclude_shared_libs
list of string, list of shared libs that should not be used to build this module
exclude_static_libs
list of string, list of static libs that should not be used to build this module
generated_sources
list of string, 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, deprecated and ignored because lld makes it unnecessary. See b/189475744.
host_cross_supported
bool, If set to true, build a variant of the module for the host cross. Defaults to true.
host_ldlibs
list of string, -l arguments to pass to linker for host-provided shared libraries
host_required
list of string, names of other modules to install on host if this module is installed
ignore_max_page_size
bool, ignore max page size. By default, max page size must be the
max page size set for the target.
include_build_directory
bool, Add the directory containing the Android.bp file to the list of include
directories. Defaults to true.
include_dirs
configurable list of string, 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
configurable list of string, 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.
install_in_root
bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by
init_first_stage.
install_in_xbin
bool, Install output directly in {partition}/xbin
installable
bool
instruction_set
string, the instruction set architecture to use to compile the C/C++
module.
ldflags
list of string, list of module-specific flags that will be used for all link steps
lex
LexProperties
licenses
list of string, Describes the licenses applicable to this module. Must reference license modules.
linker_scripts
list of string, local files to pass to the linker as --script. Not supported on darwin or windows, and will fail to build
if provided to the darwin or windows variant of a module.
local_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path using -I
logtags
list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags
file
⊕lto
Lto must violate capitalization style for acronyms so that it can be
referred to in blueprint files as "lto"
never
bool
thin
bool
lto_O0
bool, Use --lto-O0 flag.
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_crt_pad_segment
bool, don't link in crt_pad_segment. This flag is currently only used internal to
soong for testing and for vndk prebuilt shared libraries.
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_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.
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.
openmp
bool, Build and link with OpenMP
optimize_for_size
bool, Aggresively trade performance for smaller binary size.
This should only be used for on-device binaries that are rarely executed and not
performance critical.
⊕orderfile
instrumentation
bool
order_file_path
string
load_order_file
bool
cflags
list of string, Additional compiler flags to use when building this module
for orderfile profiling.
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
pack_relocations
bool, Generate compact dynamic relocation table, default true.
prefix_symbols
string, if set, add an extra objcopy --prefix-symbols= step
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
⊕cflags
⊕exclude_srcs
⊕include_dirs
⊕shared_libs
⊕static_libs
⊕srcs
⊕whole_static_libs
⊕product_variables.binder32bit
⊕product_variables.build_from_text_stub
⊕static_libs
⊕exclude_static_libs
⊕product_variables.debuggable
⊕cflags
⊕cppflags
⊕init_rc
⊕required
⊕host_required
⊕target_required
⊕strip.all
⊕strip.keep_symbols
⊕strip.keep_symbols_and_debug_frame
⊕static_libs
⊕exclude_static_libs
⊕whole_static_libs
⊕shared_libs
⊕srcs
⊕exclude_srcs
⊕product_variables.enforce_vintf_manifest
⊕product_variables.eng
⊕cflags
⊕cppflags
⊕lto.never
⊕sanitize.address
⊕product_variables.malloc_low_memory
⊕cflags
⊕shared_libs
⊕whole_static_libs
⊕static_libs
⊕exclude_static_libs
⊕srcs
⊕product_variables.malloc_pattern_fill_contents
⊕product_variables.malloc_zero_contents
⊕product_variables.native_coverage
⊕product_variables.override_rs_driver
⊕product_variables.platform_sdk_version
⊕product_variables.release_aidl_use_unfrozen
⊕cflags
⊕required
⊕vintf_fragment_modules
⊕product_variables.safestack
⊕product_variables.selinuxignoreneverallows
⊕product_variables.shipping_api_level
⊕product_variables.treble_linker_namespaces
⊕product_variables.uml
⊕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
⊕proto
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 string, list of directories that will be added to the protoc include paths.
local_include_dirs
list of string, 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.
static
bool, Link statically against the protobuf runtime
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
⊕renderscript
include_dirs
list of string, list of directories that will be added to the llvm-rs-cc include paths
flags
list of string, list of flags that will be passed to llvm-rs-cc
target_api
string, Renderscript API level to target
required
configurable list of string, names of other modules to install if this module is installed
rtti
bool, pass -frtti instead of -fno-rtti
runtime_libs
list of string, 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
SanitizeUserProps
never
bool, Prevent use of any sanitizers on this module
address
bool, ASan (Address sanitizer), incompatible with static binaries.
Always runs in a diagnostic mode.
Use of address sanitizer disables cfi sanitizer.
Hwaddress sanitizer takes precedence over this sanitizer.
thread
bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures.
Always runs in a diagnostic mode.
Use of thread sanitizer disables cfi and scudo sanitizers.
Hwaddress sanitizer takes precedence over this sanitizer.
hwaddress
bool, HWASan (Hardware Address sanitizer).
Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
all_undefined
bool, Undefined behavior sanitizer
undefined
bool, Subset of undefined behavior sanitizer
misc_undefined
list of string, List of specific undefined behavior sanitizers to enable
fuzzer
bool, Fuzzer, incompatible with static binaries.
safestack
bool, safe-stack sanitizer, incompatible with 32-bit architectures.
cfi
bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
integer_overflow
bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
scudo
bool, scudo sanitizer, incompatible with asan, hwasan, tsan
This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo
deprecated
scs
bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
memtag_heap
bool, Memory-tagging, only available on arm64
if diag.memtag unset or false, enables async memory tagging
memtag_stack
bool, Memory-tagging stack instrumentation, only available on arm64
Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
memtag_globals
bool, Memory-tagging globals instrumentation, only available on arm64
Adds instrumentation to detect global buffer overflows using MTE.
writeonly
bool, A modifier for ASAN and HWASAN for write only instrumentation
⊕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, Undefined behavior sanitizer, diagnostic mode
cfi
bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
integer_overflow
bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
memtag_heap
bool, Memory-tagging, only available on arm64
requires sanitizer.memtag: true
if set, enables sync memory tagging
misc_undefined
list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
no_recover
list of string, List of sanitizers to pass to -fno-sanitize-recover
results in only the first detected error for these sanitizers being reported and program then
exits with a non-zero exit code.
⊕config
Sanitizers to run with flag configuration specified
cfi_assembly_support
bool, Enables CFI support flags for assembly-heavy libraries
recover
list of string, List of sanitizers to pass to -fsanitize-recover
allows execution to continue for these sanitizers to detect multiple errors rather than only
the first one
blocklist
string, value to pass to -fsanitize-ignorelist
sdk_variant_only
bool, If true, always create an sdk variant and don't create a platform variant.
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_libs
configurable list of string, 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
configurable list of string, 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, 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.
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 string, install symlinks to the binary. Symlink names will have the suffix and the binary
extension (if any) appended
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).
system_shared_libs
list of string, 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.android
compile_multilib
string
enabled
bool
⊕target.apex
exclude_shared_libs
list of string, list of shared libs that should not be used to build the apex variant of
the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build the apex
variant of the C/C++ module.
⊕target.host
⊕target.non_apex
exclude_shared_libs
list of string, list of shared libs that should not be used to build the non-apex
variant of the C/C++ module.
⊕target.platform
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
required
list of string, List of modules required by the core variant.
exclude_required
list of string, List of modules not required by the core variant.
shared_libs
list of string, 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.
exclude_shared_libs
list of string, list of shared libs that should not be used to build the platform variant
of the C/C++ module.
⊕target.product
srcs
list of string, list of source files that should only be used in vendor or
product variant of the C/C++ module.
exclude_srcs
list of string, list of source files that should not be used to build vendor
or product variant of the C/C++ module.
cflags
list of string, List of additional cflags that should be used to build vendor
or product variant of the C/C++ module.
exclude_generated_sources
list of string, list of generated sources that should not be used to build
vendor or product variant of the C/C++ module.
shared_libs
list of string, list of shared libs that only should be used to build vendor or
product variant of the C/C++ module.
static_libs
list of string, list of static libs that only should be used to build vendor or
product variant of the C/C++ module.
exclude_shared_libs
list of string, list of shared libs that should not be used to build vendor or
product variant of the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build vendor or
product variant of the C/C++ module.
exclude_runtime_libs
list of string, list of runtime libs that should not be installed along with the
vendor or product variant of the C/C++ module.
version_script
string, version script for vendor or product variant
⊕target.ramdisk
exclude_srcs
list of string, list of source files that should not be used to
build the ramdisk variants of the C/C++ module.
cflags
list of string, List of additional cflags that should be used to build the ramdisk
variants of the C/C++ module.
static_libs
list of string, list of static libs that only should be used to build the ramdisk
variant of the C/C++ module.
exclude_shared_libs
list of string, list of shared libs that should not be used to build
the ramdisk variant of the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build
the ramdisk variant of the C/C++ module.
exclude_runtime_libs
list of string, list of runtime libs that should not be installed along with the
ramdisk variant of the C/C++ module.
⊕target.recovery
srcs
list of string, list of source files that should only be used in the
recovery variant of the C/C++ module.
exclude_srcs
list of string, list of source files that should not be used to
build the recovery variant of the C/C++ module.
cflags
list of string, List of additional cflags that should be used to build the recovery
variant of the C/C++ module.
exclude_generated_sources
list of string, list of generated sources that should not be used to
build the recovery variant of the C/C++ module.
required
list of string, List of modules required by the recovery variant.
exclude_required
list of string, List of modules not required by the recovery variant.
shared_libs
list of string, list of shared libs that only should be used to build the recovery
variant of the C/C++ module.
static_libs
list of string, list of static libs that only should be used to build the recovery
variant of the C/C++ module.
exclude_shared_libs
list of string, list of shared libs that should not be used to build
the recovery variant of the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build
the recovery variant of the C/C++ module.
exclude_runtime_libs
list of string, list of runtime libs that should not be installed along with the
recovery variant of the C/C++ module.
⊕target.vendor
shared_libs
list of string, list of shared libs that only should be used to build vendor or
product variant of the C/C++ module.
static_libs
list of string, list of static libs that only should be used to build vendor or
product variant of the C/C++ module.
exclude_shared_libs
list of string, list of shared libs that should not be used to build vendor or
product variant of the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build vendor or
product variant of the C/C++ module.
exclude_runtime_libs
list of string, list of runtime libs that should not be installed along with the
vendor or product variant of the C/C++ module.
version_script
string, version script for vendor or product variant
srcs
list of string, list of source files that should only be used in vendor or
product variant of the C/C++ module.
exclude_srcs
list of string, list of source files that should not be used to build vendor
or product variant of the C/C++ module.
cflags
list of string, List of additional cflags that should be used to build vendor
or product variant of the C/C++ module.
exclude_generated_sources
list of string, list of generated sources that should not be used to build
vendor or product variant of the C/C++ module.
⊕target.vendor_ramdisk
exclude_shared_libs
list of string, list of shared libs that should not be used to build
the vendor ramdisk variant of the C/C++ module.
exclude_static_libs
list of string, list of static libs that should not be used to build
the vendor ramdisk variant of the C/C++ module.
exclude_runtime_libs
list of string, list of runtime libs that should not be installed along with the
vendor ramdisk variant of the C/C++ module.
exclude_srcs
list of string, list of source files that should not be used to
build the ramdisk variants of the C/C++ module.
cflags
list of string, List of additional cflags that should be used to build the ramdisk
variants of the C/C++ module.
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.
tidy
bool, whether to run clang-tidy over C-like sources.
tidy_checks
list of string, Extra checks to enable or disable in clang-tidy
tidy_checks_as_errors
list of string, Checks that should be treated as errors.
tidy_disabled_srcs
list of string, list of source files that should not be compiled with clang-tidy.
tidy_flags
list of string, Extra flags to pass to clang-tidy
tidy_timeout_srcs
list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
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_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`.
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, local file name to pass to the linker as --version-script. Not supported on darwin, and will fail to build
if provided to the darwin variant of a module.
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_program_vtables
bool, Use -fwhole-program-vtables cflag.
whole_static_libs
configurable list of string, 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
,
debug_ramdisk
,
device_specific
,
dist
,
dists
,
enabled
,
host_required
,
in
,
init_rc
,
licenses
,
native_bridge_supported
,
no_full_install
,
odm_dlkm_specific
,
outs
,
overrides
,
owner
,
product_specific
,
product_variables.debuggable
,
product_variables.release_aidl_use_unfrozen
,
product_variables.selinuxignoreneverallows
,
product_variables.unbundled_build
,
proprietary
,
ramdisk
,
recovery
,
required
,
soc_specific
,
system_dlkm_specific
,
system_ext_specific
,
target.android
,
target.host
,
target_required
,
team
,
use_generic_config
,
vendor
,
vendor_dlkm_specific
,
vendor_ramdisk
,
vintf_fragment_modules
,
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).
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)
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.
host_required
list of string, names of other modules to install on host if this module is installed
in
string
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.
outs
list of string
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
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.debuggable
⊕init_rc
⊕required
⊕host_required
⊕target_required
⊕product_variables.release_aidl_use_unfrozen
⊕required
⊕vintf_fragment_modules
⊕product_variables.selinuxignoreneverallows
⊕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
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_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.