blob: 30705f6eff3f8f813acfee6e2e5a554e24d24947 [file] [log] [blame]
Brad Bishopbec4ebc2022-08-03 09:55:16 -04001SUMMARY = "SCP and MCP Firmware"
2DESCRIPTION = "Firmware for SCP and MCP software reference implementation"
3HOMEPAGE = "https://github.com/ARM-software/SCP-firmware"
4
5LICENSE = "BSD-3-Clause & Apache-2.0"
6LIC_FILES_CHKSUM = "file://license.md;beginline=5;md5=9db9e3d2fb8d9300a6c3d15101b19731 \
7 file://contrib/cmsis/git/LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
8
Andrew Geisslerea144b032023-01-27 16:03:57 -06009SRC_URI_SCP_FIRMWARE ?= "gitsm://github.com/ARM-software/SCP-firmware.git;protocol=https"
10SRC_URI = "${SRC_URI_SCP_FIRMWARE};branch=${SRCBRANCH}"
11SRCBRANCH = "master"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040012
Patrick Williams8e7b46e2023-05-01 14:19:06 -050013SRCREV = "635697544170b78167ed698393a72d6e522032e1"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040014
15PROVIDES += "virtual/control-processor-firmware"
16
Andrew Geissler2daf84b2023-03-31 09:57:23 -050017CMAKE_BUILD_TYPE ?= "RelWithDebInfo"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040018SCP_PLATFORM ?= "invalid"
19SCP_COMPILER ?= "arm-none-eabi"
20SCP_LOG_LEVEL ?= "WARN"
21SCP_PLATFORM_FEATURE_SET ?= "0"
22
23INHIBIT_DEFAULT_DEPS = "1"
24DEPENDS = "virtual/arm-none-eabi-gcc-native \
25 cmake-native \
26 ninja-native \
27 "
28
29# For now we only build with GCC, so stop meta-clang trying to get involved
30TOOLCHAIN = "gcc"
31
Brad Bishopbec4ebc2022-08-03 09:55:16 -040032inherit deploy
33
34B = "${WORKDIR}/build"
35S = "${WORKDIR}/git"
36
37# Allow platform specific copying of only scp or both scp & mcp, default to both
38FW_TARGETS ?= "scp mcp"
39FW_INSTALL ?= "ramfw romfw"
Andrew Geissler2daf84b2023-03-31 09:57:23 -050040
Brad Bishopbec4ebc2022-08-03 09:55:16 -040041PACKAGE_ARCH = "${MACHINE_ARCH}"
42COMPATIBLE_MACHINE ?= "invalid"
43
Andrew Geissler2daf84b2023-03-31 09:57:23 -050044export CFLAGS = "${DEBUG_PREFIX_MAP}"
45export ASMFLAGS = "${DEBUG_PREFIX_MAP}"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040046
Andrew Geissler2daf84b2023-03-31 09:57:23 -050047LDFLAGS[unexport] = "1"
48
49EXTRA_OECMAKE = "-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
Brad Bishopbec4ebc2022-08-03 09:55:16 -040050 -D SCP_LOG_LEVEL=${SCP_LOG_LEVEL} \
51 -D SCP_PLATFORM_FEATURE_SET=${SCP_PLATFORM_FEATURE_SET} \
Andrew Geisslerea144b032023-01-27 16:03:57 -060052 -D DISABLE_CPPCHECK=1 \
Brad Bishopbec4ebc2022-08-03 09:55:16 -040053 "
54
55do_configure() {
Andrew Geissler2daf84b2023-03-31 09:57:23 -050056 for FW in ${FW_TARGETS}; do
57 for TYPE in ${FW_INSTALL}; do
58 cmake -GNinja ${EXTRA_OECMAKE} -S ${S} -B "${B}/${TYPE}/${FW}" -D SCP_FIRMWARE_SOURCE_DIR="${SCP_PLATFORM}/${FW}_${TYPE}"
59 done
60 done
Brad Bishopbec4ebc2022-08-03 09:55:16 -040061}
62
63do_configure[cleandirs] += "${B}"
64
65do_compile() {
Andrew Geissler2daf84b2023-03-31 09:57:23 -050066 for FW in ${FW_TARGETS}; do
67 for TYPE in ${FW_INSTALL}; do
68 VERBOSE=1 cmake --build ${B}/${TYPE}/${FW} --target all
69 done
70 done
Brad Bishopbec4ebc2022-08-03 09:55:16 -040071}
72
73do_install() {
Andrew Geissler2daf84b2023-03-31 09:57:23 -050074 install -d ${D}/firmware
75 for TYPE in ${FW_INSTALL}; do
76 for FW in ${FW_TARGETS}; do
77 if [ "$TYPE" = "romfw" ]; then
78 if [ "$FW" = "scp" ]; then
79 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
Patrick Williams8e7b46e2023-05-01 14:19:06 -050080 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
81 else
82 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
83 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
Andrew Geissler2daf84b2023-03-31 09:57:23 -050084 fi
85 elif [ "$TYPE" = "ramfw" ]; then
86 if [ "$FW" = "scp" ]; then
87 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
Patrick Williams8e7b46e2023-05-01 14:19:06 -050088 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
89 else
90 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
91 install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
Andrew Geissler2daf84b2023-03-31 09:57:23 -050092 fi
93 fi
94 done
95 done
Brad Bishopbec4ebc2022-08-03 09:55:16 -040096}
97
98FILES:${PN} = "/firmware"
99SYSROOT_DIRS += "/firmware"
100
101FILES:${PN}-dbg += "/firmware/*.elf"
Andrew Geissler2daf84b2023-03-31 09:57:23 -0500102# These binaries are specifically for 32-bit arm
103INSANE_SKIP:${PN}-dbg += "arch"
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400104INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
105INHIBIT_PACKAGE_STRIP = "1"
106
107do_deploy() {
108 # Copy the images to deploy directory
109 cp -rf ${D}/firmware/* ${DEPLOYDIR}/
110}
111addtask deploy after do_install