ANDROID: enable pineapple kleaf build

Kleaf replaces build.sh. Define pineapple target in Bazel
so it may be built with the following command:

tools/bazel run //msm-kernel:pineapple_gki

Change-Id: If78ea5482898f92b751cad8542401ba12d9663bf
Signed-off-by: John Moon <quic_johmoo@quicinc.com>
This commit is contained in:
John Moon 2022-07-27 18:01:28 -07:00
parent 2b0465b6c3
commit 59ff6820c9
10 changed files with 1018 additions and 2 deletions

View File

@ -17,9 +17,12 @@ package(
],
)
load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c")
load(":msm_platforms.bzl", "define_msm_platforms")
define_msm_platforms()
define_common_kernels(target_configs = {
load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c")
load("@kernel_toolchain_info//:dict.bzl", "BRANCH")
define_common_kernels(branch = BRANCH, target_configs = {
"kernel_aarch64": {
"module_implicit_outs": [
"drivers/block/zram/zram.ko",

148
BUILD.dtc Normal file
View File

@ -0,0 +1,148 @@
cc_library(
name = "libfdt",
copts = [
"-Werror",
"-Wno-macro-redefined",
"-Wno-sign-compare",
],
includes = ["libfdt"],
srcs = glob([
"libfdt/*.h",
"libfdt/*.c",
]),
visibility = ["//visibility:public"],
)
copts = [
"-Wall",
"-Werror",
"-Wno-sign-compare",
"-Wno-missing-field-initializers",
"-Wno-unused-parameter",
]
genrule(
name = "lexer",
srcs = ["dtc-lexer.l"],
outs = ["dtc-lexer.lex.c"],
cmd = "lex -o$@ $(location dtc-lexer.l)"
)
genrule(
name = "parser",
srcs = ["dtc-parser.y"],
outs = ["dtc-parser.tab.c", "dtc-parser.tab.h"],
cmd = """
bison -b dtc-parser -d $(location dtc-parser.y)
cp ./*.tab.c $(location dtc-parser.tab.c)
cp ./*.tab.h $(location dtc-parser.tab.h)
""",
)
cc_library(
name = "dtc_gen",
copts = copts,
srcs = [
":lexer",
":parser",
] + glob(["*.h"]),
includes = ["."],
visibility = ["//visibility:public"],
)
cc_binary(
name = "dtc",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"checks.c",
"data.c",
"dtc.c",
"flattree.c",
"fstree.c",
"livetree.c",
"srcpos.c",
"treesource.c",
"util.c",
] + glob(["*.h"]),
includes = ["."],
deps = [":libfdt", ":dtc_gen"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtget",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtget.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtput",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtput.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtdump",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtdump.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtoverlay",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtoverlay.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtoverlaymerge",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtoverlaymerge.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
visibility = ["//visibility:public"],
)
exports_files([
"libfdt/fdt.h",
"libfdt/libfdt.h",
"libfdt/libfdt_env.h",
])

View File

@ -19,6 +19,10 @@ CONFIG_TARGET=msm.${MSM_ARCH}
function compile_external_dtc() {
(
OUT_DIR=${COMMON_OUT_DIR}/external/dtc
if [ ! -d "$OUT_DIR" ]; then
return
fi
[ "${SKIP_MRPROPER}" != "1" ] && rm -rf ${OUT_DIR}
cd ${ROOT_DIR}/external/dtc
DTC_MAKE_ARGS=("CC=${HOSTCC}" "AR=${AR}")

115
kalama.bzl Normal file
View File

@ -0,0 +1,115 @@
load(":target_variants.bzl", "targets", "variants")
load(":msm_kernel.bzl", "define_msm")
target_name = "kalama"
def define_kalama():
_kalama_in_tree_modules = [
# keep sorted
"arch/arm64/gunyah/gh_arm_drv.ko",
"drivers/clk/qcom/camcc-kalama.ko",
"drivers/clk/qcom/clk-dummy.ko",
"drivers/clk/qcom/clk-qcom.ko",
"drivers/clk/qcom/clk-rpmh.ko",
"drivers/clk/qcom/debugcc-kalama.ko",
"drivers/clk/qcom/dispcc-kalama.ko",
"drivers/clk/qcom/gcc-kalama.ko",
"drivers/clk/qcom/gdsc-regulator.ko",
"drivers/clk/qcom/gpucc-kalama.ko",
"drivers/clk/qcom/tcsrcc-kalama.ko",
"drivers/clk/qcom/videocc-kalama.ko",
"drivers/cpufreq/qcom-cpufreq-hw.ko",
"drivers/cpufreq/qcom-cpufreq-hw-debug.ko",
"drivers/cpuidle/governors/qcom_lpm.ko",
"drivers/dma-buf/heaps/qcom_dma_heaps.ko",
"drivers/firmware/qcom-scm.ko",
"drivers/hwspinlock/qcom_hwspinlock.ko",
"drivers/interconnect/icc-test.ko",
"drivers/interconnect/qcom/icc-bcm-voter.ko",
"drivers/interconnect/qcom/icc-debug.ko",
"drivers/interconnect/qcom/icc-rpmh.ko",
"drivers/interconnect/qcom/qnoc-kalama.ko",
"drivers/interconnect/qcom/qnoc-qos.ko",
"drivers/iommu/arm/arm-smmu/arm_smmu.ko",
"drivers/iommu/msm_dma_iommu_mapping.ko",
"drivers/iommu/qcom_iommu_util.ko",
"drivers/irqchip/qcom-pdc.ko",
"drivers/mailbox/qcom-ipcc.ko",
"drivers/mfd/qcom-spmi-pmic.ko",
"drivers/phy/qualcomm/phy-qcom-ufs.ko",
"drivers/phy/qualcomm/phy-qcom-ufs-qmp-v4-kalama.ko",
"drivers/pinctrl/qcom/pinctrl-kalama.ko",
"drivers/pinctrl/qcom/pinctrl-msm.ko",
"drivers/power/reset/qcom-dload-mode.ko",
"drivers/power/reset/qcom-reboot-reason.ko",
"drivers/regulator/debug-regulator.ko",
"drivers/regulator/proxy-consumer.ko",
"drivers/regulator/qti-fixed-regulator.ko",
"drivers/regulator/rpmh-regulator.ko",
"drivers/regulator/stub-regulator.ko",
"drivers/soc/qcom/boot_stats.ko",
"drivers/soc/qcom/cmd-db.ko",
"drivers/soc/qcom/eud.ko",
"drivers/soc/qcom/llcc-qcom.ko",
"drivers/soc/qcom/llcc_perfmon.ko",
"drivers/soc/qcom/mdt_loader.ko",
"drivers/soc/qcom/mem_buf/mem_buf.ko",
"drivers/soc/qcom/mem_buf/mem_buf_dev.ko",
"drivers/soc/qcom/msm_performance.ko",
"drivers/soc/qcom/qcom_aoss.ko",
"drivers/soc/qcom/qcom_rpmh.ko",
"drivers/soc/qcom/qcom_wdt_core.ko",
"drivers/soc/qcom/secure_buffer.ko",
"drivers/soc/qcom/smem.ko",
"drivers/soc/qcom/smp2p.ko",
"drivers/soc/qcom/smp2p_sleepstate.ko",
"drivers/soc/qcom/socinfo.ko",
"drivers/spmi/spmi-pmic-arb.ko",
"drivers/tty/hvc/hvc_gunyah.ko",
"drivers/ufs/host/ufs_qcom.ko",
"drivers/usb/dwc3/dwc3-msm.ko",
"drivers/usb/gadget/function/usb_f_ccid.ko",
"drivers/usb/gadget/function/usb_f_cdev.ko",
"drivers/usb/gadget/function/usb_f_qdss.ko",
"drivers/usb/phy/phy-generic.ko",
"drivers/usb/phy/phy-msm-snps-eusb2.ko",
"drivers/usb/phy/phy-msm-snps-hs.ko",
"drivers/usb/phy/phy-msm-ssusb-qmp.ko",
"drivers/usb/repeater/repeater.ko",
"drivers/usb/repeater/repeater-qti-pmic-eusb2.ko",
"drivers/virt/gunyah/gh_ctrl.ko",
"drivers/virt/gunyah/gh_dbl.ko",
"drivers/virt/gunyah/gh_irq_lend.ko",
"drivers/virt/gunyah/gh_mem_notifier.ko",
"drivers/virt/gunyah/gh_msgq.ko",
"drivers/virt/gunyah/gh_rm_drv.ko",
"drivers/virt/gunyah/gh_virt_wdt.ko",
"drivers/virt/gunyah/gunyah.ko",
"kernel/trace/qcom_ipc_logging.ko",
]
_kalama_consolidate_in_tree_modules = _kalama_in_tree_modules + [
]
# Modules built but not copied to dist directory
_kalama_module_implicit_outs = [
# keep sorted
"drivers/block/zram/zram.ko",
"mm/zsmalloc.ko",
]
if not target_name in targets:
fail("{} not defined in target_variants.bzl".format(target_name))
for variant in variants:
if variant == "consolidate":
mod_list = _kalama_consolidate_in_tree_modules
else:
mod_list = _kalama_in_tree_modules
define_msm(
msm_target = target_name,
variant = variant,
in_tree_module_list = mod_list,
implicit_out_list = _kalama_module_implicit_outs,
)

449
msm_kernel.bzl Normal file
View File

@ -0,0 +1,449 @@
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
load(
"//build/kernel/kleaf:kernel.bzl",
"kernel_build_abi",
"kernel_build_abi_dist",
"kernel_build_config",
"kernel_compile_commands",
"kernel_images",
"kernel_modules_install",
"merged_kernel_uapi_headers",
)
load(
"//build/bazel_extensions:msm_kernel_extensions.bzl",
"define_extras",
"get_build_config_fragments",
"get_dtb_list",
"get_dtbo_list",
"get_dtstree",
"get_vendor_ramdisk_binaries",
)
load(":super_image.bzl", "super_image")
def define_build_config(
msm_target,
target,
variant,
boot_image_header_version,
base_address,
page_size,
super_image_size,
lz4_ramdisk,
build_config_fragments = []):
"""Creates a kernel_build_config for an MSM target
Creates a `kernel_build_config` for input to a `kernel_build` rule.
Args:
msm_target: name of target platform (e.g. "kalama")
variant: variant of kernel to build (e.g. "gki")
"""
# Remove sourcing lines from build config since we're just concatenating fragments below
native.genrule(
name = "{}_build_config_common_without_source".format(target),
srcs = ["build.config.common"],
outs = ["{}_build.config.common.generated".format(target)],
cmd_bash = "sed -e '/^\\. /d' $(location build.config.common) > $@",
)
# Generate the build config
native.genrule(
name = "{}_build_config_bazel".format(target),
srcs = [],
outs = ["build.config.msm.{}.generated".format(target)],
cmd_bash = """
cat << 'EOF' > $@
KERNEL_DIR="msm-kernel"
VARIANTS=(consolidate gki)
MSM_ARCH=%s
VARIANT=%s
ABL_SRC=bootable/bootloader/edk2
BOOT_IMAGE_HEADER_VERSION=%d
BASE_ADDRESS=0x%X
PAGE_SIZE=%d
BUILD_VENDOR_DLKM=1
PREPARE_SYSTEM_DLKM=1
SUPER_IMAGE_SIZE=0x%X
TRIM_UNUSED_MODULES=1
BUILD_INIT_BOOT_IMG=1
LZ4_RAMDISK=%d
[ -z "$$DT_OVERLAY_SUPPORT" ] && DT_OVERLAY_SUPPORT=1
if [ "$$KERNEL_CMDLINE_CONSOLE_AUTO" != "0" ]; then
KERNEL_VENDOR_CMDLINE+=' console=ttyMSM0,115200n8 earlycon=qcom_geni,0x00a9C000 qcom_geni_serial.con_enabled=1 '
fi
KERNEL_VENDOR_CMDLINE+=' bootconfig '
VENDOR_BOOTCONFIG+='androidboot.first_stage_console=1 androidboot.hardware=qcom_kp'
EOF
""" % (
msm_target,
variant,
boot_image_header_version,
base_address,
page_size,
super_image_size,
int(lz4_ramdisk)
),
)
# Concatenate build config fragments to form the final config
kernel_build_config(
name = "{}_build_config".format(target),
srcs = [
# do not sort
"build.config.constants",
":{}_build_config_common_without_source".format(target),
"build.config.aarch64",
":{}_build_config_bazel".format(target),
] + [fragment for fragment in build_config_fragments] + [
"build.config.msm.common",
"build.config.msm.gki",
],
)
def define_kernel_build(
target,
base_kernel,
in_tree_module_list,
implicit_out_list,
dtb_list,
dtbo_list,
dtstree,
define_abi_targets,
define_compile_commands,
kmi_enforced):
"""Creates a `kernel_build_abi` and other associated definitions
This is where the main kernel build target is created (e.g. `//msm-kernel:kalama_gki`).
Many other rules will take this `kernel_build_abi` as an input.
Args:
target: name of main Bazel target (e.g. `kalama_gki`)
base_kernel: base kernel to pass into `kernel_build` (e.g. `//common:kernel_aarch64`)
in_tree_module_list: list of in-tree modules
dtb_list: device tree blobs expected to be built
dtbo_list: device tree overlay blobs expected to be built
define_abi_targets: boolean determining if ABI targets should be defined
define_compile_commands: boolean determining if `compile_commands.json` should be generated
kmi_enforced: boolean determining if the KMI contract should be enforced
"""
out_list = [".config", "Module.symvers"]
if dtb_list:
out_list += dtb_list
if dtbo_list:
out_list += dtbo_list
kernel_build_abi(
name = target,
module_outs = in_tree_module_list,
module_implicit_outs = implicit_out_list,
outs = out_list,
build_config = ":{}_build_config".format(target),
dtstree = dtstree,
base_kernel = base_kernel,
kmi_symbol_list = "//msm-kernel:android/abi_gki_aarch64_qcom" if define_abi_targets else None,
kmi_enforced = kmi_enforced,
additional_kmi_symbol_lists = ["{}_all_kmi_symbol_lists".format(base_kernel)] if define_abi_targets else None,
define_abi_targets = define_abi_targets,
abi_definition = "//msm-kernel:android/abi_gki_aarch64.xml" if define_abi_targets else None,
enable_interceptor = define_compile_commands,
visibility = ["//visibility:public"],
)
kernel_modules_install(
name = "{}_modules_install".format(target),
kernel_build = ":{}".format(target),
)
merged_kernel_uapi_headers(
name = "{}_merged_kernel_uapi_headers".format(target),
kernel_build = ":{}".format(target),
)
if define_compile_commands:
kernel_compile_commands(
name = "{}_compile_commands".format(target),
kernel_build = ":{}".format(target),
)
def define_image_build(
target,
msm_target,
base_kernel,
build_boot = True,
build_dtbo = False,
build_initramfs = False,
build_vendor_boot = False,
build_vendor_kernel_boot = False,
build_vendor_dlkm = True,
build_system_dlkm = True,
boot_image_outs = None,
dtbo_list = [],
vendor_ramdisk_binaries = None):
"""Creates a `kernel_images` target which will generate bootable device images
Args:
target: name of main Bazel target (e.g. `kalama_gki`)
msm_target: name of target platform (e.g. "kalama")
base_kernel: kernel_build base kernel
build_boot: whether to build a boot image
build_dtbo: whether to build a dtbo image
build_initramfs: whether to build an initramfs image
build_vendor_boot: whether to build a vendor boot image
build_vendor_kernel_boot: whether to build a vendor kernel boot image
build_vendor_dlkm: whether to build a vendor dlkm image
build_system_dlkm: whether to build a system dlkm image
boot_image_outs: boot image outputs,
dtbo_list: list of device tree overlay blobs to be built into `dtbo.img`
vendor_ramdisk_binaries: ramdisk binaries (cpio archives)
"""
kernel_images(
name = "{}_images".format(target),
kernel_modules_install = ":{}_modules_install".format(target),
kernel_build = ":{}".format(target),
base_kernel_images = "{}_images".format(base_kernel),
build_boot = build_boot,
build_dtbo = build_dtbo,
build_initramfs = build_initramfs,
build_vendor_boot = build_vendor_boot,
build_vendor_kernel_boot = build_vendor_kernel_boot,
build_vendor_dlkm = build_vendor_dlkm,
build_system_dlkm = build_system_dlkm,
modules_list = "modules.list.msm.{}".format(msm_target),
vendor_dlkm_modules_blocklist = "modules.vendor_blocklist.msm.{}".format(msm_target),
dtbo_srcs = [":{}/".format(target) + d for d in dtbo_list] if dtbo_list else None,
vendor_ramdisk_binaries = vendor_ramdisk_binaries,
boot_image_outs = boot_image_outs,
deps = [
"modules.list.msm.{}".format(msm_target),
"modules.vendor_blocklist.msm.{}".format(msm_target),
],
)
# Defined separately because `super.img` is not generated by upstream kleaf
super_image(
name = "{}_super_image".format(target),
kernel_modules_install = "{}_modules_install".format(target),
deps = [
":{}_images_system_dlkm_image".format(target),
":{}_images_vendor_dlkm_image".format(target),
],
)
def define_kernel_dist(target, base_kernel):
"""Creates distribution targets for kernel builds
When Bazel builds everything, the outputs end up buried in `bazel-bin`.
These rules are used to copy the build artifacts to `out/msm-kernel-<target>/dist/`
with proper permissions, etc.
Args:
target: name of main Bazel target (e.g. `kalama_gki`)
base_kernel: base kernel to fetch artifacts from (e.g. `//common:kernel_aarch64`)
"""
msm_dist_targets = [
# do not sort
base_kernel,
"{}_headers".format(base_kernel),
":{}".format(target),
":{}_images".format(target),
":{}_super_image".format(target),
":{}_merged_kernel_uapi_headers".format(target),
":{}_build_config".format(target),
]
kernel_build_abi_dist(
name = "{}_abi_dist".format(target),
kernel_build_abi = ":{}".format(target),
data = msm_dist_targets,
dist_dir = "out/{}/dist".format(target),
flat = True,
log = "info",
)
copy_to_dist_dir(
name = "{}_dist".format(target),
data = msm_dist_targets,
dist_dir = "out/msm-kernel-{}/dist".format(target.replace("_", "-")),
flat = True,
wipe_dist_dir = True,
allow_duplicate_filenames = True,
mode_overrides = {
# do not sort
"**/*.elf": "755",
"**/vmlinux": "755",
"**/Image": "755",
"**/*.dtb*": "755",
"**/LinuxLoader*": "755",
"**/*": "644",
},
log = "info",
)
def define_dtc_dist(target):
"""Create rules distribution target for device tree compiler and associated tools
Args:
target: name of main Bazel target (e.g. `kalama_gki`)
"""
dtc_bin_targets = [
"@dtc//:dtc",
"@dtc//:fdtget",
"@dtc//:fdtput",
"@dtc//:fdtdump",
"@dtc//:fdtoverlay",
"@dtc//:fdtoverlaymerge",
]
dtc_lib_targets = [
"@dtc//:dtc_gen",
"@dtc//:libfdt",
]
dtc_inc_targets = [
"@dtc//:libfdt/fdt.h",
"@dtc//:libfdt/libfdt.h",
"@dtc//:libfdt/libfdt_env.h",
]
dtc_tar_cmd = "mkdir -p bin lib include\n"
for label in dtc_bin_targets:
dtc_tar_cmd += "cp $(locations {}) bin/\n".format(label)
for label in dtc_lib_targets:
dtc_tar_cmd += "cp $(locations {}) lib/\n".format(label)
for label in dtc_inc_targets:
dtc_tar_cmd += "cp $(locations {}) include/\n".format(label)
dtc_tar_cmd += """
chmod 755 bin/* lib/*
chmod 644 include/*
tar -czf "$@" bin lib include
"""
native.genrule(
name = "{}_dtc_tarball".format(target),
srcs = dtc_bin_targets + dtc_lib_targets + dtc_inc_targets,
outs = ["{}_dtc.tar.gz".format(target)],
cmd = dtc_tar_cmd,
)
native.alias(
name = "{}_dtc".format(target),
actual = ":{}_dtc_tarball".format(target),
)
copy_to_dist_dir(
name = "{}_dtc_dist".format(target),
archives = [":{}_dtc_tarball".format(target)],
dist_dir = "out/msm-kernel-{}/host".format(target.replace("_", "-")),
flat = True,
wipe_dist_dir = True,
log = "info",
)
def define_abl_dist(target):
"""Creates ABL distribution target
Args:
target: name of main Bazel target (e.g. `kalama_gki`)
"""
native.alias(
name = "{}_abl".format(target),
actual = "//bootable/bootloader/edk2:{}_abl".format(target),
)
copy_to_dist_dir(
name = "{}_abl_dist".format(target),
archives = ["{}_abl".format(target)],
dist_dir = "out/msm-kernel-{}/dist".format(target.replace("_", "-")),
flat = True,
wipe_dist_dir = False,
log = "info",
)
def define_msm(
msm_target,
variant,
in_tree_module_list,
implicit_out_list = [],
define_compile_commands = False,
kmi_enforced = True,
boot_image_header_version = 4,
base_address = 0x80000000,
page_size = 4096,
super_image_size = 0x10000000,
lz4_ramdisk = True):
"""Top-level kernel build definition macro for an MSM platform
Args:
msm_target: name of target platform (e.g. "kalama")
variant: variant of kernel to build (e.g. "gki")
in_tree_module_list: list of in-tree modules
implicit_out_list: list of in-tree modules which are not copied to the dist directory
define_compile_commands: boolean determining if `compile_commands.json` should be generated
kmi_enforced: boolean determining if the KMI contract should be enforced
boot_image_header_version: boot image header version (for `boot.img`)
base_address: edk2 base address
page_size: kernel page size
super_image_size: size of super image partition
lz4_ramdisk: whether to use an lz4-compressed ramdisk
"""
target = msm_target + "_" + variant
if variant == "consolidate":
base_kernel = "//common:kernel_aarch64_consolidate"
define_abi_targets = False
else:
base_kernel = "//common:kernel_aarch64"
define_abi_targets = True
dtb_list = get_dtb_list(msm_target)
dtbo_list = get_dtbo_list(msm_target)
dtstree = get_dtstree(msm_target)
vendor_ramdisk_binaries = get_vendor_ramdisk_binaries(msm_target)
build_config_fragments = get_build_config_fragments(msm_target)
define_build_config(
msm_target,
target,
variant,
boot_image_header_version,
base_address,
page_size,
super_image_size,
lz4_ramdisk,
build_config_fragments,
)
define_kernel_build(
target,
base_kernel,
in_tree_module_list,
implicit_out_list,
dtb_list,
dtbo_list,
dtstree,
define_abi_targets,
define_compile_commands,
kmi_enforced,
)
define_image_build(
target,
msm_target,
base_kernel,
build_boot = True,
build_dtbo = True if dtbo_list else False,
build_initramfs = True if vendor_ramdisk_binaries else False,
build_vendor_boot = True if dtbo_list else False,
dtbo_list = dtbo_list,
vendor_ramdisk_binaries = vendor_ramdisk_binaries,
boot_image_outs = None if dtb_list else ["boot.img"],
)
define_kernel_dist(target, base_kernel)
define_abl_dist(target)
define_dtc_dist(target)
define_extras(target)

17
msm_kernel_extensions.bzl Normal file
View File

@ -0,0 +1,17 @@
def define_extras(target):
return
def get_build_config_fragments(target):
return []
def get_dtb_list(target):
return None
def get_dtbo_list(target):
return None
def get_dtstree(target):
return None
def get_vendor_ramdisk_binaries(target):
return None

6
msm_platforms.bzl Normal file
View File

@ -0,0 +1,6 @@
load(":kalama.bzl", "define_kalama")
load(":pineapple.bzl", "define_pineapple")
def define_msm_platforms():
define_kalama()
define_pineapple()

199
pineapple.bzl Normal file
View File

@ -0,0 +1,199 @@
load(":target_variants.bzl", "targets", "variants")
load(":msm_kernel.bzl", "define_msm")
target_name = "pineapple"
def define_pineapple():
_pineapple_in_tree_modules = [
# keep sorted
"arch/arm64/gunyah/gh_arm_drv.ko",
"drivers/clk/qcom/camcc-pineapple.ko",
"drivers/clk/qcom/clk-dummy.ko",
"drivers/clk/qcom/clk-qcom.ko",
"drivers/clk/qcom/clk-rpmh.ko",
"drivers/clk/qcom/debugcc-pineapple.ko",
"drivers/clk/qcom/dispcc-pineapple.ko",
"drivers/clk/qcom/gcc-pineapple.ko",
"drivers/clk/qcom/gdsc-regulator.ko",
"drivers/clk/qcom/gpucc-pineapple.ko",
"drivers/clk/qcom/tcsrcc-pineapple.ko",
"drivers/clk/qcom/videocc-pineapple.ko",
"drivers/cpufreq/qcom-cpufreq-hw.ko",
"drivers/cpufreq/qcom-cpufreq-hw-debug.ko",
"drivers/cpuidle/governors/qcom_lpm.ko",
"drivers/dma-buf/heaps/qcom_dma_heaps.ko",
"drivers/dma/qcom/msm_gpi.ko",
"drivers/firmware/qcom-scm.ko",
"drivers/hwspinlock/qcom_hwspinlock.ko",
"drivers/hwtracing/coresight/coresight.ko",
"drivers/hwtracing/coresight/coresight-csr.ko",
"drivers/hwtracing/coresight/coresight-cti.ko",
"drivers/hwtracing/coresight/coresight-dummy.ko",
"drivers/hwtracing/coresight/coresight-funnel.ko",
"drivers/hwtracing/coresight/coresight-hwevent.ko",
"drivers/hwtracing/coresight/coresight-remote-etm.ko",
"drivers/hwtracing/coresight/coresight-replicator.ko",
"drivers/hwtracing/coresight/coresight-stm.ko",
"drivers/hwtracing/coresight/coresight-tgu.ko",
"drivers/hwtracing/coresight/coresight-tmc.ko",
"drivers/hwtracing/coresight/coresight-tpda.ko",
"drivers/hwtracing/coresight/coresight-tpdm.ko",
"drivers/hwtracing/coresight/coresight-trace-noc.ko",
"drivers/hwtracing/stm/stm_console.ko",
"drivers/hwtracing/stm/stm_core.ko",
"drivers/hwtracing/stm/stm_ftrace.ko",
"drivers/hwtracing/stm/stm_p_ost.ko",
"drivers/i2c/busses/i2c-msm-geni.ko",
"drivers/i3c/master/i3c-master-msm-geni.ko",
"drivers/input/misc/pm8941-pwrkey.ko",
"drivers/input/misc/qcom-hv-haptics.ko",
"drivers/interconnect/icc-test.ko",
"drivers/interconnect/qcom/icc-bcm-voter.ko",
"drivers/interconnect/qcom/icc-debug.ko",
"drivers/interconnect/qcom/icc-rpmh.ko",
"drivers/interconnect/qcom/qnoc-pineapple.ko",
"drivers/interconnect/qcom/qnoc-qos.ko",
"drivers/iommu/arm/arm-smmu/arm_smmu.ko",
"drivers/iommu/msm_dma_iommu_mapping.ko",
"drivers/iommu/qcom_iommu_debug.ko",
"drivers/iommu/qcom_iommu_util.ko",
"drivers/irqchip/msm_show_resume_irq.ko",
"drivers/irqchip/qcom-pdc.ko",
"drivers/leds/leds-qti-flash.ko",
"drivers/leds/leds-qti-tri-led.ko",
"drivers/mailbox/msm_qmp.ko",
"drivers/mailbox/qcom-ipcc.ko",
"drivers/mfd/qcom-spmi-pmic.ko",
"drivers/nvmem/nvmem_qcom-spmi-sdam.ko",
"drivers/pci/controller/pci-msm-drv.ko",
"drivers/perf/qcom_llcc_pmu.ko",
"drivers/phy/qualcomm/phy-qcom-ufs.ko",
"drivers/phy/qualcomm/phy-qcom-ufs-qmp-v4-kalama.ko",
"drivers/phy/qualcomm/phy-qcom-ufs-qrbtc-sdm845.ko",
"drivers/pinctrl/qcom/pinctrl-msm.ko",
"drivers/pinctrl/qcom/pinctrl-pineapple.ko",
"drivers/pinctrl/qcom/pinctrl-spmi-gpio.ko",
"drivers/pinctrl/qcom/pinctrl-spmi-mpp.ko",
"drivers/power/reset/qcom-pon.ko",
"drivers/power/reset/qcom-reboot-reason.ko",
"drivers/power/reset/reboot-mode.ko",
"drivers/power/supply/qti_battery_charger.ko",
"drivers/pwm/pwm-qti-lpg.ko",
"drivers/regulator/debug-regulator.ko",
"drivers/regulator/proxy-consumer.ko",
"drivers/regulator/qti-fixed-regulator.ko",
"drivers/regulator/rpmh-regulator.ko",
"drivers/regulator/stub-regulator.ko",
"drivers/remoteproc/qcom_pil_info.ko",
"drivers/remoteproc/qcom_q6v5.ko",
"drivers/remoteproc/qcom_q6v5_pas.ko",
"drivers/remoteproc/qcom_spss.ko",
"drivers/remoteproc/rproc_qcom_common.ko",
"drivers/rpmsg/qcom_glink.ko",
"drivers/rpmsg/qcom_glink_smem.ko",
"drivers/rpmsg/qcom_glink_spss.ko",
"drivers/rpmsg/qcom_smd.ko",
"drivers/rtc/rtc-pm8xxx.ko",
"drivers/slimbus/slim-qcom-ngd-ctrl.ko",
"drivers/slimbus/slimbus.ko",
"drivers/soc/qcom/altmode-glink.ko",
"drivers/soc/qcom/boot_stats.ko",
"drivers/soc/qcom/charger-ulog-glink.ko",
"drivers/soc/qcom/cmd-db.ko",
"drivers/soc/qcom/core_hang_detect.ko",
"drivers/soc/qcom/cpucp_log.ko",
"drivers/soc/qcom/crm.ko",
"drivers/soc/qcom/dcc_v2.ko",
"drivers/soc/qcom/dcvs/bwmon.ko",
"drivers/soc/qcom/dcvs/dcvs_fp.ko",
"drivers/soc/qcom/dcvs/memlat.ko",
"drivers/soc/qcom/dcvs/qcom-dcvs.ko",
"drivers/soc/qcom/dcvs/qcom-pmu-lib.ko",
"drivers/soc/qcom/llcc-qcom.ko",
"drivers/soc/qcom/llcc_perfmon.ko",
"drivers/soc/qcom/mdt_loader.ko",
"drivers/soc/qcom/mem_buf/mem_buf.ko",
"drivers/soc/qcom/mem_buf/mem_buf_dev.ko",
"drivers/soc/qcom/mem_buf/mem_buf_msgq.ko",
"drivers/soc/qcom/memory_dump_v2.ko",
"drivers/soc/qcom/msm_performance.ko",
"drivers/soc/qcom/pdr_interface.ko",
"drivers/soc/qcom/pmic-pon-log.ko",
"drivers/soc/qcom/pmic_glink.ko",
"drivers/soc/qcom/qcom_aoss.ko",
"drivers/soc/qcom/qcom_cpucp.ko",
"drivers/soc/qcom/qcom_cpuss_sleep_stats.ko",
"drivers/soc/qcom/qcom_ramdump.ko",
"drivers/soc/qcom/qcom_rpmh.ko",
"drivers/soc/qcom/qcom_stats.ko",
"drivers/soc/qcom/qmi_helpers.ko",
"drivers/soc/qcom/qti_battery_debug.ko",
"drivers/soc/qcom/rq_stats.ko",
"drivers/soc/qcom/secure_buffer.ko",
"drivers/soc/qcom/smem.ko",
"drivers/soc/qcom/smp2p.ko",
"drivers/soc/qcom/smp2p_sleepstate.ko",
"drivers/soc/qcom/socinfo.ko",
"drivers/soc/qcom/sys_pm_vx.ko",
"drivers/spi/spi-msm-geni.ko",
"drivers/spmi/spmi-glink-debug.ko",
"drivers/spmi/spmi-pmic-arb.ko",
"drivers/tty/hvc/hvc_gunyah.ko",
"drivers/tty/serial/msm_geni_serial.ko",
"drivers/ufs/host/ufs_qcom.ko",
"drivers/usb/dwc3/dwc3-msm.ko",
"drivers/usb/gadget/function/usb_f_ccid.ko",
"drivers/usb/gadget/function/usb_f_cdev.ko",
"drivers/usb/gadget/function/usb_f_qdss.ko",
"drivers/usb/phy/phy-generic.ko",
"drivers/usb/phy/phy-msm-snps-eusb2.ko",
"drivers/usb/phy/phy-msm-ssusb-qmp.ko",
"drivers/usb/phy/phy-qcom-emu.ko",
"drivers/usb/repeater/repeater.ko",
"drivers/usb/repeater/repeater-qti-pmic-eusb2.ko",
"drivers/usb/typec/ucsi/ucsi_glink.ko",
"drivers/virt/gunyah/gh_ctrl.ko",
"drivers/virt/gunyah/gh_dbl.ko",
"drivers/virt/gunyah/gh_irq_lend.ko",
"drivers/virt/gunyah/gh_mem_notifier.ko",
"drivers/virt/gunyah/gh_msgq.ko",
"drivers/virt/gunyah/gh_rm_drv.ko",
"drivers/virt/gunyah/gunyah.ko",
"kernel/trace/qcom_ipc_logging.ko",
"net/qrtr/qrtr.ko",
"net/qrtr/qrtr-smd.ko",
]
_pineapple_consolidate_in_tree_modules = _pineapple_in_tree_modules + [
# keep sorted
"drivers/hwtracing/coresight/coresight-etm4x.ko",
"drivers/misc/lkdtm/lkdtm.ko",
"kernel/locking/locktorture.ko",
"kernel/rcu/rcutorture.ko",
"kernel/torture.ko",
"lib/atomic64_test.ko",
"lib/test_user_copy.ko",
]
# Modules built but not copied to dist directory
_pineapple_module_implicit_outs = [
# keep sorted
"drivers/block/zram/zram.ko",
"mm/zsmalloc.ko",
]
if not target_name in targets:
fail("{} not defined in target_variants.bzl".format(target_name))
for variant in variants:
if variant == "consolidate":
mod_list = _pineapple_consolidate_in_tree_modules
else:
mod_list = _pineapple_in_tree_modules
define_msm(
msm_target = target_name,
variant = variant,
in_tree_module_list = mod_list,
implicit_out_list = _pineapple_module_implicit_outs,
)

61
super_image.bzl Normal file
View File

@ -0,0 +1,61 @@
load("//build/kernel/kleaf/impl:image/image_utils.bzl", "image_utils")
def _super_image_impl(ctx):
super_img = ctx.actions.declare_file("{}/super.img".format(ctx.label.name))
super_img_size = ctx.attr.super_img_size
super_unsparsed_img = ctx.actions.declare_file("{}/super_unsparsed.img".format(ctx.label.name))
staging_dir = super_img.dirname + "/staging"
# Create a s bash array of input images
super_img_contents = "("
for dep in ctx.attr.deps:
for f in dep.files.to_list():
if f.extension == "img":
super_img_contents += f.path + " "
super_img_contents += ")"
command = """
# Build super
(
SUPER_IMAGE_CONTENTS={super_img_contents}
SUPER_IMAGE_SIZE={super_img_size}
build_super
)
# Move output files into place
mv "${{DIST_DIR}}/super.img" {super_img}
mv "${{DIST_DIR}}/super_unsparsed.img" {super_unsparsed_img}
""".format(
super_img = super_img.path,
super_img_size = super_img_size,
super_unsparsed_img = super_unsparsed_img.path,
super_img_contents = super_img_contents,
)
return image_utils.build_modules_image_impl_common(
ctx = ctx,
what = "super",
outputs = [super_img, super_unsparsed_img],
build_command = command,
modules_staging_dir = staging_dir,
mnemonic = "SuperImage",
)
super_image = rule(
implementation = _super_image_impl,
doc = """Build super image.
Execute `build_super` in `build_utils.sh`.
When included in a `copy_to_dist_dir` rule, this rule copies a `super.img` to `DIST_DIR`.
""",
attrs = image_utils.build_modules_image_attrs_common({
"deps": attr.label_list(
allow_files = True,
mandatory = True,
),
"super_img_size": attr.int(
default = 0x10000000,
doc = "Size of super.img",
),
}),
)

14
target_variants.bzl Normal file
View File

@ -0,0 +1,14 @@
targets = [
# keep sorted
"kalama",
"pineapple",
]
variants = [
# keep sorted
"consolidate",
"gki",
]
def get_all_variants():
return [(t, v) for t in targets for v in variants]