210 lines
6.6 KiB
Python
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")
|