summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2023-01-17 14:56:43 -0800
committerYifan Hong <elsk@google.com>2023-01-17 14:56:43 -0800
commitc647f74ca17b42a1ee42c2656dd5618206b78fcf (patch)
tree2d33b560fa86749dbc8926520f311fd326494122
parentc7d8de9f745b426b123878fcdb08526353ac4392 (diff)
downloadbuild-c647f74ca17b42a1ee42c2656dd5618206b78fcf.tar.gz
kleaf: Refactor logic for defining extra targets for GKI.
Move them to a separate macro for reuse. Test: TH Bug: 264710236 Change-Id: I58d0685d1ea95df59703bc7e5ca5c02251e5ea83
-rw-r--r--kleaf/common_kernels.bzl178
1 files changed, 102 insertions, 76 deletions
diff --git a/kleaf/common_kernels.bzl b/kleaf/common_kernels.bzl
index c27b4082..6feba853 100644
--- a/kleaf/common_kernels.bzl
+++ b/kleaf/common_kernels.bzl
@@ -516,82 +516,10 @@ def define_common_kernels(
if arch_config.get("enable_interceptor"):
continue
- kernel_modules_install(
- name = name + "_modules_install",
- # The GKI target does not have external modules. GKI modules goes
- # into the in-tree kernel module list, aka kernel_build.module_implicit_outs.
- # Hence, this is empty.
- kernel_modules = [],
- kernel_build = name,
- )
-
- kernel_unstripped_modules_archive(
- name = name + "_unstripped_modules_archive",
- kernel_build = name,
- )
-
- kernel_images(
- name = name + "_images",
- kernel_build = name,
- kernel_modules_install = name + "_modules_install",
- # Sync with GKI_DOWNLOAD_CONFIGS, "images"
- build_system_dlkm = True,
- # Keep in sync with build.config.gki* MODULES_LIST
- modules_list = "android/gki_system_dlkm_modules",
- )
-
- if target_config.get("build_gki_artifacts"):
- gki_artifacts(
- name = name + "_gki_artifacts",
- kernel_build = name,
- boot_img_sizes = target_config.get("gki_boot_img_sizes", {}),
- arch = arch_config["arch"],
- )
- else:
- native.filegroup(
- name = name + "_gki_artifacts",
- srcs = [],
- )
-
- # module_staging_archive from <name>
- native.filegroup(
- name = name + "_modules_staging_archive",
- srcs = [name],
- output_group = "modules_staging_archive",
- )
-
- # All GKI modules
- native.filegroup(
- name = name + "_modules",
- srcs = [
- "{}/{}".format(name, module)
- for module in (kernel_build_abi_kwargs["module_implicit_outs"] or [])
- ],
- )
-
- # Everything in name + "_dist", minus UAPI headers & DDK & modules, because
- # device-specific external kernel modules may install different headers.
- native.filegroup(
- name = name + "_additional_artifacts",
- srcs = [
- # Sync with additional_artifacts_items
- name + "_headers",
- name + "_images",
- name + "_kmi_symbol_list",
- name + "_gki_artifacts",
- ],
- )
-
- # Everything in name + "_dist" for the DDK.
- # These aren't in DIST_DIR for build.sh-style builds, but necessary for driver
- # development. Hence they are also added to kernel_*_dist so they can be downloaded.
- # Note: This poke into details of kernel_build!
- native.filegroup(
- name = name + "_ddk_artifacts",
- srcs = [
- name + "_modules_prepare",
- name + "_modules_staging_archive",
- ],
+ _define_gki_additional_targets(
+ kernel_build_name = name,
+ target_config = target_config,
+ arch_config = arch_config,
)
dist_targets = [
@@ -667,6 +595,104 @@ def define_common_kernels(
_define_prebuilts(visibility = visibility)
+def _define_gki_additional_targets(
+ kernel_build_name,
+ target_config,
+ arch_config):
+ """Defines additional targets for a GKI target.
+
+ * `{kernel_build_name}_additional_artifacts`
+ * `{kernel_build_name}_ddk_artifacts`
+ * `{kernel_build_name}_modules`
+ * `{kernel_build_name}_modules_install`
+ * `{kernel_build_name}_images`
+ * `{kernel_build_name}_unstripped_modules_archive`
+ * Some other internal targets.
+
+ Args:
+ kernel_build_name: name of the GKI target [`kernel_build`](#kernel_build).
+ target_config: See [`define_common_kernels`](#define_common_kernels).
+ arch_config: See [`define_common_kernels`](#define_common_kernels).
+ """
+
+ kernel_modules_install(
+ name = kernel_build_name + "_modules_install",
+ # The GKI target does not have external modules. GKI modules goes
+ # into the in-tree kernel module list, aka kernel_build.module_implicit_outs.
+ # Hence, this is empty.
+ kernel_modules = [],
+ kernel_build = kernel_build_name,
+ )
+
+ kernel_unstripped_modules_archive(
+ name = kernel_build_name + "_unstripped_modules_archive",
+ kernel_build = kernel_build_name,
+ )
+
+ kernel_images(
+ name = kernel_build_name + "_images",
+ kernel_build = kernel_build_name,
+ kernel_modules_install = kernel_build_name + "_modules_install",
+ # Sync with GKI_DOWNLOAD_CONFIGS, "images"
+ build_system_dlkm = True,
+ # Keep in sync with build.config.gki* MODULES_LIST
+ modules_list = "android/gki_system_dlkm_modules",
+ )
+
+ if target_config.get("build_gki_artifacts"):
+ gki_artifacts(
+ name = kernel_build_name + "_gki_artifacts",
+ kernel_build = kernel_build_name,
+ boot_img_sizes = target_config.get("gki_boot_img_sizes", {}),
+ arch = arch_config["arch"],
+ )
+ else:
+ native.filegroup(
+ name = kernel_build_name + "_gki_artifacts",
+ srcs = [],
+ )
+
+ # module_staging_archive from <name>
+ native.filegroup(
+ name = kernel_build_name + "_modules_staging_archive",
+ srcs = [kernel_build_name],
+ output_group = "modules_staging_archive",
+ )
+
+ # All GKI modules
+ native.filegroup(
+ name = kernel_build_name + "_modules",
+ srcs = [
+ "{}/{}".format(kernel_build_name, module)
+ for module in (target_config["module_implicit_outs"] or [])
+ ],
+ )
+
+ # Everything in kernel_build_name + "_dist", minus UAPI headers & DDK & modules, because
+ # device-specific external kernel modules may install different headers.
+ native.filegroup(
+ name = kernel_build_name + "_additional_artifacts",
+ srcs = [
+ # Sync with additional_artifacts_items
+ kernel_build_name + "_headers",
+ kernel_build_name + "_images",
+ kernel_build_name + "_kmi_symbol_list",
+ kernel_build_name + "_gki_artifacts",
+ ],
+ )
+
+ # Everything in kernel_build_name + "_dist" for the DDK.
+ # These aren't in DIST_DIR for build.sh-style builds, but necessary for driver
+ # development. Hence they are also added to kernel_*_dist so they can be downloaded.
+ # Note: This poke into details of kernel_build!
+ native.filegroup(
+ name = kernel_build_name + "_ddk_artifacts",
+ srcs = [
+ kernel_build_name + "_modules_prepare",
+ kernel_build_name + "_modules_staging_archive",
+ ],
+ )
+
def _define_prebuilts(**kwargs):
# Build number for GKI prebuilts
bool_flag(