Android.bp Build Docs (android-8.0.0-r9)

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

aaptflags

flags passed to aapt when creating the apk

Type: list of strings

package_splits

list of resource labels to generate individual resource packages

Type: list of strings

asset_dirs

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

Type: list of strings

android_resource_dirs

list of directories relative to the Blueprints file containing Java resources

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

Type: bool

objs

names of other cc_object modules to link into this module using partial linking

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

command to run on one or more input files. Available variables for substitution: $(location): the path to the first entry in tools or tool_files $(location

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

output_extension

extension that will be substituted for each output file

Type: string

cmd

command to run on one or more input files. Available variables for substitution: $(location): the path to the first entry in tools or tool_files $(location

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

wrapper

installable script to execute the resulting jar

Type: string

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

wrapper

installable script to execute the resulting jar

Type: string

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_standard_libraries

don't build against the default 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

jack_flags

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

Type: list of strings

dxflags

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

Type: list of strings

java_libs

list of of java libraries that will be in the classpath

Type: list of strings

java_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

sdk_version

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

Type: string

jarjar_rules

if not blank, run jarjar using the specified rules file

Type: string

aidl_includes

directories to pass to aidl tool

Type: list of strings

export_aidl_include_dirs

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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

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

Type: list of strings

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

defaults

Type: list of strings

name

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

Type: string

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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", "stlport", "stlport_static", "ndk", "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

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

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

srcs

Type: list of strings

aidl_preprocessed

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

vendor_available

whether this module should be allowed to install onto /vendor as well as /system. The 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. 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

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

type

Proto generator type (full, lite)

Type: string

static

Link statically against the protobuf runtime

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

no_default_compiler_flags

don't insert default compiler flags into asflags, cflags, cppflags, conlyflags, ldflags, or include_dirs

Type: bool

system_shared_libs

list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc and libm. Set to [] to prevent linking against libc and libm.

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

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

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

Type: list of strings

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

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 device specific and should be installed into /vendor

Type: bool

logtags

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

Type: list of strings

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

asflags

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 is true when a build is a Treble compliant device. This is automatically set when a build is shipped with Android O, but can be overriden. This controls such things as the sepolicy split and enabling the Treble linker namespaces.

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

host_supported

Type: bool

device_supported

Type: bool

Default: true

defaults

Type: list of strings