Functions that are useful in the common kernel package (usually //common).
Macro for an Android Common Kernel.
The following targets are declared as public API:
<name>_sources (e.g. kernel_aarch64_sources)<name> and related targets.<name> (e.g. kernel_aarch64): kernel_build()vmlinux, etc.<name>_uapi_headers (e.g. kernel_aarch64_uapi_headers)kernel-uapi-headers.tar.gz.<name>_modules (e.g. kernel_aarch64_modules)<name>_additional_artifacts (e.g. kernel_aarch64_additional_artifacts)system_dlkm, etc.kernel-headers.tar.gz<name>_dist (e.g. kernel_aarch64_dist)ABI monitoring If kmi_symbol_list is set, ABI monitoring is turned on.
<name>_abi (e.g. kernel_aarch64_abi): kernel_abi()<name>_abi_dist (e.g. kernel_aarch64_abi_dist)Usually, for ABI monitoring to be fully turned on, you should set:
kmi_symbol_listadditional_kmi_symbol_listsprotected_exports_listprotected_modules_listtrim_nonlisted_kmi to Truekmi_symbol_list_strict_mode to Trueabi_definition_stg to the ABI definitionkmi_enforced to TruePARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | name of the kernel_build(). | none |
| outs | See kernel_build.outs | none |
| makefile | See kernel_build.makefile | None |
| arch | See kernel_build.arch | None |
| visibility | default visibility for some targets instantiated with this macro | None |
| defconfig | See kernel_build.defconfig | None |
| pre_defconfig_fragments | See kernel_build.pre_defconfig_fragments | None |
| post_defconfig_fragments | See kernel_build.post_defconfig_fragments | None |
| kmi_symbol_list | See kernel_build.kmi_symbol_list | None |
| additional_kmi_symbol_lists | See kernel_build.additional_kmi_symbol_lists | None |
| trim_nonlisted_kmi | See kernel_build.trim_nonlisted_kmi | None |
| kmi_symbol_list_strict_mode | See kernel_build.kmi_symbol_list_strict_mode | None |
| kmi_symbol_list_add_only | See kernel_abi.kmi_symbol_list_add_only | None |
| module_implicit_outs | See kernel_build.module_implicit_outs | None |
| protected_exports_list | See kernel_build.protected_exports_list | None |
| protected_modules_list | See kernel_build.protected_modules_list | None |
| gki_system_dlkm_modules | system_dlkm module_list | None |
| make_goals | See kernel_build.make_goals | None |
| abi_definition_stg | See kernel_abi.abi_definition_stg | None |
| kmi_enforced | See kernel_abi.kmi_enforced | None |
| build_gki_artifacts | nonconfigurable. If true, build GKI artifacts under target name <name>_gki_artifacts. | None |
| gki_boot_img_sizes | gki_artifacts.boot_img_sizes | None |
| page_size | See kernel_build.page_size | None |
| deprecation | If set, mark target deprecated with given message. | None |
| ddk_headers_archive | nonconfigurable. Target to the archive packing DDK headers | None |
| ddk_module_headers | See kernel_build.ddk_module_headers | None |
| extra_dist | extra targets added to <name>_dist | None |
| kcflags | kernel_build.kcflags | None |
| system_dlkm_extra_archive_files | system_dlkm_image.internal_extra_archive_files | None |
| clang_autofdo_profile | See kernel_build.clang_autofdo_profile | None |
Define --use_prebuilt_gki and relevant targets.
You may set the argument --use_prebuilt_gki to a GKI prebuilt build number on ci.android.com or your custom CI host. The format is:
bazel <command> --use_prebuilt_gki=<build_number> <targets>
For example, the following downloads GKI artifacts of build number 8077484 (assuming the current package is //common):
bazel build --use_prebuilt_gki=8077484 //common:kernel_aarch64_download_or_build
If you leave out the --use_prebuilt_gki argument, the command is equivalent to bazel build //common:kernel_aarch64, which builds kernel from source.
<name>_download_or_build targets builds <name> from source if the use_prebuilt_gki is not set, and downloads artifacts of the build number from ci.android.com (or your custom CI host) if it is set.
kernel_aarch64_download_or_buildkernel_aarch64_additional_artifacts_download_or_buildkernel_aarch64_uapi_headers_download_or_buildNote: If a device should build against downloaded prebuilts unconditionally, set --use_prebuilt_gki and a fixed build number in device.bazelrc. For example:
# device.bazelrc build --use_prebuilt_gki build --action_env=KLEAF_DOWNLOAD_BUILD_NUMBER_MAP="gki_prebuilts=8077484"
This is equivalent to specifying --use_prebuilt_gki=8077484 for all Bazel commands.
You may set --use_signed_prebuilts to download the signed boot images instead of the unsigned one. This requires --use_prebuilt_gki to be set to a signed build.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| kwargs | common kwargs to internal targets. | none |
DEPRECATED
See build/kernel/kleaf/docs/ddk/workspace.md for new ways to define prebuilts.