Build Docs

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

Default: true

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

Default: true

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

aaptflags

flags passed to aapt when creating the apk

Type: list of strings

asset_dirs

list of directories relative to the Blueprints file containing assets. Defaults to "assets"

Type: list of strings

resource_dirs

list of directories relative to the Blueprints file containing Android resources

Type: list of strings

manifest

path to AndroidManifest.xml. If unset, defaults to "AndroidManifest.xml".

Type: string

certificate

path to a certificate, or the name of a certificate in the default certificate directory, or blank to use the default product certificate

Type: string

additional_certificates

paths to extra certificates to sign the apk with

Type: list of strings

export_package_resources

If set, create package-export.apk, which other packages can use to get PRODUCT-agnostic resource data like IDs and type definitions.

Type: bool

privileged

Specifies that this app should be installed to the priv-app directory, where the system will grant it additional privileges not available to normal apps.

Type: bool

package_splits

list of resource labels to generate individual resource packages

Type: list of strings

instrumentation_for

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

aaptflags

flags passed to aapt when creating the apk

Type: list of strings

asset_dirs

list of directories relative to the Blueprints file containing assets. Defaults to "assets"

Type: list of strings

resource_dirs

list of directories relative to the Blueprints file containing Android resources

Type: list of strings

manifest

path to AndroidManifest.xml. If unset, defaults to "AndroidManifest.xml".

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

aars

Type: list of strings

sdk_version

Type: string

static_libs

Type: list of strings

libs

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

arm

Type: codegenArchProperties

arm64

Type: codegenArchProperties

mips

Type: codegenArchProperties

mips64

Type: codegenArchProperties

x86

Type: codegenArchProperties

x86_64

Type: codegenArchProperties

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

srcs

Type: list of strings

cflags

Type: list of strings

include_dirs

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

out

names of the output files that will be generated

Type: list of strings

cmd

The command to run on one or more input files. Cmd supports substitution of a few variables (the actual substitution is implemented in GenerateAndroidBuildActions below) Available variables for substitution:

 $(location): the path to the first entry in tools or tool_files
 $(location <label>): the path to the tool or tool_file with name <label>
 $(in): one or more input files
 $(out): a single output file
 $(depfile): a file to which dependencies will be written, if the depfile property is set to true
 $(genDir): the sandbox directory for this tool; contains $(out)
 $$: a literal $
All files used must be declared as inputs (to ensure proper up-to-date checks). Use "$(in)" directly in Cmd to ensure that all inputs used are declared.

Type: string

depfile

Enable reading a file containing dependencies in gcc format after the command completes

Type: bool

tools

name of the modules (if any) that produces the host executable. Leave empty for prebuilts or scripts that do not need a module to build them.

Type: list of strings

tool_files

Local file that is used as the tool

Type: list of strings

export_include_dirs

List of directories to export generated headers from

Type: list of strings

srcs

list of input files

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

objs

names of other cc_object modules to link into this module using partial linking

Type: list of strings

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

in

Type: string

outs

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

custom_template

directory relative to top of the source tree that contains doc templates files.

Type: string

html_dirs

directories relative to top of the source tree which contains html/jd files.

Type: list of strings

hdf

set a value in the Clearsilver hdf namespace.

Type: list of strings

proofread_file

proofread file contains all of the text content of the javadocs concatenated into one file, suitable for spell-checking and other goodness.

Type: string

todo_file

a todo file lists the program elements that are missing documentation. At some point, this might be improved to show more warnings.

Type: string

arg_files

local files that are used within user customized droiddoc options.

Type: list of strings

args

user customized droiddoc args. Available variables for substitution:

 $(location <label>): the path to the arg_files with name <label>

Type: string

out

names of the output files used in args that will be generated

Type: list of strings

knowntags

a list of files under current module source dir which contains known tags in Java sources. filegroup or genrule can be included within this property.

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

local_sourcepaths

list of directories rooted at the Android.bp file that will be added to the search paths for finding source files when passing package names.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files filegroup or genrule can be included within this property.

Type: list of strings

libs

list of of java libraries that will be in the classpath.

Type: list of strings

installable

If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.

Type: bool

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

custom_template

directory relative to top of the source tree that contains doc templates files.

Type: string

html_dirs

directories relative to top of the source tree which contains html/jd files.

Type: list of strings

hdf

set a value in the Clearsilver hdf namespace.

Type: list of strings

proofread_file

proofread file contains all of the text content of the javadocs concatenated into one file, suitable for spell-checking and other goodness.

Type: string

todo_file

a todo file lists the program elements that are missing documentation. At some point, this might be improved to show more warnings.

Type: string

arg_files

local files that are used within user customized droiddoc options.

Type: list of strings

args

user customized droiddoc args. Available variables for substitution:

 $(location <label>): the path to the arg_files with name <label>

Type: string

out

names of the output files used in args that will be generated

Type: list of strings

knowntags

a list of files under current module source dir which contains known tags in Java sources. filegroup or genrule can be included within this property.

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

local_sourcepaths

list of directories rooted at the Android.bp file that will be added to the search paths for finding source files when passing package names.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files filegroup or genrule can be included within this property.

Type: list of strings

libs

list of of java libraries that will be in the classpath.

Type: list of strings

installable

If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.

Type: bool

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

path

path to the directory containing the droiddoc templates.

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

srcs

srcs lists files that will be included in this filegroup

Type: list of strings

exclude_srcs

Type: list of strings

path

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.

Type: string

export_to_make_var

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.

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

out

names of the output files that will be generated

Type: list of strings

cmd

The command to run on one or more input files. Cmd supports substitution of a few variables (the actual substitution is implemented in GenerateAndroidBuildActions below) Available variables for substitution:

 $(location): the path to the first entry in tools or tool_files
 $(location <label>): the path to the tool or tool_file with name <label>
 $(in): one or more input files
 $(out): a single output file
 $(depfile): a file to which dependencies will be written, if the depfile property is set to true
 $(genDir): the sandbox directory for this tool; contains $(out)
 $$: a literal $
All files used must be declared as inputs (to ensure proper up-to-date checks). Use "$(in)" directly in Cmd to ensure that all inputs used are declared.

Type: string

depfile

Enable reading a file containing dependencies in gcc format after the command completes

Type: bool

tools

name of the modules (if any) that produces the host executable. Leave empty for prebuilts or scripts that do not need a module to build them.

Type: list of strings

tool_files

Local file that is used as the tool

Type: list of strings

export_include_dirs

List of directories to export generated headers from

Type: list of strings

srcs

list of input files

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

output_extension

extension that will be substituted for each output file

Type: string

cmd

The command to run on one or more input files. Cmd supports substitution of a few variables (the actual substitution is implemented in GenerateAndroidBuildActions below) Available variables for substitution:

 $(location): the path to the first entry in tools or tool_files
 $(location <label>): the path to the tool or tool_file with name <label>
 $(in): one or more input files
 $(out): a single output file
 $(depfile): a file to which dependencies will be written, if the depfile property is set to true
 $(genDir): the sandbox directory for this tool; contains $(out)
 $$: a literal $
All files used must be declared as inputs (to ensure proper up-to-date checks). Use "$(in)" directly in Cmd to ensure that all inputs used are declared.

Type: string

depfile

Enable reading a file containing dependencies in gcc format after the command completes

Type: bool

tools

name of the modules (if any) that produces the host executable. Leave empty for prebuilts or scripts that do not need a module to build them.

Type: list of strings

tool_files

Local file that is used as the tool

Type: list of strings

export_include_dirs

List of directories to export generated headers from

Type: list of strings

srcs

list of input files

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

hidl_gen_args

Type: string

srcs

Type: list of strings

out

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

owner

The owner of the module

Type: string

srcs

List of .hal files which compose this interface.

Type: list of strings

interfaces

List of hal interface packages that this library depends on.

Type: list of strings

root

Package root for this package, must be a prefix of name

Type: string

types

List of non-TypeDef types declared in types.hal.

Type: list of strings

gen_java

Whether to generate the Java library stubs. Default: true

Type: bool

gen_java_constants

Whether to generate a Java library containing constants expressed by @export annotations in the hal files.

Type: bool

core_interface

Don't generate "android.hidl.foo@1.0" C library. Instead only generate the genrules so that this package can be included in libhidltransport.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

wrapper

installable script to execute the resulting jar

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

wrapper

installable script to execute the resulting jar

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

out

names of the output files that will be generated

Type: list of strings

cmd

The command to run on one or more input files. Cmd supports substitution of a few variables (the actual substitution is implemented in GenerateAndroidBuildActions below) Available variables for substitution:

 $(location): the path to the first entry in tools or tool_files
 $(location <label>): the path to the tool or tool_file with name <label>
 $(in): one or more input files
 $(out): a single output file
 $(depfile): a file to which dependencies will be written, if the depfile property is set to true
 $(genDir): the sandbox directory for this tool; contains $(out)
 $$: a literal $
All files used must be declared as inputs (to ensure proper up-to-date checks). Use "$(in)" directly in Cmd to ensure that all inputs used are declared.

Type: string

depfile

Enable reading a file containing dependencies in gcc format after the command completes

Type: bool

tools

name of the modules (if any) that produces the host executable. Leave empty for prebuilts or scripts that do not need a module to build them.

Type: list of strings

tool_files

Local file that is used as the tool

Type: list of strings

export_include_dirs

List of directories to export generated headers from

Type: list of strings

srcs

list of input files

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

jars

Type: list of strings

sdk_version

Type: string

installable

Type: bool

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

jars

Type: list of strings

sdk_version

Type: string

installable

Type: bool

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files

Type: list of strings

java_resource_dirs

list of directories containing Java resources

Type: list of strings

exclude_java_resource_dirs

list of directories that should be excluded from java_resource_dirs

Type: list of strings

java_resources

list of files to use as Java resources

Type: list of strings

exclude_java_resources

list of files that should be excluded from java_resources

Type: list of strings

no_standard_libs

don't build against the default libraries (bootclasspath, legacy-test, core-junit, ext, and framework for device targets)

Type: bool

no_framework_libs

don't build against the framework libraries (legacy-test, core-junit, ext, and framework for device targets)

Type: bool

javacflags

list of module-specific flags that will be used for javac compiles

Type: list of strings

libs

list of of java libraries that will be in the classpath

Type: list of strings

static_libs

list of java libraries that will be compiled into the resulting jar

Type: list of strings

manifest

manifest file to be included in resulting jar

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

java_version

If not blank, set the java version passed to javac as -source and -target

Type: string

installable

If set to false, don't allow this module to be installed. Defaults to true.

Type: bool

Default: false

include_srcs

If set to true, include sources used to compile the module in to the final jar

Type: bool

annotation_processors

List of modules to use as annotation processors

Type: list of strings

annotation_processor_classes

List of classes to pass to javac to use as annotation processors

Type: list of strings

javac_shard_size

The number of Java source entries each Javac instance can process

Type: int64

use_tools_jar

Add host jdk tools.jar to bootclasspath

Type: bool

srcs

List of source files that should only be used when passing -source 1.9

Type: list of strings

javacflags

List of javac flags that should only be used when passing -source 1.9

Type: list of strings

include_filter

List of classes to include for instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. If unset defaults to all classes. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

exclude_filter

List of classes to exclude from instrumentation with jacoco to collect coverage information at runtime when building with coverage enabled. Overrides classes selected by the include_filter property. Supports '*' as the last character of an entry in the list as a wildcard match. If preceded by '.' it matches all classes in the package and subpackages, otherwise it matches classes in the package that have the class name as a prefix.

Type: list of strings

javacflags

List of javac flags that should only be used when running errorprone.

Type: list of strings

output_params

List of extra options that will be passed to the proto generator.

Type: list of strings

dxflags

list of module-specific flags that will be used for dex compiles

Type: list of strings

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

include_dirs

Top level directories to pass to aidl tool

Type: list of strings

local_include_dirs

Directories rooted at the Android.bp file to pass to aidl tool

Type: list of strings

export_include_dirs

directories that should be added as include directories for any aidl sources of modules that depend on this module, as well as to aidl for this module.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

hostdex

If true, export a copy of the module as a -hostdex module for host testing.

Type: bool

enabled

If false, prevent dexpreopting and stripping the dex file from the final jar. Defaults to true.

Type: bool

app_image

If true, generate an app image (.art file) for this module.

Type: bool

profile_guided

If true, use a checked-in profile to guide optimization. Defaults to false unless a matching profile is set or a profile is found in PRODUCT_DEX_PREOPT_PROFILE_DIR that matches the name of this module, in which case it is defaulted to true.

Type: bool

profile

If set, provides the path to profile relative to the Android.bp file. If not set, defaults to searching for a file that matches the name of this module in the default profile location set by PRODUCT_DEX_PREOPT_PROFILE_DIR, or empty if not found.

Type: string

enabled

If false, disable all optimization. Defaults to true for apps, false for libraries and tests.

Type: bool

shrink

If true, optimize for size by removing unused code. Defaults to true for apps, false for libraries and tests.

Type: bool

optimize

If true, optimize bytecode. Defaults to false.

Type: bool

obfuscate

If true, obfuscate bytecode. Defaults to false.

Type: bool

no_aapt_flags

If true, do not use the flag files generated by aapt that automatically keep classes referenced by the app manifest. Defaults to false.

Type: bool

proguard_flags

Flags to pass to proguard.

Type: list of strings

proguard_flags_files

Specifies the locations of files containing proguard flags.

Type: list of strings

system_modules

When targeting 1.9, override the modules to use with --system

Type: string

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

libs

List of java library modules that should be included in the system modules

Type: list of strings

jars

List of prebuilt jars that should be included in the system modules

Type: list of strings

sdk_version

Sdk version that should be included in the system modules

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

local_sourcepaths

list of directories rooted at the Android.bp file that will be added to the search paths for finding source files when passing package names.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files filegroup or genrule can be included within this property.

Type: list of strings

libs

list of of java libraries that will be in the classpath.

Type: list of strings

installable

If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.

Type: bool

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

srcs

list of source files used to compile the Java module. May be .java, .logtags, .proto, or .aidl files.

Type: list of strings

local_sourcepaths

list of directories rooted at the Android.bp file that will be added to the search paths for finding source files when passing package names.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the Java module. This is most useful in the arch/multilib variants to remove non-common files filegroup or genrule can be included within this property.

Type: list of strings

libs

list of of java libraries that will be in the classpath.

Type: list of strings

installable

If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.

Type: bool

sdk_version

if not blank, set to the version of the sdk to compile against

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Creates a stub shared library based on the provided version file. Example: llndk_library { name: "libfoo", symbol_file: "libfoo.map.txt", export_include_dirs: ["include_vndk"], }

symbol_file

Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.

Type: string

export_headers_as_system

Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.

Type: bool

export_preprocessed_headers

Which headers to process with versioner. This really only handles bionic/libc/include right now.

Type: list of strings

unversioned

Whether the system library uses symbol versions.

Type: bool

vendor_available

whether this module can be directly depended upon by libs that are installed to /vendor. When set to false, this module can only be depended on by VNDK libraries, not vendor libraries. This effectively hides this module from vendors. Default value is true.

Type: bool

Default: true

export_llndk_headers

list of llndk headers to re-export include directories from.

Type: list of strings

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

none

Type: bool

Default: true

keep_symbols

Type: bool

pack_relocations

Type: bool

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Creates a stub shared library based on the provided version file. Example: llndk_library { name: "libfoo", symbol_file: "libfoo.map.txt", export_include_dirs: ["include_vndk"], }

symbol_file

Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.

Type: string

export_headers_as_system

Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.

Type: bool

export_preprocessed_headers

Which headers to process with versioner. This really only handles bionic/libc/include right now.

Type: list of strings

unversioned

Whether the system library uses symbol versions.

Type: bool

vendor_available

whether this module can be directly depended upon by libs that are installed to /vendor. When set to false, this module can only be depended on by VNDK libraries, not vendor libraries. This effectively hides this module from vendors. Default value is true.

Type: bool

Default: true

export_llndk_headers

list of llndk headers to re-export include directories from.

Type: list of strings

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

static_executable

compile executable with -static

Type: bool

stem

set the name of the output

Type: string

suffix

append to the name of the output

Type: string

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

version_script

local file name to pass to the linker as --version_script

Type: string

symlink_preferred_arch

if set, install a symlink to the preferred architecture

Type: bool

symlinks

install symlinks to the binary. Symlink names will have the suffix and the binary extension (if any) appended

Type: list of strings

no_pie

do not pass -pie

Type: bool

overrides

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.

Type: list of strings

gtest

if set, build against the gtest library. Defaults to true.

Type: bool

test_per_src

Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.

Type: bool

no_named_install_directory

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, but test_per_src doesn't work.

Type: bool

data

list of files or filegroup modules that provide data that should be installed alongside the test

Type: list of strings

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

tags

Type: list of strings

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

none

Type: bool

keep_symbols

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

prefer

When prefer is set to true the prebuilt will be used instead of any source module with a matching name.

Type: bool

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

in

Type: string

outs

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

from

Base directory of the headers being installed. As an example: ndk_headers {

    name: "foo",
    from: "include",
    to: "",
    srcs: ["include/foo/bar/baz.h"],
} Will install $SYSROOT/usr/include/foo/bar/baz.h. If `from` were instead "include/foo", it would have installed $SYSROOT/usr/include/bar/baz.h.

Type: string

to

Install path within the sysroot. This is relative to usr/include.

Type: string

srcs

List of headers to install. Glob compatible. Common case is "include/**/*.h".

Type: list of strings

license

Path to the NOTICE file associated with the headers.

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Creates a stub shared library based on the provided version file. Example: ndk_library { name: "libfoo", symbol_file: "libfoo.map.txt", first_version: "9", }

symbol_file

Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.

Type: string

first_version

The first API level a library was available. A library will be generated for every API level beginning with this one.

Type: string

unversioned_until

The first API level that library should have the version script applied. This defaults to the value of first_version, and should almost never be used. This is only needed to work around platform bugs like https://github.com/android-ndk/ndk/issues/265.

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

objs

names of other cc_object modules to link into this module using partial linking

Type: list of strings

prefix_symbols

if set, add an extra objcopy --prefix-symbols= step

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

Default: minimum

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

Default: none

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

stl

Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.

Type: string

enable AddressSanitizer, ThreadSanitizer, or UndefinedBehaviorSanitizer

never

Type: bool

address

main sanitizers

Type: bool

thread

Type: bool

undefined

local sanitizers

Type: bool

all_undefined

Type: bool

misc_undefined

Type: list of strings

coverage

Type: bool

safestack

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

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

Type: bool

cfi

Type: bool

integer_overflow

Type: bool

misc_undefined

Type: list of strings

recover

value to pass to -fsanitize-recover=

Type: list of strings

blacklist

value to pass to -fsanitize-blacklist

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

from

Base directory of the headers being installed. As an example: preprocessed_ndk_headers {

    name: "foo",
    from: "include",
    to: "",
} Will install $SYSROOT/usr/include/foo/bar/baz.h. If `from` were instead "include/foo", it would have installed $SYSROOT/usr/include/bar/baz.h.

Type: string

to

Install path within the sysroot. This is relative to usr/include.

Type: string

license

Path to the NOTICE file associated with the headers.

Type: string

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

main

the name of the source file that is the main entry point of the program. this file must also be listed in srcs. If left unspecified, module name is used instead. If name doesn’t match any filename in srcs, main must be specified.

Type: string

stem

set the name of the output binary.

Type: string

suffix

append to the name of the output binary.

Type: string

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

host_supported

Type: bool

device_supported

Type: bool

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

main

the name of the source file that is the main entry point of the program. this file must also be listed in srcs. If left unspecified, module name is used instead. If name doesn’t match any filename in srcs, main must be specified.

Type: string

stem

set the name of the output binary.

Type: string

suffix

append to the name of the output binary.

Type: string

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

properties that apply to python libraries and binaries.

pkg_path

the package path prefix within the output artifact at which to place the source/data files of the current module. eg. Pkg_path = "a/b/c"; Other packages can reference this module by using (from a.b.c import ...) statement. if left unspecified, all the source/data files of current module are copied to "runfiles/" tree directory directly.

Type: string

is_internal

true, if the Python module is used internally, eg, Python std libs.

Type: bool

srcs

list of source (.py) files compatible both with Python2 and Python3 used to compile the Python module. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module". Srcs has to be non-empty.

Type: list of strings

exclude_srcs

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

Type: list of strings

data

list of files or filegroup modules that provide data that should be installed alongside the test. the file extension can be arbitrary except for (.py).

Type: list of strings

libs

list of the Python libraries compatible both with Python2 and Python3.

Type: list of strings

py2

all the "srcs" or Python dependencies that are to be used only for Python2.

Type: VersionProperties

py3

all the "srcs" or Python dependencies that are to be used only for Python3.

Type: VersionProperties

main

the name of the source file that is the main entry point of the program. this file must also be listed in srcs. If left unspecified, module name is used instead. If name doesn’t match any filename in srcs, main must be specified.

Type: string

stem

set the name of the output binary.

Type: string

suffix

append to the name of the output binary.

Type: string

test_suites

list of compatibility suites (for example "cts", "vts") that the module should be installed into.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

Default: false

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

srcs

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".

Type: list of strings

exclude_srcs

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

Type: list of strings

cflags

list of module-specific flags that will be used for C and C++ compiles.

Type: list of strings

cppflags

list of module-specific flags that will be used for C++ compiles

Type: list of strings

conlyflags

list of module-specific flags that will be used for C compiles

Type: list of strings

asflags

list of module-specific flags that will be used for .S compiles

Type: list of strings

clang_cflags

list of module-specific flags that will be used for C and C++ compiles when compiling with clang

Type: list of strings

clang_asflags

list of module-specific flags that will be used for .S compiles when compiling with clang

Type: list of strings

yaccflags

list of module-specific flags that will be used for .y and .yy compiles

Type: list of strings

instruction_set

the instruction set architecture to use to compile the C/C++ module.

Type: string

include_dirs

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.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the include path using -I

Type: list of strings

generated_sources

list of generated sources to compile. These are the names of gensrcs or genrule modules.

Type: list of strings

generated_headers

list of generated headers to add to the include path. These are the names of genrule modules.

Type: list of strings

rtti

pass -frtti instead of -fno-rtti

Type: bool

c_std

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).

Type: string

cpp_std

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).

Type: string

gnu_extensions

if set to false, use -std=c++* instead of -std=gnu++*

Type: bool

include_dirs

list of directories that will be added to the aidl include paths.

Type: list of strings

local_include_dirs

list of directories relative to the Blueprints file that will be added to the aidl include paths.

Type: list of strings

generate_traces

whether to generate traces (for systrace) for this interface

Type: bool

include_dirs

list of directories that will be added to the llvm-rs-cc include paths

Type: list of strings

flags

list of flags that will be passed to llvm-rs-cc

Type: list of strings

target_api

Renderscript API level to target

Type: string

cflags

list of module-specific flags that will be used for C and C++ compiles in debug or release builds

Type: list of strings

srcs

list of source files that should only be used in the vendor variant of the C/C++ module.

Type: list of strings

exclude_srcs

list of source files that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

cflags

List of additional cflags that should be used to build the vendor variant of the C/C++ module.

Type: list of strings

static

Link statically against the protobuf runtime

Type: bool

openmp

Build and link with OpenMP

Type: bool

type

Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.

Type: string

include_dirs

list of directories that will be added to the protoc include paths.

Type: list of strings

local_include_dirs

list of directories relative to the bp file that will be added to the protoc include paths.

Type: list of strings

canonical_path_from_root

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.

Type: bool

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

keep_symbols

Type: bool

pack_relocations

Type: bool

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

host_supported

Type: bool

device_supported

Type: bool

defaults

Type: list of strings

Creates a stub shared library for a vendor public library. Vendor public libraries are vendor libraries (owned by them and installed to /vendor partition) that are exposed to Android apps via JNI. The libraries are made public by being listed in /vendor/etc/public.libraries.txt. This stub library is a build-time only artifact that provides symbols that are exposed from a vendor public library. Example: vendor_public_library { name: "libfoo", symbol_file: "libfoo.map.txt", export_public_headers: ["libfoo_headers"], } cc_headers { name: "libfoo_headers", export_include_dirs: ["include"], }

symbol_file

Relative path to the symbol map.

Type: string

unversioned

Whether the system library uses symbol versions.

Type: bool

export_public_headers

list of header libs to re-export include directories from.

Type: list of strings

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

Creates vndk prebuilts that include the VNDK version. Example: vndk_prebuilt_shared { name: "libfoo", version: "27.1.0", vendor_available: true, vndk: { enabled: true, }, export_include_dirs: ["include/external/libfoo/vndk_include"], arch: { arm64: { srcs: ["arm/lib64/libfoo.so"], }, arm: { srcs: ["arm/lib/libfoo.so"], }, }, }

version

VNDK snapshot version.

Type: string

target_arch

Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64_ab')

Type: string

srcs

Prebuilt files for each arch.

Type: list of strings

Properties used to compile all C or C++ modules

clang

compile module with clang instead of gcc

Type: bool

sdk_version

Minimum sdk version supported when compiling against the ndk

Type: string

logtags

*.logtags files, to combine together in order to generate the /system/etc/event-log-tags file

Type: list of strings

vendor_available

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. Default value is true when vndk: {enabled: true} or vendor: true. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk

Type: bool

tags

Type: list of strings

whole_static_libs

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.

Type: list of strings

static_libs

list of modules that should be statically linked into this module.

Type: list of strings

shared_libs

list of modules that should be dynamically linked into this module.

Type: list of strings

header_libs

list of modules that should only provide headers for this module.

Type: list of strings

ldflags

list of module-specific flags that will be used for all link steps

Type: list of strings

system_shared_libs

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.

Type: list of strings

allow_undefined_symbols

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.

Type: bool

no_libgcc

don't link in libgcc.a

Type: bool

host_ldlibs

-l arguments to pass to linker for host-provided shared libraries

Type: list of strings

export_shared_lib_headers

list of shared libraries to re-export include directories from. Entries must be present in shared_libs.

Type: list of strings

export_static_lib_headers

list of static libraries to re-export include directories from. Entries must be present in static_libs.

Type: list of strings

export_header_lib_headers

list of header libraries to re-export include directories from. Entries must be present in header_libs.

Type: list of strings

export_generated_headers

list of generated headers to re-export include directories from. Entries must be present in generated_headers.

Type: list of strings

nocrt

don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.

Type: bool

group_static_libs

group static libraries. This can resolve missing symbols issues with interdependencies between static libraries, but it is generally better to order them correctly instead.

Type: bool

exclude_shared_libs

list of shared libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

exclude_static_libs

list of static libs that should not be used to build the vendor variant of the C/C++ module.

Type: list of strings

use_version_lib

make android::build:GetBuildNumber() available containing the build ID.

Type: bool

srcs

Type: list of strings

cflags

Type: list of strings

enabled

Type: bool

whole_static_libs

Type: list of strings

static_libs

Type: list of strings

shared_libs

Type: list of strings

version_script

local file name to pass to the linker as --version_script

Type: string

unexported_symbols_list

local file name to pass to the linker as -unexported_symbols_list

Type: string

force_symbols_not_weak_list

local file name to pass to the linker as -force_symbols_not_weak_list

Type: string

force_symbols_weak_list

local file name to pass to the linker as -force_symbols_weak_list

Type: string

unique_host_soname

rename host libraries to prevent overlap with system installed libraries

Type: bool

export_aidl_headers

export headers generated from .aidl sources

Type: bool

export_proto_headers

export headers generated from .proto sources

Type: bool

version_script

version script for this vendor variant

Type: string

static_ndk_lib

Type: bool

export_include_dirs

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.

Type: list of strings

override_export_include_dirs

list of exported include directories, like export_include_dirs, that will be applied to the vendor variant of this library. This will overwrite any other declarations.

Type: list of strings

none

Type: bool

Default: true

keep_symbols

Type: bool

pack_relocations

Type: bool

relative_install_path

install to a subdirectory of the default install path for the module

Type: string

native_coverage

Type: bool

reexportedIncludeFlags

Type: list of strings

enabled

declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_vailable` must be explicitly set to either true or false together with `vndk: {enabled: true}`.

Type: bool

support_system_process

declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.

Type: bool

extends

Extending another module

Type: string

Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"

never

Type: bool

full

Type: bool

thin

Type: bool

instrumentation

Type: bool

sampling

Type: bool

profile_file

Type: string

benchmarks

Type: list of strings

enable_profile_use

Type: bool

cflags

Additional compiler flags to use when building this module for profiling (either instrumentation or sampling).

Type: list of strings

tidy

whether to run clang-tidy over C-like sources.

Type: bool

tidy_flags

Extra flags to pass to clang-tidy

Type: list of strings

tidy_checks

Extra checks to enable or disable in clang-tidy

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings

defaults

Type: list of strings

waylandCodegenProperties defines the properties that will be read in from the Android.bp file for each instantiation of the module.

cmd

This string gives the command line template to run on each protocol file to wayland_protocol_codegen. The string can contain one or more "$" prefixed variable names for values that can vary. At a minimum you need to use ${location}, ${out} and ${in}

 $(location): the path to the first entry in tools or tool_files
 $(location <label>): the path to the tool or tool_file with name <label>
 $(in): A protocol file from srcs
 $(out): The constructed output filename from the protocol filename.
 $$: a literal $

Type: string

prefix

The string to prepend to every protcol filename to generate the corresponding output filename. The empty string by default.

Type: string

suffix

The suffix to append to every protocol filename to generate the corresponding output filename. The empty string by default.

Type: string

srcs

The list of protocol files to process.

Type: list of strings

tools

The names of any built host executables to use for code generation. Can be left empty if a local script is used instead (specified in tool_files).

Type: list of strings

tool_files

Local files that are used for code generation. Can be scripts to run, but should also include any other files that the code generation step should depend on that might be used by the code gen tool.

Type: list of strings

name

The name of the module. Must be unique across all modules.

Type: string

tags

Type: list of strings

enabled

emit build rules for this module

Type: bool

compile_multilib

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

Type: string

compile_multilib

Type: string

proprietary

whether this is a proprietary vendor module, and should be installed into /vendor

Type: bool

owner

vendor who owns this module

Type: string

vendor

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.

Type: bool

soc_specific

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).

Type: bool

device_specific

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`.

Type: bool

product_specific

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).

Type: bool

init_rc

init.rc files to be installed if this module is installed

Type: list of strings

required

names of other modules to install if this module is installed

Type: list of strings

notice

relative path to a file to include in the list of notices for the device

Type: string

asflags

Type: list of strings

cflags

Type: list of strings

unbundled_build is a catch-all property to annotate modules that don't build in one or more unbundled branches, usually due to dependencies missing from the manifest.

enabled

Type: bool

cflags

Type: list of strings

version_script

Type: string

treble_linker_namespaces is true when the system/vendor linker namespace separation is enabled.

enforce_vintf_manifest is true when a device is required to have a vintf manifest.

cflags

Type: list of strings

cflags

Type: list of strings

debuggable is true for eng and userdebug builds, and can be used to turn on additional debugging features that don't significantly impact runtime behavior. userdebug builds are used for dogfooding and performance testing, and should be as similar to user builds as possible.

cflags

Type: list of strings

cppflags

Type: list of strings

init_rc

Type: list of strings

eng is true for -eng builds, and can be used to turn on additionaly heavyweight debugging features.

cflags

Type: list of strings

cppflags

Type: list of strings

cppflags

Type: list of strings

cflags

Type: list of strings

exclude_srcs

Type: list of strings

include_dirs

Type: list of strings

shared_libs

Type: list of strings

static_libs

Type: list of strings

srcs

Type: list of strings