From patchwork Mon Jun 20 15:59:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rupinderjit Singh X-Patchwork-Id: 9395 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C919C43334 for ; Mon, 20 Jun 2022 15:59:58 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.32195.1655740792752959044 for ; Mon, 20 Jun 2022 08:59:53 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: rupinderjit.singh@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1BE13139F; Mon, 20 Jun 2022 08:59:52 -0700 (PDT) Received: from e123349.cambridge.arm.com (e123349.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7CB673F7D7; Mon, 20 Jun 2022 08:59:51 -0700 (PDT) From: Rupinderjit Singh To: meta-arm@lists.yoctoproject.org Cc: Rupinderjit Singh Subject: [PATCH] arm-bsp/scp-firmware: Migrate SCP firmware recipes from Makefile to Cmake Date: Mon, 20 Jun 2022 16:59:31 +0100 Message-Id: <20220620155931.913715-1-rupinderjit.singh@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 20 Jun 2022 15:59:58 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/3518 Signed-off-by: Rupinderjit Singh --- .../scp-firmware/scp-firmware-juno.inc | 9 +++ .../scp-firmware/scp-firmware_2.10.0.bb | 64 +++++++++++++------ 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc index a72cbd93..ea2faceb 100644 --- a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc +++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc @@ -5,3 +5,12 @@ COMPATIBLE_MACHINE = "juno" SCP_PLATFORM = "juno" FW_TARGETS = "scp" FW_INSTALL:append = " romfw_bypass" + +do_install:append() { + for TYPE in ${FW_INSTALL}; do + if [ "$TYPE" = "romfw_bypass" ]; then + install -D "${B}/${TYPE}/${FW_TARGETS}/bin/${SCP_PLATFORM}-bl1-bypass.bin" "${D}/firmware/${FW}_${TYPE}.bin" + install -D "${B}/${TYPE}/${FW_TARGETS}/bin/${SCP_PLATFORM}-bl1-bypass" "${D}/firmware/${FW}_${TYPE}.elf" + fi + done +} diff --git a/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb b/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb index f976047a..4828fb55 100644 --- a/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb +++ b/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb @@ -16,9 +16,14 @@ SCP_BUILD_RELEASE ?= "1" SCP_PLATFORM ?= "invalid" SCP_COMPILER ?= "arm-none-eabi" SCP_LOG_LEVEL ?= "WARN" +SCP_PLATFORM_FEATURE_SET ?= "0" INHIBIT_DEFAULT_DEPS = "1" -DEPENDS = "virtual/arm-none-eabi-gcc-native" +DEPENDS = "virtual/arm-none-eabi-gcc-native \ + cmake-native \ + ninja-native \ + " + # For now we only build with GCC, so stop meta-clang trying to get involved TOOLCHAIN = "gcc" @@ -32,37 +37,56 @@ S = "${WORKDIR}/git" # Allow platform specific copying of only scp or both scp & mcp, default to both FW_TARGETS ?= "scp mcp" FW_INSTALL ?= "ramfw romfw" - PACKAGE_ARCH = "${MACHINE_ARCH}" COMPATIBLE_MACHINE ?= "invalid" LDFLAGS[unexport] = "1" +CFLAGS[unexport] = "1" -# No configure -do_configure[noexec] = "1" - -EXTRA_OEMAKE = "V=1 \ - BUILD_PATH='${B}' \ - PRODUCT='${SCP_PLATFORM}' \ - MODE='${SCP_BUILD_STR}' \ - LOG_LEVEL='${SCP_LOG_LEVEL}' \ - CC='${SCP_COMPILER}-gcc' \ - AR='${SCP_COMPILER}-ar' \ - SIZE='${SCP_COMPILER}-size' \ - OBJCOPY='${SCP_COMPILER}-objcopy' \ +EXTRA_OECMAKE = "-D CMAKE_BUILD_TYPE=${SCP_BUILD_STR} \ + -D SCP_LOG_LEVEL=${SCP_LOG_LEVEL} \ + -D SCP_PLATFORM_FEATURE_SET=${SCP_PLATFORM_FEATURE_SET} \ " +do_configure() { + for FW in ${FW_TARGETS}; do + for TYPE in ${FW_INSTALL}; do + cmake -GNinja ${EXTRA_OECMAKE} -S ${S} -B "${B}/${TYPE}/${FW}" -D SCP_FIRMWARE_SOURCE_DIR="${SCP_PLATFORM}/${FW}_${TYPE}" + done + done +} + +do_configure[cleandirs] += "${B}" + do_compile() { - oe_runmake -C "${S}" + for FW in ${FW_TARGETS}; do + for TYPE in ${FW_INSTALL}; do + cmake --build ${B}/${TYPE}/${FW} --target all + done + done } -do_compile[cleandirs] += "${B}" do_install() { install -d ${D}/firmware - for FW in ${FW_TARGETS}; do - for TYPE in ${FW_INSTALL}; do - install -D "${B}/product/${SCP_PLATFORM}/${FW}_${TYPE}/${SCP_BUILD_STR}/bin/${FW}_${TYPE}.bin" "${D}/firmware/" - install -D "${B}/product/${SCP_PLATFORM}/${FW}_${TYPE}/${SCP_BUILD_STR}/bin/${FW}_${TYPE}.elf" "${D}/firmware/" + for TYPE in ${FW_INSTALL}; do + for FW in ${FW_TARGETS}; do + if [ "$TYPE" = "romfw" ]; then + if [ "$FW" = "scp" ]; then + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin" + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1" "${D}/firmware/${FW}_${TYPE}.elf" + elif [ "$FW" = "mcp" ]; then + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin" + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl1" "${D}/firmware/${FW}_${TYPE}.elf" + fi + elif [ "$TYPE" = "ramfw" ]; then + if [ "$FW" = "scp" ]; then + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin" + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2" "${D}/firmware/${FW}_${TYPE}.elf" + elif [ "$FW" = "mcp" ]; then + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin" + install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl2" "${D}/firmware/${FW}_${TYPE}.elf" + fi + fi done done }