name
,
srcs
,
exclude_srcs
,
defaults
,
cmd
,
common_os_srcs
,
compile_multilib
,
debug_ramdisk
,
device_common_srcs
,
device_first_srcs
,
device_specific
,
dir_srcs
,
dist
,
dists
,
enabled
,
export_include_dirs
,
host_first_srcs
,
host_required
,
host_second_srcs
,
init_rc
,
keep_gendir
,
licenses
,
native_bridge_supported
,
no_full_install
,
odm_dlkm_specific
,
out
,
overrides
,
owner
,
product_specific
,
product_variables.arc
,
product_variables.debuggable
,
product_variables.malloc_low_memory
,
product_variables.native_coverage
,
product_variables.platform_sdk_extension_version
,
product_variables.platform_sdk_version
,
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
,
tool_files
,
tools
,
use_generic_config
,
use_nsjail
,
uses_order_only_build_date_file
,
uses_order_only_build_number_file
,
vendor
,
vendor_dlkm_specific
,
vendor_ramdisk
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
write_if_changed
configuration to distribute output files from this module to the distribution
directory (default: $OUT/dist, configurable with $DIST_DIR)
⊕target.android
libclang_rt_prebuilt_library_shared
name
,
srcs
,
exclude_srcs
,
defaults
,
host_supported
,
device_supported
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
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
,
is_llndk
,
ldflags
,
lex
,
lib_name
,
licenses
,
linker_scripts
,
llndk
,
llndk_moved_to_apex
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared
,
shared_libs
,
soc_specific
,
source_module_name
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
is_llndk
bool
ldflags
list of string, list of module-specific flags that will be used for all link steps
lex
LexProperties
lib_name
string
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex module.
llndk_moved_to_apex
bool
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.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
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 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.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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
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
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
⊕target.product
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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.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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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.vendor_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.
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.
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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
libclang_rt_prebuilt_library_static
name
,
srcs
,
exclude_srcs
,
defaults
,
host_supported
,
device_supported
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
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
,
lib_name
,
licenses
,
linker_scripts
,
llndk
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
source_module_name
,
static
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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
lib_name
string
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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, Names of modules to be overridden. Listed modules can only be other shared libraries
(in Make or Soong).
This does not completely prevent installation of the overridden libraries, but if both
binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed
from PRODUCT_PACKAGES.
owner
string, vendor who owns this module
pack_relocations
bool, Generate compact dynamic relocation table, default true.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
⊕static
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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
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
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.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕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.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
⊕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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
libclang_rt_prebuilt_object
name
,
srcs
,
defaults
,
host_supported
,
device_supported
,
apex_available
,
arch
,
bootstrap
,
clang
,
cmake_snapshot_supported
,
compile_multilib
,
crt
,
debug_ramdisk
,
device_specific
,
dist
,
dists
,
double_loadable
,
enabled
,
exclude_from_ndk_sysroot
,
header_libs
,
host_cross_supported
,
host_required
,
init_rc
,
installable
,
licenses
,
linker_script
,
logtags
,
min_sdk_version
,
multilib
,
native_bridge_supported
,
no_full_install
,
objs
,
odm_available
,
odm_dlkm_specific
,
optimize_for_size
,
overrides
,
owner
,
prefer
,
prefix_symbols
,
product_available
,
product_specific
,
product_variables.arc
,
product_variables.build_from_text_stub
,
product_variables.debuggable
,
product_variables.eng
,
product_variables.malloc_low_memory
,
product_variables.native_coverage
,
product_variables.release_aidl_use_unfrozen
,
product_variables.selinuxignoreneverallows
,
product_variables.unbundled_build
,
proprietary
,
ramdisk
,
ramdisk_available
,
recovery
,
recovery_available
,
required
,
sanitize
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
source_module_name
,
static_libs
,
stl
,
system_dlkm_specific
,
system_ext_specific
,
system_shared_libs
,
target
,
target.android
,
target.host
,
target.platform
,
target.recovery
,
target_required
,
team
,
use_generic_config
,
use_source_config_var
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_ramdisk
,
vendor_ramdisk_available
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
name
string, The name of the module. Must be unique across all modules.
srcs
list of string
defaults
list of string
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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
bootstrap
bool, Allows this module to use non-APEX version of libraries. Useful
for building binaries that are started before APEXes are activated.
clang
bool, Deprecated. true is the default, false is invalid.
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).
crt
bool, Indicates that this module is a CRT object. CRT objects will be split
into a variant per-API level between min_sdk_version and current.
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.
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_ndk_sysroot
bool, Indicates that this module should not be included in the NDK sysroot.
Only applies to CRT objects. Defaults to false.
host_cross_supported
bool, If set to true, build a variant of the module for the host cross. Defaults to true.
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
installable
bool
licenses
list of string, Describes the licenses applicable to this module. Must reference license modules.
linker_script
string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
logtags
list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags
file
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)
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.
objs
list of string, names of other cc_object modules to link into this module using partial linking
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.
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.
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.
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
⊕shared_libs
⊕static_libs
⊕srcs
⊕product_variables.build_from_text_stub
⊕product_variables.debuggable
⊕init_rc
⊕required
⊕host_required
⊕target_required
⊕static_libs
⊕shared_libs
⊕srcs
⊕product_variables.eng
⊕product_variables.malloc_low_memory
⊕shared_libs
⊕static_libs
⊕srcs
⊕product_variables.native_coverage
⊕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
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
required
configurable list of string, names of other modules to install if this module is installed
⊕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 shared library modules should only provide headers for 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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
static_libs
configurable list of string, list of static library modules that should only provide headers for this module.
stl
string, Select the STL library to use. Possible values are "libc++",
"libc++_static", "libstdc++", or "none". Leave blank to select the
default.
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 default libraries that will provide headers for this module. If unset, generally
defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
target
interface
⊕target.android
compile_multilib
string
enabled
bool
⊕target.host
⊕target.platform
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.
⊕target.recovery
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.
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.
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.
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.
llvm_darwin_filegroup
name
,
srcs
,
exclude_srcs
,
defaults
,
compile_multilib
,
debug_ramdisk
,
device_common_srcs
,
device_first_srcs
,
device_specific
,
dist
,
dists
,
enabled
,
export_to_make_var
,
host_required
,
init_rc
,
licenses
,
native_bridge_supported
,
no_full_install
,
odm_dlkm_specific
,
overrides
,
owner
,
path
,
product_specific
,
product_variables.arc
,
product_variables.debuggable
,
product_variables.malloc_low_memory
,
product_variables.native_coverage
,
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.
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
⊕product_variables.debuggable
⊕init_rc
⊕required
⊕host_required
⊕target_required
⊕srcs
⊕exclude_srcs
⊕product_variables.malloc_low_memory
⊕product_variables.native_coverage
⊕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.
llvm_host_defaults
name
,
srcs
,
exclude_srcs
,
defaults
,
host_supported
,
device_supported
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
auto_gen_config
,
bootstrap
,
bpf_target
,
c_std
,
cflags
,
check_elf_files
,
clang
,
clang_asflags
,
clang_cflags
,
clang_verify
,
cmake_snapshot_supported
,
compile_multilib
,
conlyflags
,
corpus
,
cpp_std
,
cppflags
,
crt
,
data
,
data_bins
,
data_libs
,
debug_ramdisk
,
defaults_visibility
,
device_common_corpus
,
device_common_data
,
device_first_data
,
device_first_generated_headers
,
device_specific
,
dictionary
,
disable_framework
,
dist
,
dists
,
double_loadable
,
dynamic_list
,
enabled
,
exclude_from_ndk_sysroot
,
exclude_generated_sources
,
exclude_runtime_libs
,
exclude_shared_libs
,
exclude_static_libs
,
export_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
fuzz_config
,
fuzzing_frameworks
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
gtest
,
header_abi_checker
,
header_libs
,
host_common_data
,
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
,
isolated
,
ldflags
,
lex
,
licenses
,
linker_script
,
linker_scripts
,
llndk
,
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
,
no_named_install_directory
,
nocrt
,
objs
,
odm_available
,
odm_dlkm_specific
,
openmp
,
optimize_for_size
,
orderfile
,
overrides
,
owner
,
pack_relocations
,
per_testcase_directory
,
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
,
require_root
,
required
,
rtti
,
runtime_libs
,
sanitize
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared
,
shared_libs
,
soc_specific
,
source_module_name
,
standalone_test
,
static
,
static_executable
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
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
,
test_config
,
test_config_template
,
test_mainline_modules
,
test_options
,
test_suites
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
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
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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
auto_gen_config
bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml
doesn't exist next to the Android.bp, this attribute doesn't need to be set to true
explicitly.
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)
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
corpus
list of string, Optional list of seed files to be installed to the fuzz target's output
directory.
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).
If this is set, the file extension will be ignored and this will be used as the std version value. Setting this
to "default" will use the build system default version. This cannot be set at the same time as c_std.
cppflags
configurable list of string, list of c++ specific clang flags required to correctly interpret the headers.
This is provided primarily to make sure cppflags defined in cc_defaults are pulled in.
crt
bool, Indicates that this module is a CRT object. CRT objects will be split
into a variant per-API level between min_sdk_version and current.
data
list of string, Optional list of data files to be installed to the fuzz target's output
directory. Directory structure relative to the module is preserved.
data_bins
list of string, list of binary modules that should be installed alongside the test
data_libs
list of string, list of shared library modules that should be installed alongside the test
debug_ramdisk
bool, Whether this module is installed to debug ramdisk
defaults_visibility
list of string, Controls the visibility of the defaults module itself.
device_common_corpus
list of string, Same as corpus, but adds dependencies on module references using the device's os variant
and the common arch variant.
device_common_data
list of string, Same as data, but adds dependencies on modules using the device's os variant, and common
architecture's variant. Can be useful to add device-built apps to the data of a host
test.
device_first_data
list of string, Same as data, but adds dependencies on modules using the device's os variant, and the
device's first architecture's variant. Can be useful to add device-built apps to the data
of a host test.
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`.
dictionary
string, Optional dictionary to be installed to the fuzz target's output directory.
disable_framework
bool, Add RunCommandTargetPreparer to stop framework before the test and start it after the test.
⊕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_from_ndk_sysroot
bool, Indicates that this module should not be included in the NDK sysroot.
Only applies to CRT objects. Defaults to false.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
fuzz_config
FuzzConfig, Config for running the target on fuzzing infrastructure.
fuzzing_frameworks
FuzzFrameworks, Define the fuzzing frameworks this fuzz target can be built for. If
empty then the fuzz target will be available to be built for all fuzz
frameworks available
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.
gtest
bool, if set, build against the gtest library. Defaults to true.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
host_common_data
list of string, Same as data, but will add dependencies on modules using the host's os variation and
the common arch variation. Useful for a device test that wants to depend on a host
module, for example to include a custom Tradefed test runner.
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.
isolated
bool, if set, use the isolated gtest runner. Defaults to false.
Isolation is not supported on Windows.
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_script
string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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
no_named_install_directory
bool, Disables the creation of a test-specific directory when used with
relative_install_path. Useful if several tests need to be in the same
directory.
nocrt
bool, don't link in crt_begin and crt_end. This flag should only be necessary for
compiling crt or libc.
objs
list of string, names of other cc_object modules to link into this module using partial linking
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, 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.
per_testcase_directory
bool, Install the test into a folder named for the module in all test suites.
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
require_root
bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run
with root permission.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
shared_libs
configurable list of string, list of shared libraries that provide headers for this binding.
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
standalone_test
bool, Install the test's dependencies into a folder named standalone-libs relative to the
test's installation path. ld-library-path will be set to this path in the test's
auto-generated config. This way the dependencies can be used by the test without having
to manually install them to the device. See more details in
go/standalone-native-device-tests.
⊕static
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
static_executable
bool, compile executable with -static
static_libs
configurable list of string, list of static libraries that provide headers for this binding.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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, set suffix of 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
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.
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕target.product
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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.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
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.
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.
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
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
⊕target.vendor_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.
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.
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.
test_config
string, the name of the test configuration (for example "AndroidTest.xml") that should be
installed with the module.
test_config_template
string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that
should be installed with the module.
test_mainline_modules
list of string, Add parameterized mainline modules to auto generated test config. The options will be
handled by TradeFed to download and install the specified modules on the device.
⊕test_options
TestOptions
Test options.
run_test_as
string, The UID that you want to run the test as on a device.
test_suite_tag
list of string, A list of free-formed strings without spaces that categorize the test.
min_shipping_api_level
int64, Add ShippingApiLevelModuleController to auto generated test config. If the device properties
for the shipping api level is less than the min_shipping_api_level, skip this module.
vsr_min_shipping_api_level
int64, Add ShippingApiLevelModuleController to auto generated test config. If any of the device
shipping api level and vendor api level properties are less than the
vsr_min_shipping_api_level, skip this module.
As this includes the shipping api level check, it is not allowed to define
min_shipping_api_level at the same time with this property.
min_vndk_version
int64, Add MinApiLevelModuleController with ro.vndk.version property. If ro.vndk.version has an
integer value and the value is less than the min_vndk_version, skip this module.
test_runner_options
list of *ast.SelectorExpr, Extra <option> tags to add to the auto generated test xml file under the test runner, e.g., GTest.
The "key" is optional in each of these.
unit_test
bool, If the test is a hostside (no device required) unittest that shall be run
during presubmit check.
tags
list of string, Tags provide additional metadata to customize test execution by downstream
test runners. The tags have no special meaning to Soong.
test_suites
list of string, list of compatibility suites (for example "cts", "vts") that the module should be
installed into.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
name
,
src
,
arch
,
compile_multilib
,
debug_ramdisk
,
deps
,
device_specific
,
dist
,
dists
,
enabled
,
export_to_make_var
,
host_required
,
init_rc
,
licenses
,
multilib
,
native_bridge_supported
,
no_full_install
,
odm_dlkm_specific
,
overrides
,
owner
,
prefer
,
product_specific
,
product_variables.debuggable
,
product_variables.native_coverage
,
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
,
target.android
,
target.host
,
target_required
,
team
,
use_generic_config
,
use_source_config_var
,
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.
src
string, Source file to be executed for this build tool
arch
interface
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
deps
list of string, Extra files that should trigger rules using this tool to rebuild
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 path to
this prebuilt built tool, 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.
multilib
interface
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
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
⊕deps
⊕product_variables.native_coverage
⊕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
interface
⊕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.
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_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
llvm_prebuilt_library_shared
name
,
srcs
,
exclude_srcs
,
defaults
,
host_supported
,
device_supported
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
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
,
llndk
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared
,
shared_libs
,
soc_specific
,
source_module_name
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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, set suffix of the name of the output
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
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.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
⊕target.product
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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.ramdisk
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.
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.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.
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.
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.
⊕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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
⊕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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
llvm_prebuilt_library_static
name
,
srcs
,
exclude_srcs
,
defaults
,
host_supported
,
device_supported
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
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
,
llndk
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
source_module_name
,
static
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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
host_supported
bool, If set to true, build a variant of the module for the host. Defaults to false.
device_supported
bool, If set to true, build a variant of the module for the device. Defaults to true.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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, Names of modules to be overridden. Listed modules can only be other shared libraries
(in Make or Soong).
This does not completely prevent installation of the overridden libraries, but if both
binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed
from PRODUCT_PACKAGES.
owner
string, vendor who owns this module
pack_relocations
bool, Generate compact dynamic relocation table, default true.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
⊕static
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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, set suffix of the name of the output
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
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.
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
⊕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.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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
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.
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.
⊕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
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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_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.
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.
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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
name
,
srcs
,
exclude_srcs
,
defaults
,
compile_multilib
,
debug_ramdisk
,
device_common_srcs
,
device_first_srcs
,
device_specific
,
dist
,
dists
,
enabled
,
export_to_make_var
,
host_required
,
init_rc
,
licenses
,
native_bridge_supported
,
no_full_install
,
odm_dlkm_specific
,
overrides
,
owner
,
path
,
product_specific
,
product_variables.arc
,
product_variables.debuggable
,
product_variables.malloc_low_memory
,
product_variables.native_coverage
,
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.
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
⊕product_variables.debuggable
⊕init_rc
⊕required
⊕host_required
⊕target_required
⊕srcs
⊕exclude_srcs
⊕product_variables.malloc_low_memory
⊕product_variables.native_coverage
⊕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
ndk_prebuilt_shared_stl
name
,
srcs
,
exclude_srcs
,
defaults
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
header_libs
,
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
,
llndk
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared
,
shared_libs
,
soc_specific
,
source_module_name
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
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 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.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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, set suffix of the name of the output
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.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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
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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
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.ramdisk
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.
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.recovery
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.
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.
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.
⊕target.vendor
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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_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.
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.
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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties
ndk_prebuilt_static_stl
name
,
srcs
,
exclude_srcs
,
defaults
,
afdo
,
aidl
,
allow_undefined_symbols
,
apex_available
,
arch
,
asflags
,
bootstrap
,
bpf_target
,
buildstubs
,
c_std
,
cflags
,
check_elf_files
,
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_cflags
,
export_generated_headers
,
export_header_lib_headers
,
export_include_dirs
,
export_shared_lib_headers
,
export_static_lib_headers
,
export_system_include_dirs
,
exported_symbols_list
,
force_symbols_not_weak_list
,
force_symbols_weak_list
,
generated_headers
,
generated_sources
,
gnu_extensions
,
group_static_libs
,
header_abi_checker
,
header_libs
,
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
,
llndk
,
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
,
prefer
,
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
,
sanitized.address
,
sanitized.hwaddress
,
sanitized.none
,
sdk_variant_only
,
sdk_version
,
shared_libs
,
soc_specific
,
source_module_name
,
static
,
static_libs
,
static_ndk_lib
,
stem
,
stl
,
strip
,
stubs
,
suffix
,
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
,
test_only
,
tidy
,
tidy_checks
,
tidy_checks_as_errors
,
tidy_disabled_srcs
,
tidy_flags
,
tidy_timeout_srcs
,
unexported_symbols_list
,
unique_host_soname
,
use_generic_config
,
use_source_config_var
,
use_version_lib
,
vendor
,
vendor_available
,
vendor_dlkm_specific
,
vendor_public_library
,
vendor_ramdisk
,
vendor_ramdisk_available
,
version_script
,
vintf_fragment_modules
,
vintf_fragments
,
visibility
,
whole_program_vtables
,
whole_static_libs
,
windows_import_lib
,
yacc
name
string, The name of the module. Must be unique across all modules.
srcs
configurable list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
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.
check_elf_files
bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined
symbols, etc), default true.
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
export_cflags
list of string, list of plain cc flags to be used for any module that links against this module.
export_include_dirs
configurable list of string, list of directories relative to the Blueprints file that will
be added to the include path (using -I) for this module and any module that links
against this module. Directories listed in export_include_dirs do not need to be
listed in local_include_dirs.
export_system_include_dirs
list of string, list of directories that will be added to the system include path
using -isystem for this module and any module that links against this module.
exported_symbols_list
string, local file name to pass to the linker as -exported_symbols_list
force_symbols_not_weak_list
string, local file name to pass to the linker as -force_symbols_not_weak_list
force_symbols_weak_list
string, local file name to pass to the linker as -force_symbols_weak_list
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.
Properties for ABI compatibility checker.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
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.
⊕llndk
llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from
the module pointed to by llndk_stubs if it is set.
symbol_file
string, Relative path to the symbol map.
An example file can be seen here: TODO(danalbert): Make an example.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
private
bool, whether this module can be directly depended upon by libs that are installed
to /vendor and /product.
When set to true, this module can only be depended on by VNDK libraries, not
vendor nor product libraries. This effectively hides this module from
non-system modules. Default value is false.
moved_to_apex
bool, moved_to_apex marks this module has having been distributed through an apex 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, Names of modules to be overridden. Listed modules can only be other shared libraries
(in Make or Soong).
This does not completely prevent installation of the overridden libraries, but if both
binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed
from PRODUCT_PACKAGES.
owner
string, vendor who owns this module
pack_relocations
bool, Generate compact dynamic relocation table, default true.
prefer
configurable bool, When prefer is set to true the prebuilt will be used instead of any source module with
a matching name.
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
⊕sanitized.address
⊕sanitized.hwaddress
⊕sanitized.none
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).
source_module_name
string, Name of the source soong module that gets shadowed by this prebuilt
If unspecified, follows the naming convention that the source module of
the prebuilt is Name() without "prebuilt_" prefix
⊕static
StaticOrSharedProperties
srcs
configurable list of string
tidy_disabled_srcs
list of string
tidy_timeout_srcs
list of string
⊕sanitized
Sanitized
⊕none
⊕address
⊕hwaddress
cflags
configurable list of string
enabled
bool
whole_static_libs
configurable list of string
static_libs
configurable list of string
shared_libs
configurable list of string
system_shared_libs
list of string
apex_available
list of string
installable
bool
static_libs
configurable list of string, list of modules that should be statically linked into this module.
static_ndk_lib
bool
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.
⊕stubs
StubsProperties
Generate stubs to make this library accessible to APEXes.
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, set suffix of the name of the output
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
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.
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.
cflags
list of string, List of additional cflags that should be used to build the platform
variant of the C/C++ module.
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
⊕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.
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
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
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
⊕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
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
override_export_include_dirs
list of string, list of exported include directories, like
export_include_dirs, that will be applied to
vendor or product variant of this library.
This will overwrite any other declarations.
suffix
string, set suffix of the name of the output
enabled
bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
symbol_file
string, Path to a symbol file that specifies the symbols to be included in the generated
ABI dump file
exclude_symbol_versions
list of string, Symbol versions that should be ignored from the symbol file
exclude_symbol_tags
list of string, Symbol tags that should be ignored from the symbol file
check_all_apis
bool, Run checks on all APIs (in addition to the ones referred by
one of exported ELF symbols.)
diff_flags
list of string, Extra flags passed to header-abi-diff
ref_dump_dirs
list of string, Opt-in reference dump directories
no_stubs
bool, Disable stubs for vendor/product variants
This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
It would be nice if we could put `stubs` into a `target: { core: {} }`
block but it's not supported in soong yet. This could be removed/simplified once we have
a better syntax.
⊕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.
test_only
bool, Indicates that the module and its source code are only used in tests, not
production code. Used by coverage reports and potentially other tools.
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.
unexported_symbols_list
string, local file name to pass to the linker as -unexported_symbols_list
unique_host_soname
bool, rename host libraries to prevent overlap with system installed libraries
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.
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_public_library
vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
symbol_file
string, Relative path to the symbol map.
unversioned
bool, Whether the system library uses symbol versions.
override_export_include_dirs
list of string, list of directories relative to the Blueprints file that willbe added to the include path
(using -I) for any module that links against the LLNDK variant of this module, replacing
any that were listed outside the llndk clause.
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.
windows_import_lib
string, Optionally provide an import library if this is a Windows PE DLL prebuilt.
This is needed only if this library is linked by other modules in build time.
Only makes sense for the Windows target.
yacc
YaccProperties