blob: 6bb30f35532194fbaaf4ab5a3239a2b2af3e0f4c [file] [log] [blame]
Wanwei Jiang2218b892023-03-17 17:31:21 +08001"""Functions that are useful in the common kernel package (usually `//common`)."""
2
3load("@bazel_skylib//lib:dicts.bzl", "dicts")
4load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag")
5load(
6 "//build/kernel/kleaf:kernel.bzl",
7 "kernel_abi",
8 "kernel_abi_dist",
9 "kernel_build",
10 "kernel_compile_commands",
11 "kernel_filegroup",
12 "kernel_images",
13 "kernel_kythe",
14 "kernel_modules_install",
15 "kernel_unstripped_modules_archive",
16 "merged_kernel_uapi_headers",
17)
18load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
19load("//build/kernel/kleaf/artifact_tests:kernel_test.bzl", "initramfs_modules_options_test")
20load("//build/kernel/kleaf/artifact_tests:device_modules_test.bzl", "device_modules_test")
21load("//build/kernel/kleaf/impl:gki_artifacts.bzl", "gki_artifacts")
22load("//build/kernel/kleaf/impl:out_headers_allowlist_archive.bzl", "out_headers_allowlist_archive")
23load(
24 "//build/kernel/kleaf/impl:constants.bzl",
25 "MODULE_OUTS_FILE_OUTPUT_GROUP",
26 "MODULE_OUTS_FILE_SUFFIX",
27 "TOOLCHAIN_VERSION_FILENAME",
28)
29load(
30 "//build/kernel/kleaf:constants.bzl",
31 "CI_TARGET_MAPPING",
32 "DEFAULT_GKI_OUTS",
33 "GKI_DOWNLOAD_CONFIGS",
34 "X86_64_OUTS",
35)
36load("//build/kernel/kleaf:print_debug.bzl", "print_debug")
37load("@kernel_toolchain_info//:dict.bzl", "BRANCH", "common_kernel_package")
38
39# Always collect_unstripped_modules for common kernels.
40_COLLECT_UNSTRIPPED_MODULES = True
41
42def define_common_amlogic(
43 name,
44 outs,
45 dtbo_srcs,
46 build_config = None,
47 module_outs = None,
48 define_abi_targets = None,
49 kmi_symbol_list = None,
50 kmi_symbol_list_add_only = None,
51 module_grouping = None,
52 unstripped_modules_archive = None,
53 gki_modules_list = None,
54 dist_dir = None,
55 ext_modules = None):
Wanwei Jiang92c89432023-05-15 23:57:16 +080056 """Define target for amlogic.
Wanwei Jiang2218b892023-03-17 17:31:21 +080057
58 Note: This is a mixed build.
59
60 Requires [`define_common_kernels`](#define_common_kernels) to be called in the same package.
61
62 Args:
Wanwei Jiang92c89432023-05-15 23:57:16 +080063 name: name of target. Usually `"amlogic"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080064 build_config: See [kernel_build.build_config](#kernel_build-build_config). If `None`,
Wanwei Jiang92c89432023-05-15 23:57:16 +080065 default to `"common_drivers/build.config.amlogic.bazel"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080066 outs: See [kernel_build.outs](#kernel_build-outs).
67 module_outs: See [kernel_build.module_outs](#kernel_build-module_outs). The list of
68 in-tree kernel modules.
69 define_abi_targets: See [kernel_abi.define_abi_targets](#kernel_abi-define_abi_targets).
70 kmi_symbol_list: See [kernel_build.kmi_symbol_list](#kernel_build-kmi_symbol_list).
71 kmi_symbol_list_add_only: See [kernel_abi.kmi_symbol_list_add_only](#kernel_abi-kmi_symbol_list_add_only).
72 module_grouping: See [kernel_abi.module_grouping](#kernel_abi-module_grouping).
73 unstripped_modules_archive: See [kernel_abi.unstripped_modules_archive](#kernel_abi-unstripped_modules_archive).
Wanwei Jiang2218b892023-03-17 17:31:21 +080074 dist_dir: Argument to `copy_to_dist_dir`. If `None`, default is `"out/{BRANCH}/dist"`.
75 """
76
77 if build_config == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080078 build_config = "common_drivers/build.config.amlogic.bazel"
Wanwei Jiang2218b892023-03-17 17:31:21 +080079
80 if kmi_symbol_list == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080081 kmi_symbol_list = "//common:android/abi_gki_aarch64_amlogic" if define_abi_targets else None
Wanwei Jiang2218b892023-03-17 17:31:21 +080082
83 if kmi_symbol_list_add_only == None:
84 kmi_symbol_list_add_only = True if define_abi_targets else None
85
Wanwei Jiang2218b892023-03-17 17:31:21 +080086 if dist_dir == None:
87 dist_dir = "out/{branch}/dist".format(branch = BRANCH)
88
89 # Also refer to the list of ext modules for ABI monitoring targets
90 _kernel_modules = ext_modules;
91
92 kernel_build(
93 name = name,
94 outs = outs,
95 srcs = [":common_kernel_sources"],
96 # List of in-tree kernel modules.
97 module_outs = module_outs,
98 build_config = build_config,
99 # Enable mixed build.
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800100 base_kernel = ":kernel_aarch64_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +0800101 kmi_symbol_list = kmi_symbol_list,
102 collect_unstripped_modules = _COLLECT_UNSTRIPPED_MODULES,
103 strip_modules = True,
104 )
105
106 # enable ABI Monitoring
107 # based on the instructions here:
108 # https://android.googlesource.com/kernel/build/+/refs/heads/master/kleaf/docs/abi_device.md
109 # https://android-review.googlesource.com/c/kernel/build/+/2308912
110 kernel_abi(
111 name = name + "_abi",
112 kernel_build = name,
113 define_abi_targets = define_abi_targets,
114 kernel_modules = _kernel_modules,
115 kmi_symbol_list_add_only = kmi_symbol_list_add_only,
116 module_grouping = module_grouping,
117 unstripped_modules_archive = unstripped_modules_archive,
118 )
119
120 kernel_modules_install(
121 name = name + "_modules_install",
122 kernel_build = name,
123 # List of external modules.
124 kernel_modules = _kernel_modules,
125 )
126
127 merged_kernel_uapi_headers(
128 name = name + "_merged_kernel_uapi_headers",
129 kernel_build = name,
130 kernel_modules = _kernel_modules,
131 )
132
133 kernel_images(
134 name = name + "_images",
135 build_dtbo = True,
136 dtbo_srcs = [":" + name + "/" + e for e in dtbo_srcs],
137 build_initramfs = True,
138 kernel_build = name,
139 kernel_modules_install = name + "_modules_install",
140 )
141
142 dist_targets = [
143 name,
144 name + "_images",
145 name + "_modules_install",
146 # Mixed build: Additional GKI artifacts.
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800147 ":kernel_aarch64_download_or_build",
148 ":kernel_aarch64_additional_artifacts_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +0800149 name + "_merged_kernel_uapi_headers",
150 ]
151
152 copy_to_dist_dir(
153 name = name + "_dist",
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800154 data = dist_targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800155 dist_dir = dist_dir,
156 flat = True,
157 log = "info",
158 )