blob: 5f18a3f56d156c0b8cb88492cd33ac6452c160ca [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
26# Always collect_unstripped_modules for common kernels.
27_COLLECT_UNSTRIPPED_MODULES = True
28
29def define_common_amlogic(
30 name,
31 outs,
32 dtbo_srcs,
33 build_config = None,
34 module_outs = None,
Wanwei Jiang971052a2023-07-10 16:27:57 +080035 make_goals = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080036 define_abi_targets = None,
37 kmi_symbol_list = None,
38 kmi_symbol_list_add_only = None,
39 module_grouping = None,
40 unstripped_modules_archive = None,
Wanwei Jiang2218b892023-03-17 17:31:21 +080041 dist_dir = None,
42 ext_modules = None):
Wanwei Jiang92c89432023-05-15 23:57:16 +080043 """Define target for amlogic.
Wanwei Jiang2218b892023-03-17 17:31:21 +080044
45 Note: This is a mixed build.
46
47 Requires [`define_common_kernels`](#define_common_kernels) to be called in the same package.
48
49 Args:
Wanwei Jiang92c89432023-05-15 23:57:16 +080050 name: name of target. Usually `"amlogic"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080051 build_config: See [kernel_build.build_config](#kernel_build-build_config). If `None`,
Wanwei Jiang92c89432023-05-15 23:57:16 +080052 default to `"common_drivers/build.config.amlogic.bazel"`.
Wanwei Jiang2218b892023-03-17 17:31:21 +080053 outs: See [kernel_build.outs](#kernel_build-outs).
54 module_outs: See [kernel_build.module_outs](#kernel_build-module_outs). The list of
55 in-tree kernel modules.
Wanwei Jiang971052a2023-07-10 16:27:57 +080056 make_goals: See [kernel_build.make_goals](#kernel_build-make_goals). A list of strings
57 defining targets for the kernel build.
Wanwei Jiang2218b892023-03-17 17:31:21 +080058 define_abi_targets: See [kernel_abi.define_abi_targets](#kernel_abi-define_abi_targets).
59 kmi_symbol_list: See [kernel_build.kmi_symbol_list](#kernel_build-kmi_symbol_list).
60 kmi_symbol_list_add_only: See [kernel_abi.kmi_symbol_list_add_only](#kernel_abi-kmi_symbol_list_add_only).
61 module_grouping: See [kernel_abi.module_grouping](#kernel_abi-module_grouping).
62 unstripped_modules_archive: See [kernel_abi.unstripped_modules_archive](#kernel_abi-unstripped_modules_archive).
Wanwei Jiang2218b892023-03-17 17:31:21 +080063 dist_dir: Argument to `copy_to_dist_dir`. If `None`, default is `"out/{BRANCH}/dist"`.
64 """
65
66 if build_config == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080067 build_config = "common_drivers/build.config.amlogic.bazel"
Wanwei Jiang2218b892023-03-17 17:31:21 +080068
69 if kmi_symbol_list == None:
Wanwei Jiang92c89432023-05-15 23:57:16 +080070 kmi_symbol_list = "//common:android/abi_gki_aarch64_amlogic" if define_abi_targets else None
Wanwei Jiang2218b892023-03-17 17:31:21 +080071
72 if kmi_symbol_list_add_only == None:
73 kmi_symbol_list_add_only = True if define_abi_targets else None
74
Wanwei Jiang2218b892023-03-17 17:31:21 +080075 if dist_dir == None:
76 dist_dir = "out/{branch}/dist".format(branch = BRANCH)
77
78 # Also refer to the list of ext modules for ABI monitoring targets
79 _kernel_modules = ext_modules;
80
81 kernel_build(
82 name = name,
83 outs = outs,
84 srcs = [":common_kernel_sources"],
85 # List of in-tree kernel modules.
86 module_outs = module_outs,
87 build_config = build_config,
88 # Enable mixed build.
Wanwei Jiang0a519f62023-06-30 16:56:28 +080089 base_kernel = ":kernel_aarch64_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +080090 kmi_symbol_list = kmi_symbol_list,
91 collect_unstripped_modules = _COLLECT_UNSTRIPPED_MODULES,
92 strip_modules = True,
Wanwei Jiang971052a2023-07-10 16:27:57 +080093 make_goals = make_goals,
Wanwei Jiang2218b892023-03-17 17:31:21 +080094 )
95
96 # enable ABI Monitoring
97 # based on the instructions here:
Wanwei Jiang971052a2023-07-10 16:27:57 +080098 # https://android.googlesource.com/kernel/build/+/refs/heads/main/kleaf/docs/abi_device.md
Wanwei Jiang2218b892023-03-17 17:31:21 +080099 # https://android-review.googlesource.com/c/kernel/build/+/2308912
100 kernel_abi(
101 name = name + "_abi",
102 kernel_build = name,
103 define_abi_targets = define_abi_targets,
104 kernel_modules = _kernel_modules,
105 kmi_symbol_list_add_only = kmi_symbol_list_add_only,
106 module_grouping = module_grouping,
107 unstripped_modules_archive = unstripped_modules_archive,
108 )
109
110 kernel_modules_install(
111 name = name + "_modules_install",
112 kernel_build = name,
113 # List of external modules.
114 kernel_modules = _kernel_modules,
115 )
116
117 merged_kernel_uapi_headers(
118 name = name + "_merged_kernel_uapi_headers",
119 kernel_build = name,
120 kernel_modules = _kernel_modules,
121 )
122
123 kernel_images(
124 name = name + "_images",
125 build_dtbo = True,
126 dtbo_srcs = [":" + name + "/" + e for e in dtbo_srcs],
127 build_initramfs = True,
128 kernel_build = name,
129 kernel_modules_install = name + "_modules_install",
130 )
131
132 dist_targets = [
133 name,
134 name + "_images",
135 name + "_modules_install",
136 # Mixed build: Additional GKI artifacts.
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800137 ":kernel_aarch64_download_or_build",
138 ":kernel_aarch64_additional_artifacts_download_or_build",
Wanwei Jiang2218b892023-03-17 17:31:21 +0800139 name + "_merged_kernel_uapi_headers",
140 ]
141
142 copy_to_dist_dir(
143 name = name + "_dist",
Wanwei Jiang0a519f62023-06-30 16:56:28 +0800144 data = dist_targets,
Wanwei Jiang2218b892023-03-17 17:31:21 +0800145 dist_dir = dist_dir,
146 flat = True,
147 log = "info",
148 )