blob: 897a4c0f48ea8f352dff47eae3c373aae4c264b1 [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")
Wanwei Jiang971052a2023-07-10 16:27:57 +08004load("@bazel_skylib//lib:selects.bzl", "selects")
Wanwei Jiang2218b892023-03-17 17:31:21 +08005load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag")
Wanwei Jiang971052a2023-07-10 16:27:57 +08006load("@bazel_skylib//rules:write_file.bzl", "write_file")
Wanwei Jiang2218b892023-03-17 17:31:21 +08007load(
8 "//build/kernel/kleaf:kernel.bzl",
9 "kernel_abi",
10 "kernel_abi_dist",
11 "kernel_build",
Wanwei Jiang971052a2023-07-10 16:27:57 +080012 "kernel_build_config",
Wanwei Jiang2218b892023-03-17 17:31:21 +080013 "kernel_compile_commands",
14 "kernel_filegroup",
15 "kernel_images",
16 "kernel_kythe",
17 "kernel_modules_install",
18 "kernel_unstripped_modules_archive",
19 "merged_kernel_uapi_headers",
20)
21load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
Wanwei Jiang971052a2023-07-10 16:27:57 +080022load("//build/kernel/kleaf/impl:gki_artifacts.bzl", "gki_artifacts", "gki_artifacts_prebuilts")
Wanwei Jiang2218b892023-03-17 17:31:21 +080023load("//build/kernel/kleaf:print_debug.bzl", "print_debug")
24load("@kernel_toolchain_info//:dict.bzl", "BRANCH", "common_kernel_package")
25
Wanwei Jiangea102c02024-07-09 17:37:37 +080026load("//common:common_drivers/project/project.bzl", "FAST_BUILD")
27
Wanwei Jiang2218b892023-03-17 17:31:21 +080028# Always collect_unstripped_modules for common kernels.
29_COLLECT_UNSTRIPPED_MODULES = True
30
31def define_common_amlogic(
32 name,
33 outs,
34 dtbo_srcs,
35 build_config = None,
36 module_outs = None,
Wanwei Jiang971052a2023-07-10 16:27:57 +080037 make_goals = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080038 define_abi_targets = None,
39 kmi_symbol_list = None,
qinglin.lifcce1762024-08-07 11:21:27 +080040 additional_kmi_symbol_lists = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080041 kmi_symbol_list_add_only = None,
42 module_grouping = None,
43 unstripped_modules_archive = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080044 dist_dir = None,
Wanwei Jiang0bde3122023-07-20 10:24:07 +080045 ext_modules = None,
46 kconfig_ext = None,
47 kconfig_ext_srcs = None):
Wanwei Jiang92c89432023-05-15 23:57:16 +080048 """Define target for amlogic.
Wanwei Jiang2218b892023-03-17 17:31:21 +080049
50 Note: This is a mixed build.
51
52 Requires [`define_common_kernels`](#define_common_kernels) to be called in the same package.
53
54 Args:
Wanwei Jiang92c89432023-05-15 23:57:16 +080055 name: name of target. Usually `"amlogic"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080056 build_config: See [kernel_build.build_config](#kernel_build-build_config). If `None`,
Wanwei Jiang92c89432023-05-15 23:57:16 +080057 default to `"common_drivers/build.config.amlogic.bazel"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080058 outs: See [kernel_build.outs](#kernel_build-outs).
59 module_outs: See [kernel_build.module_outs](#kernel_build-module_outs). The list of
60 in-tree kernel modules.
Wanwei Jiang971052a2023-07-10 16:27:57 +080061 make_goals: See [kernel_build.make_goals](#kernel_build-make_goals). A list of strings
62 defining targets for the kernel build.
Wanwei Jiang2218b892023-03-17 17:31:21 +080063 define_abi_targets: See [kernel_abi.define_abi_targets](#kernel_abi-define_abi_targets).
64 kmi_symbol_list: See [kernel_build.kmi_symbol_list](#kernel_build-kmi_symbol_list).
65 kmi_symbol_list_add_only: See [kernel_abi.kmi_symbol_list_add_only](#kernel_abi-kmi_symbol_list_add_only).
66 module_grouping: See [kernel_abi.module_grouping](#kernel_abi-module_grouping).
67 unstripped_modules_archive: See [kernel_abi.unstripped_modules_archive](#kernel_abi-unstripped_modules_archive).
Wanwei Jiang2218b892023-03-17 17:31:21 +080068 dist_dir: Argument to `copy_to_dist_dir`. If `None`, default is `"out/{BRANCH}/dist"`.
69 """
70
71 if build_config == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080072 build_config = "common_drivers/build.config.amlogic.bazel"
Wanwei Jiang2218b892023-03-17 17:31:21 +080073
74 if kmi_symbol_list == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080075 kmi_symbol_list = "//common:android/abi_gki_aarch64_amlogic" if define_abi_targets else None
Wanwei Jiang2218b892023-03-17 17:31:21 +080076
77 if kmi_symbol_list_add_only == None:
78 kmi_symbol_list_add_only = True if define_abi_targets else None
79
Wanwei Jiang2218b892023-03-17 17:31:21 +080080 if dist_dir == None:
81 dist_dir = "out/{branch}/dist".format(branch = BRANCH)
82
83 # Also refer to the list of ext modules for ABI monitoring targets
84 _kernel_modules = ext_modules;
85
86 kernel_build(
87 name = name,
88 outs = outs,
Wanwei Jiang0bde3122023-07-20 10:24:07 +080089 srcs = [":common_kernel_sources"] + kconfig_ext_srcs,
Wanwei Jiang2218b892023-03-17 17:31:21 +080090 # List of in-tree kernel modules.
91 module_outs = module_outs,
92 build_config = build_config,
93 # Enable mixed build.
Wanwei Jiangea102c02024-07-09 17:37:37 +080094 base_kernel = ":kernel_aarch64" if FAST_BUILD else ":kernel_aarch64_download_or_build",
95 kmi_symbol_list = None if FAST_BUILD else kmi_symbol_list,
qinglin.lifcce1762024-08-07 11:21:27 +080096 additional_kmi_symbol_lists = None if FAST_BUILD else additional_kmi_symbol_lists,
Wanwei Jiang2218b892023-03-17 17:31:21 +080097 collect_unstripped_modules = _COLLECT_UNSTRIPPED_MODULES,
98 strip_modules = True,
Wanwei Jiang971052a2023-07-10 16:27:57 +080099 make_goals = make_goals,
Wanwei Jiang0bde3122023-07-20 10:24:07 +0800100 kconfig_ext = kconfig_ext,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800101 )
102
103 # enable ABI Monitoring
104 # based on the instructions here:
Wanwei Jiang971052a2023-07-10 16:27:57 +0800105 # https://android.googlesource.com/kernel/build/+/refs/heads/main/kleaf/docs/abi_device.md
Wanwei Jiang2218b892023-03-17 17:31:21 +0800106 # https://android-review.googlesource.com/c/kernel/build/+/2308912
107 kernel_abi(
108 name = name + "_abi",
109 kernel_build = name,
Wanwei Jiangea102c02024-07-09 17:37:37 +0800110 define_abi_targets = False if FAST_BUILD else define_abi_targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800111 kernel_modules = _kernel_modules,
Wanwei Jiangea102c02024-07-09 17:37:37 +0800112 kmi_symbol_list_add_only = False if FAST_BUILD else kmi_symbol_list_add_only,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800113 module_grouping = module_grouping,
114 unstripped_modules_archive = unstripped_modules_archive,
115 )
116
117 kernel_modules_install(
118 name = name + "_modules_install",
119 kernel_build = name,
120 # List of external modules.
121 kernel_modules = _kernel_modules,
122 )
123
124 merged_kernel_uapi_headers(
125 name = name + "_merged_kernel_uapi_headers",
126 kernel_build = name,
127 kernel_modules = _kernel_modules,
128 )
129
130 kernel_images(
131 name = name + "_images",
132 build_dtbo = True,
133 dtbo_srcs = [":" + name + "/" + e for e in dtbo_srcs],
Wanwei Jiangc32c6432024-07-10 17:36:05 +0800134 build_initramfs = False if FAST_BUILD else True,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800135 kernel_build = name,
136 kernel_modules_install = name + "_modules_install",
137 )
138
139 dist_targets = [
140 name,
141 name + "_images",
142 name + "_modules_install",
143 # Mixed build: Additional GKI artifacts.
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800144 ":kernel_aarch64_download_or_build",
145 ":kernel_aarch64_additional_artifacts_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +0800146 name + "_merged_kernel_uapi_headers",
147 ]
148
Wanwei Jiangc32c6432024-07-10 17:36:05 +0800149 fast_fatload_build_dist_targets = [
Wanwei Jiangea102c02024-07-09 17:37:37 +0800150 name,
151 # name + "_images",
152 name + "_modules_install",
153 # Mixed build: Additional GKI artifacts.
154 # ":kernel_aarch64_download_or_build",
155 # ":kernel_aarch64_additional_artifacts_download_or_build",
156 # name + "_merged_kernel_uapi_headers",
157 ]
158
Wanwei Jiangc32c6432024-07-10 17:36:05 +0800159 fast_android_build_dist_targets = [
160 name,
161 name + "_images",
162 name + "_modules_install",
163 # Mixed build: Additional GKI artifacts.
164 # ":kernel_aarch64_download_or_build",
165 ":kernel_aarch64_additional_artifacts",
166 # name + "_merged_kernel_uapi_headers",
167 ]
168
169 targets = dist_targets
170 if FAST_BUILD == "fatload":
171 targets = fast_fatload_build_dist_targets
172 if FAST_BUILD == "android":
173 targets = fast_android_build_dist_targets
174
Wanwei Jiang2218b892023-03-17 17:31:21 +0800175 copy_to_dist_dir(
176 name = name + "_dist",
Wanwei Jiangc32c6432024-07-10 17:36:05 +0800177 data = targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800178 dist_dir = dist_dir,
179 flat = True,
180 log = "info",
181 )