| # SPDX-License-Identifier: GPL-2.0-only |
| |
| load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") |
| load( |
| "//build/kernel/kleaf:kernel.bzl", |
| "kernel_abi", |
| "kernel_build", |
| "kernel_build_config", |
| "kernel_dtstree", |
| "kernel_images", |
| "kernel_module_group", |
| "kernel_modules_install", |
| "kernel_unstripped_modules_archive", |
| "merged_kernel_uapi_headers", |
| ) |
| load("//private/devices/google/common/kleaf:create_file.bzl", "create_file") |
| load("//private/devices/google/gs201:constants.bzl", "GS201_DTBS", "GS201_MODULE_OUTS") |
| load(":constants.bzl", "TANGORPRO_DTBOS", "TANGORPRO_MODULE_OUTS") |
| |
| exports_files(["tangorpro_defconfig"]) |
| |
| kernel_build_config( |
| name = "build_config", |
| srcs = [ |
| # do not sort |
| "//private/devices/google/gs201:build_config", |
| ], |
| ) |
| |
| kernel_dtstree( |
| name = "dtstree", |
| srcs = glob(["dts/**"]) + [ |
| "//private/google-modules/soc/gs:gs.dt-bindings", |
| ], |
| makefile = "dts/Makefile", |
| ) |
| |
| create_file( |
| name = "kconfig_ext", |
| srcs = [ |
| # do not sort |
| "//private/devices/google/gs201:kconfig_ext", |
| "Kconfig.ext.tangorpro", |
| ], |
| out = "Kconfig.ext", |
| ) |
| |
| filegroup( |
| name = "defconfig_fragments", |
| srcs = [ |
| # do not sort |
| "//private/devices/google/gs201:defconfig_fragments", |
| "tangorpro_defconfig", |
| ], |
| ) |
| |
| filegroup( |
| name = "kernel_sources", |
| srcs = [ |
| # keep sorted |
| "//private/devices/google/gs201:kernel_sources", |
| "//private/google-modules/touch/common:touch.common.kconfig", |
| ], |
| ) |
| |
| kernel_build( |
| name = "kernel", |
| srcs = [":kernel_sources"], |
| outs = [ |
| ".config", |
| ] + [ |
| "gs201/{}".format(dtb) |
| for dtb in GS201_DTBS |
| ], |
| base_kernel = "//common:kernel_aarch64", |
| build_config = ":build_config", |
| collect_unstripped_modules = True, |
| defconfig_fragments = [":defconfig_fragments"], |
| dtstree = ":dtstree", |
| kconfig_ext = ":kconfig_ext", |
| kmi_symbol_list = "//common:android/abi_gki_aarch64_pixel", |
| make_goals = [ |
| "modules", |
| "dtbs", |
| ], |
| module_outs = GS201_MODULE_OUTS + TANGORPRO_MODULE_OUTS, |
| strip_modules = True, |
| ) |
| |
| kernel_build( |
| name = "_dtbos", |
| srcs = [":kernel_sources"], |
| outs = TANGORPRO_DTBOS, |
| base_kernel = "//common:kernel_aarch64", |
| build_config = ":build_config", |
| dtstree = ":dtstree", |
| make_goals = ["dtbs"], |
| ) |
| |
| filegroup( |
| name = "dtbos", |
| srcs = [":_dtbos/" + dtbo for dtbo in TANGORPRO_DTBOS], |
| visibility = ["//private/devices/google/gs201:__subpackages__"], |
| ) |
| |
| kernel_module_group( |
| name = "kernel_ext_modules", |
| srcs = [ |
| # FIXME: SoC modules need to be loaded first or the device will crash. |
| # Module dependencies should not rely on the order. This needs be fixed. |
| "//private/devices/google/gs201:kernel_ext_modules", |
| ] + [ |
| # keep sorted |
| "//private/devices/google/tangorpro/display:drm_panel.google", |
| "//private/devices/google/tangorpro/pogo:pogo_transport", |
| "//private/google-modules/amplifiers/cs35l41", |
| "//private/google-modules/amplifiers/snd_soc_wm_adsp:snd-soc-wm-adsp", |
| "//private/google-modules/bluetooth/broadcom:bluetooth.broadcom", |
| "//private/google-modules/fingerprint/fpc", |
| "//private/google-modules/gps/broadcom/bcm47765", |
| "//private/google-modules/touch/common:touch.common", |
| "//private/google-modules/touch/common/usi:touch.common.usi", |
| "//private/google-modules/touch/novatek/nt36xxx", |
| "//private/google-modules/uwb/qorvo/dw3000/kernel:uwb.dw3000", |
| "//private/google-modules/wlan/dhd43752p:synadhd", |
| ], |
| visibility = ["//private/devices/google/gs201:__subpackages__"], |
| ) |
| |
| kernel_modules_install( |
| name = "kernel_modules_install", |
| kernel_build = ":kernel", |
| kernel_modules = [":kernel_ext_modules"], |
| ) |
| |
| kernel_unstripped_modules_archive( |
| name = "kernel_unstripped_modules_archive", |
| kernel_build = ":kernel", |
| kernel_modules = [":kernel_ext_modules"], |
| ) |
| |
| merged_kernel_uapi_headers( |
| name = "merged_kernel_uapi_headers", |
| kernel_build = ":kernel", |
| kernel_modules = [":kernel_ext_modules"], |
| ) |
| |
| create_file( |
| name = "vendor_ramdisk_modules_list", |
| srcs = [ |
| # do not sort |
| "//private/devices/google/gs201:vendor_ramdisk_modules_list", |
| "vendor_ramdisk.modules.tangorpro", |
| ], |
| out = "vendor_ramdisk.modules", |
| ) |
| |
| create_file( |
| name = "system_dlkm_modules_list", |
| srcs = ["//private/devices/google/gs201:system_dlkm_modules_list"], |
| out = "system_dlkm.modules", |
| ) |
| |
| create_file( |
| name = "system_dlkm_props", |
| srcs = ["//private/devices/google/gs201:system_dlkm_props"], |
| out = "system_dlkm.props", |
| ) |
| |
| create_file( |
| name = "vendor_dlkm_modules_list", |
| srcs = ["//private/devices/google/gs201:vendor_dlkm_modules_list"], |
| out = "vendor_dlkm.modules", |
| ) |
| |
| create_file( |
| name = "vendor_dlkm_modules_blocklist", |
| srcs = [ |
| # do not sort |
| "//private/devices/google/gs201:vendor_dlkm_modules_blocklist", |
| "vendor_dlkm.blocklist.tangorpro", |
| ], |
| out = "vendor_dlkm.blocklist", |
| ) |
| |
| create_file( |
| name = "vendor_dlkm_props", |
| srcs = ["//private/devices/google/gs201:vendor_dlkm_props"], |
| out = "vendor_dlkm.props", |
| ) |
| |
| filegroup( |
| name = "insmod_cfgs", |
| srcs = glob(["insmod_cfg/*.cfg"]), |
| ) |
| |
| kernel_images( |
| name = "kernel_images", |
| base_kernel_images = "//common:kernel_aarch64_images", |
| # TODO: b/362627953 - Remove dtb.img |
| boot_image_outs = [ |
| "dtb.img", |
| "vendor_kernel_boot.img", |
| ], |
| build_dtbo = True, |
| build_initramfs = True, |
| build_system_dlkm = True, |
| build_vendor_dlkm = True, |
| build_vendor_kernel_boot = True, |
| dtbo_srcs = [":dtbos"], |
| kernel_build = ":kernel", |
| kernel_modules_install = ":kernel_modules_install", |
| modules_list = ":vendor_ramdisk_modules_list", |
| ramdisk_compression = "lz4", |
| system_dlkm_modules_list = ":system_dlkm_modules_list", |
| system_dlkm_props = ":system_dlkm_props", |
| vendor_dlkm_archive = True, |
| vendor_dlkm_etc_files = [":insmod_cfgs"], |
| vendor_dlkm_modules_blocklist = ":vendor_dlkm_modules_blocklist", |
| vendor_dlkm_modules_list = ":vendor_dlkm_modules_list", |
| vendor_dlkm_props = ":vendor_dlkm_props", |
| deps = ["//private/devices/google/common:sepolicy"], |
| ) |
| |
| copy_to_dist_dir( |
| name = "dist", |
| data = [ |
| # keep sorted |
| ":dtbos", |
| ":insmod_cfgs", |
| ":kernel", |
| ":kernel_images", |
| ":kernel_modules_install", |
| ":kernel_unstripped_modules_archive", |
| ":merged_kernel_uapi_headers", |
| "//common:android/abi_gki_aarch64_pixel", |
| "//common:kernel_aarch64", |
| "//common:kernel_aarch64_gki_boot_image", |
| "//common:kernel_aarch64_headers", |
| "//private/devices/google/common:kernel_gki_modules", |
| ] + select({ |
| "//private/devices/google/common:enable_download_fips140": ["@gki_prebuilt_fips140//fips140.ko"], |
| "//private/devices/google/common:disable_download_fips140": [], |
| }), |
| dist_dir = "out/tangorpro/dist", |
| flat = True, |
| log = "info", |
| ) |
| |
| # For ABI monitoring |
| kernel_abi( |
| name = "kernel_abi", |
| kernel_build = ":kernel", |
| kernel_modules = [":kernel_ext_modules"], |
| kmi_symbol_list_add_only = True, |
| module_grouping = False, |
| ) |
| |
| # For compatibility |
| alias( |
| name = "gs201_soc.tangorpro", |
| actual = "//private/devices/google/gs201:gs201_soc", |
| ) |
| |
| alias( |
| name = "gs201_tangorpro_dist", |
| actual = ":dist", |
| ) |
| |
| alias( |
| name = "gs201_tangorpro_abi_update_symbol_list", |
| actual = ":kernel_abi_update_symbol_list", |
| ) |