Files
2026-08-24 10:03:24 +08:00

210 lines
6.6 KiB
Python

"""Functions that are useful in the common kernel package (usually `//common`)."""
load("@bazel_skylib//lib:dicts.bzl", "dicts")
load("@bazel_skylib//lib:selects.bzl", "selects")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@rules_pkg//pkg:install.bzl", "pkg_install")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load(
"//build/kernel/kleaf:kernel.bzl",
"dtbo",
"initramfs",
"kernel_abi",
"kernel_abi_dist",
"kernel_build",
"kernel_build_config",
"kernel_compile_commands",
"kernel_dtstree",
"kernel_filegroup",
"kernel_images",
"kernel_kythe",
"kernel_modules_install",
"kernel_unstripped_modules_archive",
"merged_kernel_uapi_headers",
)
load("//build/kernel/kleaf:print_debug.bzl", "print_debug")
load("//common_drivers:project/project.bzl", amlogic_project_configs = "project_configs")
load("//project/sei/adt4:project/project.bzl", adt4_project_configs = "project_configs")
def define_common_amlogic(
name,
branch,
outs,
dtbo_srcs,
build_config = None,
base_kernel = None,
pre_defconfig_fragments = None,
page_size = None,
base_pkg_files = None,
module_outs = None,
make_goals = None,
define_abi_targets = None,
kmi_symbol_list = None,
additional_kmi_symbol_lists = None,
module_grouping = None,
unstripped_modules_archive = None,
dist_dir = None,
ext_modules = None,
kconfig_ext = None,
kconfig_ext_srcs = None,
ddk_module_defconfig_fragments = None,
ddk_module_headers = None):
if build_config == None:
build_config = "//common_drivers:build.config.amlogic.bazel"
kmi_symbol_list_add_only = True if define_abi_targets else None
if dist_dir == None:
dist_dir = "out/{}/dist".format(branch)
kernel_build(
name = name,
outs = outs,
srcs = ["//common_drivers:amlogic_sources"] + kconfig_ext_srcs,
# List of in-tree kernel modules.
module_outs = module_outs,
build_config = build_config,
# Enable mixed build.
base_kernel = base_kernel,
defconfig = "//common:arch/arm64/configs/gki_defconfig",
pre_defconfig_fragments = pre_defconfig_fragments,
page_size = page_size,
# check_defconfig = "disabled",
ddk_module_defconfig_fragments = ddk_module_defconfig_fragments,
ddk_module_headers = ddk_module_headers,
kmi_symbol_list = kmi_symbol_list,
additional_kmi_symbol_lists = additional_kmi_symbol_lists,
collect_unstripped_modules = True,
strip_modules = True,
make_goals = make_goals,
makefile = "//common:Makefile",
kconfig_ext = kconfig_ext,
dtstree = "//common_drivers:dtstree",
kcflags = [
"-Wno-unused-command-line-argument",
"-I${ROOT_DIR}/common_drivers/include",
"-I${ROOT_DIR}/common_drivers/include/uapi",
],
visibility = ["//visibility:public"],
)
kernel_abi(
name = name + "_abi",
kernel_build = name,
define_abi_targets = define_abi_targets,
kernel_modules = ext_modules,
kmi_symbol_list_add_only = True, #kmi_symbol_list_add_only,
module_grouping = module_grouping,
)
kernel_modules_install(
name = name + "_modules_install",
kernel_build = name,
# List of external modules.
kernel_modules = ext_modules,
)
kernel_unstripped_modules_archive(
name = name + "_unstripped_modules_archive",
kernel_build = name,
kernel_modules = ext_modules,
)
merged_kernel_uapi_headers(
name = name + "_merged_kernel_uapi_headers",
kernel_build = name,
kernel_modules = ext_modules,
)
initramfs(
name = name + "_initramfs",
kernel_modules_install = name + "_modules_install",
)
dtbo(
name = name + "_dtbo",
srcs = [":" + name + "/" + e for e in dtbo_srcs],
kernel_build = name,
)
pkg_files(
name = name + "_dist_files",
srcs = base_pkg_files + [
name,
name + "_dtbo",
name + "_initramfs",
name + "_modules_install",
name + "_unstripped_modules_archive",
name + "_merged_kernel_uapi_headers",
base_kernel + "_config",
name + "_config",
],
renames = {
base_kernel + "_config": "_kernel_aarch64_config",
name + "_config": "_amlogic_config",
},
strip_prefix = strip_prefix.files_only(),
visibility = ["//visibility:private"],
)
pkg_install(
name = name + "_dist",
srcs = [":" + name + "_dist_files"],
destdir = dist_dir,
)
def m_k_files():
native.filegroup(
name = "m_k_files",
srcs = native.glob(
[
"Kconfig",
"**/Kconfig",
"Makefile",
"**/Makefile",
],
),
visibility = ["//visibility:public"],
)
def kernel_select():
return "//common_drivers:kernel"
_CONFIG_SETTINGS = {
"//common_drivers:use_amlogic_kernel": amlogic_project_configs,
"//common_drivers:use_adt4_kernel": adt4_project_configs,
"//conditions:default": amlogic_project_configs,
}
def select_config_field(field_name):
return select({
config_setting: getattr(project_config, field_name)
for config_setting, project_config in _CONFIG_SETTINGS.items()
})
def ddk_deps_select(deps):
return select({
config_setting: deps if getattr(project_config, "DDK_BUILD") else []
for config_setting, project_config in _CONFIG_SETTINGS.items()
})
def select_formatted_config_field(field_name, define_name=None):
if define_name == None:
define_name = field_name
return select({
config_setting: ["%s=\"%s\"" % (define_name, getattr(project_config, field_name))]
for config_setting, project_config in _CONFIG_SETTINGS.items()
})
build_project = select_formatted_config_field("ANDROID_PROJECT", "BUILD_PROJECT")
build_type = select_formatted_config_field("BUILD_TYPE")
gki_image = select_formatted_config_field("GKI_IMAGE")
gki_config = select_formatted_config_field("GKI_CONFIG")
build_time = select_formatted_config_field("BUILD_TIME")
common_drivers_release = select_formatted_config_field("COMMON_DRIVERS_RELEASE")
media_modules_cflag = select_config_field("MEDIA_MODULES_CFLAGS")