arm-bsp/scp-firmware: Migrate SCP firmware recipes from Makefile to Cmake

Message ID 20220620155931.913715-1-rupinderjit.singh@arm.com
State New
Headers show
Series arm-bsp/scp-firmware: Migrate SCP firmware recipes from Makefile to Cmake | expand

Commit Message

Rupinderjit Singh June 20, 2022, 3:59 p.m. UTC
Signed-off-by: Rupinderjit Singh <rupinderjit.singh@arm.com>
---
 .../scp-firmware/scp-firmware-juno.inc        |  9 +++
 .../scp-firmware/scp-firmware_2.10.0.bb       | 64 +++++++++++++------
 2 files changed, 53 insertions(+), 20 deletions(-)

Comments

Jon Mason June 21, 2022, 12:19 p.m. UTC | #1
On Mon, 20 Jun 2022 16:59:31 +0100, Rupinderjit Singh wrote:
> 


Applied, thanks!

[1/1] arm-bsp/scp-firmware: Migrate SCP firmware recipes from Makefile to Cmake
      commit: 5cb7b14e03db6567ecccb9462e8b3e35847809f3

Best regards,

Patch

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
 }