| SUMMARY = "Linux aarch64 boot wrapper with FDT support" |
| LICENSE = "BSD-3-Clause" |
| |
| LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=bb63326febfb5fb909226c8e7ebcef5c" |
| |
| SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git;branch=master" |
| SRCREV = "d3b1a15d18542b2086e72bfdc3fc43f454772a3b" |
| |
| # boot-wrapper doesn't make releases |
| UPSTREAM_CHECK_COMMITS = "1" |
| |
| PV = "git${SRCPV}" |
| |
| S = "${WORKDIR}/git" |
| |
| inherit autotools deploy |
| |
| PACKAGE_ARCH = "${MACHINE_ARCH}" |
| |
| COMPATIBLE_MACHINE ?= "invalid" |
| |
| # Device tree to put in the image |
| # by default use the standard kernel devicetree |
| # This should be overwritten if the devicetree is not generated |
| # by the kernel. |
| # This should point to a file in the deploy image directory |
| BOOT_WRAPPER_AARCH64_DEVICETREE ??= "${KERNEL_DEVICETREE}" |
| |
| # Kernel image to put in the image |
| # This should point to a file in the deploy image directory |
| BOOT_WRAPPER_AARCH64_KERNEL ??= "Image" |
| |
| # Kernel command line for the image |
| BOOT_WRAPPER_AARCH64_CMDLINE ??= "rw" |
| |
| # Image generated by boot wrapper |
| BOOT_WRAPPER_AARCH64_IMAGE ??= "linux-system.axf" |
| |
| DEPENDS += "virtual/kernel dtc-native" |
| |
| EXTRA_OECONF += "--with-kernel-dir=${WORKDIR}/kernel" |
| EXTRA_OECONF += "--with-dtb=${WORKDIR}/kernel/dummy.dtb" |
| EXTRA_OECONF += "--with-cmdline=\"\"" |
| EXTRA_OECONF += "--enable-psci --enable-gicv3" |
| |
| # unset LDFLAGS solves this error when compiling kernel modules: |
| # aarch64-poky-linux-ld: unrecognized option '-Wl,-O1' |
| EXTRA_OEMAKE += "'LDFLAGS= --gc-sections '" |
| |
| # Strip prefix if any |
| REAL_DTB = "${@os.path.basename(d.getVar('BOOT_WRAPPER_AARCH64_DEVICETREE'))}" |
| |
| EXTRA_OEMAKE += "'KERNEL_DTB=${DEPLOY_DIR_IMAGE}/${REAL_DTB}'" |
| EXTRA_OEMAKE += "'KERNEL_IMAGE=${DEPLOY_DIR_IMAGE}/${BOOT_WRAPPER_AARCH64_KERNEL}'" |
| EXTRA_OEMAKE += "'CMDLINE=${BOOT_WRAPPER_AARCH64_CMDLINE}'" |
| |
| |
| do_configure:prepend() { |
| # Create dummy files to make configure happy. |
| # We will pass the generated ones directly to make. |
| mkdir -p ${WORKDIR}/kernel/arch/arm64/boot |
| echo "dummy" > ${WORKDIR}/kernel/arch/arm64/boot/Image |
| echo "dummy" > ${WORKDIR}/kernel/dummy.dtb |
| |
| # Generate configure |
| (cd ${S} && autoreconf -i || exit 1) |
| } |
| |
| do_compile[noexec] = "1" |
| do_install[noexec] = "1" |
| |
| # We need the kernel to create an image |
| do_deploy[depends] += "virtual/kernel:do_deploy" |
| |
| do_deploy() { |
| if [ ! -f ${DEPLOY_DIR_IMAGE}/${REAL_DTB} ]; then |
| echo "ERROR: cannot find ${REAL_DTB} in ${DEPLOY_DIR_IMAGE}" >&2 |
| echo "Please check your BOOT_WRAPPER_AARCH64_DEVICETREE settings" >&2 |
| exit 1 |
| fi |
| |
| if [ ! -f ${DEPLOY_DIR_IMAGE}/${BOOT_WRAPPER_AARCH64_KERNEL} ]; then |
| echo "ERROR: cannot find ${BOOT_WRAPPER_AARCH64_KERNEL}" \ |
| " in ${DEPLOY_DIR_IMAGE}" >&2 |
| echo "Please check your BOOT_WRAPPER_AARCH64_KERNEL settings" >&2 |
| exit 1 |
| fi |
| |
| oe_runmake clean |
| oe_runmake all |
| |
| install -D -p -m 644 ${BOOT_WRAPPER_AARCH64_IMAGE} \ |
| ${DEPLOYDIR}/linux-system.axf |
| } |
| addtask deploy before do_build after do_compile |