build: Initial bazel support for gen4auto targets
Add the changes required to build gen4auto targets via bazel build system. Change-Id: I5a2ecc0c7f5d7dbab831790219dd5d1c1e89ecd8 Signed-off-by: Sankalp Negi <quic_snegi@quicinc.com>
This commit is contained in:
parent
9744e6576e
commit
0bef7129bf
25
build.config.msm.auto
Normal file
25
build.config.msm.auto
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
################################################################################
|
||||||
|
|
||||||
|
# boot image macros
|
||||||
|
BUILD_BOOT_IMG=1
|
||||||
|
|
||||||
|
# Common MSM configuration for building non-GKI-based kernels
|
||||||
|
DEFCONFIG="generic_auto_defconfig"
|
||||||
|
|
||||||
|
function build_defconfig_fragments() {
|
||||||
|
if [[ "${VARIANT}" =~ ^(perf_defconfig|debug_defconfig)$ ]]; then
|
||||||
|
apply_defconfig_fragment ${KERNEL_DIR}/arch/${ARCH}/configs/vendor/${MSM_ARCH}.config vendor/${MSM_ARCH}_defconfig
|
||||||
|
|
||||||
|
if [ "${VARIANT}" = perf_defconfig ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
apply_defconfig_fragment ${KERNEL_DIR}/arch/${ARCH}/configs/vendor/${MSM_ARCH}_debug.config vendor/${MSM_ARCH}-debug_defconfig
|
||||||
|
else
|
||||||
|
echo "Variant '${VARIANT}' unsupported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
build_defconfig_fragments
|
||||||
|
|
35
build.config.msm.gen4auto
Normal file
35
build.config.msm.gen4auto
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
################################################################################
|
||||||
|
## Inheriting configs from ACK
|
||||||
|
. ${ROOT_DIR}/common/build.config.common
|
||||||
|
. ${ROOT_DIR}/common/build.config.aarch64
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## Variant setup
|
||||||
|
MSM_ARCH=gen4auto
|
||||||
|
VARIANTS=(perf_defconfig debug_defconfig)
|
||||||
|
[ -z "${VARIANT}" ] && VARIANT=debug_defconfig
|
||||||
|
|
||||||
|
if [ -e "${ROOT_DIR}/msm-kernel" -a "${KERNEL_DIR}" = "common" ]; then
|
||||||
|
KERNEL_DIR="msm-kernel"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ABL_SRC=bootable/bootloader/edk2
|
||||||
|
BOOT_IMAGE_HEADER_VERSION=2
|
||||||
|
BASE_ADDRESS=0x80000000
|
||||||
|
PAGE_SIZE=4096
|
||||||
|
DTB_IMG_CREATE=1
|
||||||
|
SKIP_VENDOR_BOOT=1
|
||||||
|
PREFERRED_USERSPACE=le
|
||||||
|
TRIM_UNUSED_MODULES=1
|
||||||
|
TARGET_HAS_SEPARATE_RD=1
|
||||||
|
|
||||||
|
[ -z "${DT_OVERLAY_SUPPORT}" ] && DT_OVERLAY_SUPPORT=1
|
||||||
|
|
||||||
|
if [ "${KERNEL_CMDLINE_CONSOLE_AUTO}" != "0" ]; then
|
||||||
|
KERNEL_CMDLINE+=' console=ttyMSM0,115200n8 earlycon=qcom_geni,0xa8c000 qcom_geni_serial.con_enabled=1 loglevel=8 '
|
||||||
|
fi
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## Inheriting MSM configs
|
||||||
|
. ${KERNEL_DIR}/build.config.msm.common
|
||||||
|
. ${KERNEL_DIR}/build.config.msm.auto
|
@ -6,3 +6,4 @@ build.config.msm.kalama.vm
|
|||||||
build.config.msm.pineapple.allyes
|
build.config.msm.pineapple.allyes
|
||||||
build.config.msm.blair
|
build.config.msm.blair
|
||||||
build.config.msm.gen3auto
|
build.config.msm.gen3auto
|
||||||
|
build.config.msm.gen4auto
|
||||||
|
24
gen4auto.bzl
Normal file
24
gen4auto.bzl
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
load(":target_variants.bzl", "qx_variants")
|
||||||
|
load(":msm_kernel_qx.bzl", "define_msm_qx")
|
||||||
|
load(":image_opts.bzl", "boot_image_opts")
|
||||||
|
|
||||||
|
target_name = "gen4auto"
|
||||||
|
|
||||||
|
def define_gen4auto():
|
||||||
|
_gen4auto_qx_in_tree_modules = [
|
||||||
|
# keep sorted
|
||||||
|
]
|
||||||
|
|
||||||
|
for variant in qx_variants:
|
||||||
|
mod_list = _gen4auto_qx_in_tree_modules
|
||||||
|
|
||||||
|
define_msm_qx(
|
||||||
|
msm_target = target_name,
|
||||||
|
variant = variant,
|
||||||
|
defconfig = "build.config.msm.auto",
|
||||||
|
in_tree_module_list = mod_list,
|
||||||
|
boot_image_opts = boot_image_opts(
|
||||||
|
boot_image_header_version = 2,
|
||||||
|
base_address = 0x80000000,
|
||||||
|
page_size = 4096),
|
||||||
|
)
|
276
msm_kernel_qx.bzl
Normal file
276
msm_kernel_qx.bzl
Normal file
@ -0,0 +1,276 @@
|
|||||||
|
load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
|
||||||
|
load("//build/bazel_common_rules/test_mappings:test_mappings.bzl", "test_mappings_dist")
|
||||||
|
load("//build/kernel/kleaf:constants.bzl", "aarch64_outs")
|
||||||
|
load(
|
||||||
|
"//build/kernel/kleaf:kernel.bzl",
|
||||||
|
"kernel_build",
|
||||||
|
"kernel_build_config",
|
||||||
|
"kernel_compile_commands",
|
||||||
|
"kernel_images",
|
||||||
|
"kernel_modules_install",
|
||||||
|
"merged_kernel_uapi_headers",
|
||||||
|
)
|
||||||
|
load(
|
||||||
|
"//build:msm_kernel_extensions.bzl",
|
||||||
|
"define_extras",
|
||||||
|
"get_build_config_fragments",
|
||||||
|
"get_dtb_list",
|
||||||
|
"get_dtbo_list",
|
||||||
|
"get_dtstree",
|
||||||
|
"get_vendor_ramdisk_binaries",
|
||||||
|
)
|
||||||
|
load(":msm_common.bzl", "define_top_level_config", "gen_config_without_source_lines", "get_out_dir")
|
||||||
|
load(":msm_dtc.bzl", "define_dtc_dist")
|
||||||
|
load(":msm_abl.bzl", "define_abl_dist")
|
||||||
|
load(":image_opts.bzl", "boot_image_opts")
|
||||||
|
load(":target_variants.bzl", "qx_variants")
|
||||||
|
|
||||||
|
def _define_build_config(
|
||||||
|
msm_target,
|
||||||
|
target,
|
||||||
|
variant,
|
||||||
|
defconfig,
|
||||||
|
boot_image_opts = boot_image_opts(),
|
||||||
|
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")
|
||||||
|
"""
|
||||||
|
|
||||||
|
gen_config_command = """
|
||||||
|
cat << 'EOF' > "$@"
|
||||||
|
KERNEL_DIR="msm-kernel"
|
||||||
|
SOC_NAME="monaco_auto"
|
||||||
|
VARIANTS=(%s)
|
||||||
|
MSM_ARCH=%s
|
||||||
|
VARIANT=%s
|
||||||
|
ABL_SRC=bootable/bootloader/edk2
|
||||||
|
BOOT_IMAGE_HEADER_VERSION=%d
|
||||||
|
BASE_ADDRESS=0x%X
|
||||||
|
PAGE_SIZE=%d
|
||||||
|
TARGET_HAS_SEPARATE_RD=1
|
||||||
|
PREFERRED_USERSPACE=qx
|
||||||
|
BUILD_BOOT_IMG=1
|
||||||
|
SKIP_UNPACKING_RAMDISK=1
|
||||||
|
BUILD_INITRAMFS=1
|
||||||
|
[ -z "$${DT_OVERLAY_SUPPORT}" ] && DT_OVERLAY_SUPPORT=1
|
||||||
|
KERNEL_VENDOR_CMDLINE+=' console=hvc0 earlycon=hvc0 hvc_dcc.enable=1 loglevel=8 nokaslr printk.devkmsg=on root=/dev/ram0 rw rootwait'
|
||||||
|
EOF
|
||||||
|
""" % (
|
||||||
|
" ".join([v.replace("-", "_") for v in qx_variants]), # VARIANTS
|
||||||
|
msm_target.replace("-", "_"),
|
||||||
|
variant.replace("-", "_"),
|
||||||
|
boot_image_opts.boot_image_header_version,
|
||||||
|
boot_image_opts.base_address,
|
||||||
|
boot_image_opts.page_size,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Generate the build config
|
||||||
|
native.genrule(
|
||||||
|
name = "{}_build_config_bazel".format(target),
|
||||||
|
srcs = [],
|
||||||
|
outs = ["build.config.msm.{}.generated".format(target)],
|
||||||
|
cmd_bash = gen_config_command,
|
||||||
|
)
|
||||||
|
|
||||||
|
top_level_config = define_top_level_config(target)
|
||||||
|
common_config = gen_config_without_source_lines("build.config.common", target)
|
||||||
|
|
||||||
|
# Concatenate build config fragments to form the final config
|
||||||
|
kernel_build_config(
|
||||||
|
name = "{}_build_config".format(target),
|
||||||
|
srcs = [
|
||||||
|
# do not sort
|
||||||
|
top_level_config,
|
||||||
|
"build.config.constants",
|
||||||
|
common_config,
|
||||||
|
"build.config.aarch64",
|
||||||
|
":{}_build_config_bazel".format(target),
|
||||||
|
] + [fragment for fragment in build_config_fragments] + [
|
||||||
|
"build.config.msm.common",
|
||||||
|
defconfig,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
def _define_kernel_build(
|
||||||
|
target,
|
||||||
|
in_tree_module_list,
|
||||||
|
dtb_list,
|
||||||
|
dtbo_list,
|
||||||
|
dtstree):
|
||||||
|
"""Creates a `kernel_build` 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` as an input.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
target: name of main Bazel target (e.g. `kalama_gki`)
|
||||||
|
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
|
||||||
|
"""
|
||||||
|
out_list = [".config", "Module.symvers"]
|
||||||
|
|
||||||
|
if dtb_list:
|
||||||
|
out_list += dtb_list
|
||||||
|
if dtbo_list:
|
||||||
|
out_list += dtbo_list
|
||||||
|
|
||||||
|
# Add basic kernel outputs
|
||||||
|
out_list += aarch64_outs
|
||||||
|
|
||||||
|
# LE builds don't build compressed, so remove from list
|
||||||
|
out_list.remove("Image.lz4")
|
||||||
|
out_list.remove("Image.gz")
|
||||||
|
|
||||||
|
kernel_build(
|
||||||
|
name = target,
|
||||||
|
module_outs = in_tree_module_list,
|
||||||
|
outs = out_list,
|
||||||
|
build_config = ":{}_build_config".format(target),
|
||||||
|
dtstree = dtstree,
|
||||||
|
kmi_symbol_list = None,
|
||||||
|
additional_kmi_symbol_lists = None,
|
||||||
|
abi_definition = None,
|
||||||
|
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),
|
||||||
|
)
|
||||||
|
|
||||||
|
kernel_compile_commands(
|
||||||
|
name = "{}_compile_commands".format(target),
|
||||||
|
kernel_build = ":{}".format(target),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _define_kernel_dist(target, msm_target, variant):
|
||||||
|
"""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`)
|
||||||
|
"""
|
||||||
|
|
||||||
|
dist_dir = get_out_dir(msm_target, variant) + "/dist"
|
||||||
|
qx_target = msm_target.split("-")[0];
|
||||||
|
|
||||||
|
msm_dist_targets = [
|
||||||
|
# do not sort
|
||||||
|
":{}".format(target),
|
||||||
|
":{}_images".format(target),
|
||||||
|
":{}_merged_kernel_uapi_headers".format(target),
|
||||||
|
":{}_build_config".format(target),
|
||||||
|
]
|
||||||
|
|
||||||
|
copy_to_dist_dir(
|
||||||
|
name = "{}_dist".format(target),
|
||||||
|
data = msm_dist_targets,
|
||||||
|
dist_dir = dist_dir,
|
||||||
|
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",
|
||||||
|
)
|
||||||
|
|
||||||
|
native.alias(
|
||||||
|
name = "{}_test_mapping".format(target),
|
||||||
|
actual = ":{}_dist".format(target),
|
||||||
|
)
|
||||||
|
|
||||||
|
test_mappings_dist(
|
||||||
|
name = "{}_test_mapping_dist".format(target),
|
||||||
|
dist_dir = dist_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
def define_msm_qx(
|
||||||
|
msm_target,
|
||||||
|
variant,
|
||||||
|
defconfig,
|
||||||
|
in_tree_module_list,
|
||||||
|
boot_image_opts = boot_image_opts()):
|
||||||
|
"""Top-level kernel build definition macro for an MSM platform
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msm_target: name of target platform (e.g. "gen4auto")
|
||||||
|
variant: variant of kernel to build (e.g. "perf-defconfig")
|
||||||
|
in_tree_module_list: list of in-tree modules
|
||||||
|
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
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not variant in qx_variants:
|
||||||
|
fail("{} not defined in target_variants.bzl qx_variants!".format(variant))
|
||||||
|
|
||||||
|
# Enforce format of "//msm-kernel:target-foo_variant-bar" (underscore is the delimeter
|
||||||
|
# between target and variant)
|
||||||
|
target = msm_target.replace("_", "-") + "_" + variant.replace("_", "-")
|
||||||
|
qx_target = msm_target.split("-")[0];
|
||||||
|
|
||||||
|
dtb_list = get_dtb_list(qx_target)
|
||||||
|
dtbo_list = get_dtbo_list(qx_target)
|
||||||
|
dtstree = get_dtstree(qx_target)
|
||||||
|
vendor_ramdisk_binaries = ["//prebuilts/qcom_boot_artifacts:le-initrd.gz"]
|
||||||
|
build_config_fragments = get_build_config_fragments(qx_target)
|
||||||
|
|
||||||
|
_define_build_config(
|
||||||
|
qx_target,
|
||||||
|
target,
|
||||||
|
variant,
|
||||||
|
defconfig,
|
||||||
|
boot_image_opts = boot_image_opts,
|
||||||
|
build_config_fragments = build_config_fragments,
|
||||||
|
)
|
||||||
|
|
||||||
|
_define_kernel_build(
|
||||||
|
target,
|
||||||
|
in_tree_module_list,
|
||||||
|
dtb_list,
|
||||||
|
dtbo_list,
|
||||||
|
dtstree,
|
||||||
|
)
|
||||||
|
|
||||||
|
kernel_images(
|
||||||
|
name = "{}_images".format(target),
|
||||||
|
kernel_modules_install = ":{}_modules_install".format(target),
|
||||||
|
kernel_build = ":{}".format(target),
|
||||||
|
build_boot = True,
|
||||||
|
build_dtbo = True if dtbo_list else False,
|
||||||
|
build_initramfs = True,
|
||||||
|
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.img"],
|
||||||
|
)
|
||||||
|
|
||||||
|
_define_kernel_dist(target, msm_target, variant)
|
||||||
|
|
||||||
|
define_abl_dist(target, msm_target, variant)
|
||||||
|
|
||||||
|
define_dtc_dist(target, msm_target, variant)
|
@ -1,5 +1,6 @@
|
|||||||
load(":gen3auto.bzl", "define_gen3auto")
|
load(":gen3auto.bzl", "define_gen3auto")
|
||||||
load(":autogvm.bzl", "define_autogvm")
|
load(":autogvm.bzl", "define_autogvm")
|
||||||
|
load(":gen4auto.bzl", "define_gen4auto")
|
||||||
load(":pineapple.bzl", "define_pineapple")
|
load(":pineapple.bzl", "define_pineapple")
|
||||||
load(":pineapple_tuivm.bzl", "define_pineapple_tuivm")
|
load(":pineapple_tuivm.bzl", "define_pineapple_tuivm")
|
||||||
load(":pineapple_oemvm.bzl", "define_pineapple_oemvm")
|
load(":pineapple_oemvm.bzl", "define_pineapple_oemvm")
|
||||||
@ -14,6 +15,7 @@ def define_msm_platforms():
|
|||||||
define_signing_keys()
|
define_signing_keys()
|
||||||
define_gen3auto()
|
define_gen3auto()
|
||||||
define_autogvm()
|
define_autogvm()
|
||||||
|
define_gen4auto()
|
||||||
define_pineapple()
|
define_pineapple()
|
||||||
define_pineapple_tuivm()
|
define_pineapple_tuivm()
|
||||||
define_pineapple_oemvm()
|
define_pineapple_oemvm()
|
||||||
|
@ -12,6 +12,17 @@ la_variants = [
|
|||||||
"gki",
|
"gki",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
qx_variants = [
|
||||||
|
# keep sorted
|
||||||
|
"debug-defconfig",
|
||||||
|
"perf-defconfig",
|
||||||
|
]
|
||||||
|
|
||||||
|
qx_targets = [
|
||||||
|
# keep sorted
|
||||||
|
"gen4auto",
|
||||||
|
]
|
||||||
|
|
||||||
le_targets = [
|
le_targets = [
|
||||||
# keep sorted
|
# keep sorted
|
||||||
"pineapple-allyes",
|
"pineapple-allyes",
|
||||||
@ -45,8 +56,11 @@ def get_all_la_variants():
|
|||||||
def get_all_le_variants():
|
def get_all_le_variants():
|
||||||
return [(t, v) for t in le_targets for v in le_variants]
|
return [(t, v) for t in le_targets for v in le_variants]
|
||||||
|
|
||||||
|
def get_all_qx_variants():
|
||||||
|
return [(t, v) for t in qx_targets for v in qx_variants]
|
||||||
|
|
||||||
def get_all_vm_variants():
|
def get_all_vm_variants():
|
||||||
return [(t, v) for t in vm_targets for v in vm_variants]
|
return [(t, v) for t in vm_targets for v in vm_variants]
|
||||||
|
|
||||||
def get_all_variants():
|
def get_all_variants():
|
||||||
return get_all_la_variants() + get_all_le_variants() + get_all_vm_variants()
|
return get_all_la_variants() + get_all_le_variants() + get_all_qx_variants() + get_all_vm_variants()
|
||||||
|
Loading…
Reference in New Issue
Block a user