blob: 1007143ceb7436926cf2761210f58dbad70ffed0 [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,
40 kmi_symbol_list_add_only = None,
41 module_grouping = None,
42 unstripped_modules_archive = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080043 dist_dir = None,
Wanwei Jiang0bde3122023-07-20 10:24:07 +080044 ext_modules = None,
45 kconfig_ext = None,
46 kconfig_ext_srcs = None):
Wanwei Jiang92c89432023-05-15 23:57:16 +080047 """Define target for amlogic.
Wanwei Jiang2218b892023-03-17 17:31:21 +080048
49 Note: This is a mixed build.
50
51 Requires [`define_common_kernels`](#define_common_kernels) to be called in the same package.
52
53 Args:
Wanwei Jiang92c89432023-05-15 23:57:16 +080054 name: name of target. Usually `"amlogic"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080055 build_config: See [kernel_build.build_config](#kernel_build-build_config). If `None`,
Wanwei Jiang92c89432023-05-15 23:57:16 +080056 default to `"common_drivers/build.config.amlogic.bazel"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080057 outs: See [kernel_build.outs](#kernel_build-outs).
58 module_outs: See [kernel_build.module_outs](#kernel_build-module_outs). The list of
59 in-tree kernel modules.
Wanwei Jiang971052a2023-07-10 16:27:57 +080060 make_goals: See [kernel_build.make_goals](#kernel_build-make_goals). A list of strings
61 defining targets for the kernel build.
Wanwei Jiang2218b892023-03-17 17:31:21 +080062 define_abi_targets: See [kernel_abi.define_abi_targets](#kernel_abi-define_abi_targets).
63 kmi_symbol_list: See [kernel_build.kmi_symbol_list](#kernel_build-kmi_symbol_list).
64 kmi_symbol_list_add_only: See [kernel_abi.kmi_symbol_list_add_only](#kernel_abi-kmi_symbol_list_add_only).
65 module_grouping: See [kernel_abi.module_grouping](#kernel_abi-module_grouping).
66 unstripped_modules_archive: See [kernel_abi.unstripped_modules_archive](#kernel_abi-unstripped_modules_archive).
Wanwei Jiang2218b892023-03-17 17:31:21 +080067 dist_dir: Argument to `copy_to_dist_dir`. If `None`, default is `"out/{BRANCH}/dist"`.
68 """
69
70 if build_config == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080071 build_config = "common_drivers/build.config.amlogic.bazel"
Wanwei Jiang2218b892023-03-17 17:31:21 +080072
73 if kmi_symbol_list == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080074 kmi_symbol_list = "//common:android/abi_gki_aarch64_amlogic" if define_abi_targets else None
Wanwei Jiang2218b892023-03-17 17:31:21 +080075
76 if kmi_symbol_list_add_only == None:
77 kmi_symbol_list_add_only = True if define_abi_targets else None
78
Wanwei Jiang2218b892023-03-17 17:31:21 +080079 if dist_dir == None:
80 dist_dir = "out/{branch}/dist".format(branch = BRANCH)
81
82 # Also refer to the list of ext modules for ABI monitoring targets
83 _kernel_modules = ext_modules;
84
85 kernel_build(
86 name = name,
87 outs = outs,
Wanwei Jiang0bde3122023-07-20 10:24:07 +080088 srcs = [":common_kernel_sources"] + kconfig_ext_srcs,
Wanwei Jiang2218b892023-03-17 17:31:21 +080089 # List of in-tree kernel modules.
90 module_outs = module_outs,
91 build_config = build_config,
92 # Enable mixed build.
Wanwei Jiangea102c02024-07-09 17:37:37 +080093 base_kernel = ":kernel_aarch64" if FAST_BUILD else ":kernel_aarch64_download_or_build",
94 kmi_symbol_list = None if FAST_BUILD else kmi_symbol_list,
Wanwei Jiang2218b892023-03-17 17:31:21 +080095 collect_unstripped_modules = _COLLECT_UNSTRIPPED_MODULES,
96 strip_modules = True,
Wanwei Jiang971052a2023-07-10 16:27:57 +080097 make_goals = make_goals,
Wanwei Jiang0bde3122023-07-20 10:24:07 +080098 kconfig_ext = kconfig_ext,
Wanwei Jiang2218b892023-03-17 17:31:21 +080099 )
100
101 # enable ABI Monitoring
102 # based on the instructions here:
Wanwei Jiang971052a2023-07-10 16:27:57 +0800103 # https://android.googlesource.com/kernel/build/+/refs/heads/main/kleaf/docs/abi_device.md
Wanwei Jiang2218b892023-03-17 17:31:21 +0800104 # https://android-review.googlesource.com/c/kernel/build/+/2308912
105 kernel_abi(
106 name = name + "_abi",
107 kernel_build = name,
Wanwei Jiangea102c02024-07-09 17:37:37 +0800108 define_abi_targets = False if FAST_BUILD else define_abi_targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800109 kernel_modules = _kernel_modules,
Wanwei Jiangea102c02024-07-09 17:37:37 +0800110 kmi_symbol_list_add_only = False if FAST_BUILD else kmi_symbol_list_add_only,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800111 module_grouping = module_grouping,
112 unstripped_modules_archive = unstripped_modules_archive,
113 )
114
115 kernel_modules_install(
116 name = name + "_modules_install",
117 kernel_build = name,
118 # List of external modules.
119 kernel_modules = _kernel_modules,
120 )
121
122 merged_kernel_uapi_headers(
123 name = name + "_merged_kernel_uapi_headers",
124 kernel_build = name,
125 kernel_modules = _kernel_modules,
126 )
127
128 kernel_images(
129 name = name + "_images",
130 build_dtbo = True,
131 dtbo_srcs = [":" + name + "/" + e for e in dtbo_srcs],
132 build_initramfs = True,
133 kernel_build = name,
134 kernel_modules_install = name + "_modules_install",
135 )
136
137 dist_targets = [
138 name,
139 name + "_images",
140 name + "_modules_install",
141 # Mixed build: Additional GKI artifacts.
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800142 ":kernel_aarch64_download_or_build",
143 ":kernel_aarch64_additional_artifacts_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +0800144 name + "_merged_kernel_uapi_headers",
145 ]
146
Wanwei Jiangea102c02024-07-09 17:37:37 +0800147 fast_build_dist_targets = [
148 name,
149 # name + "_images",
150 name + "_modules_install",
151 # Mixed build: Additional GKI artifacts.
152 # ":kernel_aarch64_download_or_build",
153 # ":kernel_aarch64_additional_artifacts_download_or_build",
154 # name + "_merged_kernel_uapi_headers",
155 ]
156
Wanwei Jiang2218b892023-03-17 17:31:21 +0800157 copy_to_dist_dir(
158 name = name + "_dist",
Wanwei Jiangea102c02024-07-09 17:37:37 +0800159 data = fast_build_dist_targets if FAST_BUILD else dist_targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800160 dist_dir = dist_dir,
161 flat = True,
162 log = "info",
163 )