There is now an activation required for this layer. Set:
XILINX_WITH_ESW = 'xsct'
All of the recipe bbappends were modified to pay attention to that setting
as well.
The above modifications were based on meta-virtualization's approach.
There were two copies (the right and obsolete) versions of the
xsct_*_app.bbclass. Only keep the version in the classes-recipe.
Signed-off-by: Mark Hatle <[email protected]>
---
classes-global/meta-xilinx-tools-cfg.bbclass | 6 ++
.../sanity-meta-xilinx-tools.bbclass | 10 +++
.../xilinx-tool-check.bbclass | 0
classes-global/xsct-tarball.bbclass | 59 +-------------
classes-recipe/xsctapp.bbclass | 6 +-
classes/xsct_baremetal_app.bbclass | 49 ------------
classes/xsct_freertos_app.bbclass | 48 ------------
.../meta-xilinx-tools-default-versions.inc | 13 ++++
conf/layer.conf | 27 ++++---
conf/xsct-tarball.inc | 68 ++++++++++++++++
recipes-bsp/base-pdi/base-pdi_%.bbappend | 35 +--------
recipes-bsp/base-pdi/base-pdi_xsct.inc | 34 ++++++++
.../bootbin/xilinx-bootbin_1.0-xsct.inc | 19 +++++
.../bootbin/xilinx-bootbin_1.0.bbappend | 22 +-----
recipes-bsp/device-tree/device-tree.bbappend | 58 +-------------
recipes-bsp/device-tree/device-tree_xsct.inc | 61 +++++++++++++++
.../embeddedsw/fsbl-firmware_2022.1-xsct.inc | 75 ++++++++++++++++++
.../embeddedsw/fsbl-firmware_2022.1.bbappend | 76 +-----------------
.../embeddedsw/fsbl-firmware_2022.2-xsct.inc | 75 ++++++++++++++++++
.../embeddedsw/fsbl-firmware_2022.2.bbappend | 76 +-----------------
.../embeddedsw/fsbl-firmware_2023.1-xsct.inc | 76 ++++++++++++++++++
.../embeddedsw/fsbl-firmware_2023.1.bbappend | 77 +------------------
.../embeddedsw/fsbl-firmware_2023.2-xsct.inc | 76 ++++++++++++++++++
.../embeddedsw/fsbl-firmware_2023.2.bbappend | 77 +------------------
.../embeddedsw/fsbl-firmware_2024.1-xsct.inc | 76 ++++++++++++++++++
.../embeddedsw/fsbl-firmware_2024.1.bbappend | 77 +------------------
recipes-bsp/embeddedsw/fsbl-xsct.inc | 11 +++
recipes-bsp/embeddedsw/fsbl.bbappend | 12 +--
.../embeddedsw/plm-firmware_2022.1-xsct.inc | 57 ++++++++++++++
.../embeddedsw/plm-firmware_2022.1.bbappend | 58 +-------------
.../embeddedsw/plm-firmware_2022.2-xsct.inc | 58 ++++++++++++++
.../embeddedsw/plm-firmware_2022.2.bbappend | 59 +-------------
.../embeddedsw/plm-firmware_2023.1-xsct.inc | 58 ++++++++++++++
.../embeddedsw/plm-firmware_2023.1.bbappend | 59 +-------------
.../embeddedsw/plm-firmware_2023.2-xsct.inc | 58 ++++++++++++++
.../embeddedsw/plm-firmware_2023.2.bbappend | 59 +-------------
.../embeddedsw/plm-firmware_2024.1-xsct.inc | 58 ++++++++++++++
.../embeddedsw/plm-firmware_2024.1.bbappend | 59 +-------------
recipes-bsp/embeddedsw/plmfw-xsct.inc | 11 +++
recipes-bsp/embeddedsw/plmfw.bbappend | 12 +--
.../embeddedsw/pmu-firmware_2022.1-xsct.inc | 59 ++++++++++++++
.../embeddedsw/pmu-firmware_2022.1.bbappend | 60 +--------------
.../embeddedsw/pmu-firmware_2022.2-xsct.inc | 59 ++++++++++++++
.../embeddedsw/pmu-firmware_2022.2.bbappend | 60 +--------------
.../embeddedsw/pmu-firmware_2023.1-xsct.inc | 59 ++++++++++++++
.../embeddedsw/pmu-firmware_2023.1.bbappend | 60 +--------------
.../embeddedsw/pmu-firmware_2023.2-xsct.inc | 59 ++++++++++++++
.../embeddedsw/pmu-firmware_2023.2.bbappend | 60 +--------------
.../embeddedsw/pmu-firmware_2024.1-xsct.inc | 59 ++++++++++++++
.../embeddedsw/pmu-firmware_2024.1.bbappend | 60 +--------------
recipes-bsp/embeddedsw/pmufw-xsct.inc | 11 +++
recipes-bsp/embeddedsw/pmufw.bbappend | 12 +--
.../embeddedsw/psm-firmware_2022.1-xsct.inc | 57 ++++++++++++++
.../embeddedsw/psm-firmware_2022.1.bbappend | 58 +-------------
.../embeddedsw/psm-firmware_2022.2-xsct.inc | 58 ++++++++++++++
.../embeddedsw/psm-firmware_2022.2.bbappend | 59 +-------------
.../embeddedsw/psm-firmware_2023.1-xsct.inc | 58 ++++++++++++++
.../embeddedsw/psm-firmware_2023.1.bbappend | 59 +-------------
.../embeddedsw/psm-firmware_2023.2-xsct.inc | 58 ++++++++++++++
.../embeddedsw/psm-firmware_2023.2.bbappend | 59 +-------------
.../embeddedsw/psm-firmware_2024.1-xsct.inc | 58 ++++++++++++++
.../embeddedsw/psm-firmware_2024.1.bbappend | 59 +-------------
recipes-bsp/embeddedsw/psmfw-xsct.inc | 11 +++
recipes-bsp/embeddedsw/psmfw.bbappend | 12 +--
64 files changed, 1556 insertions(+), 1573 deletions(-)
create mode 100644 classes-global/meta-xilinx-tools-cfg.bbclass
create mode 100644 classes-global/sanity-meta-xilinx-tools.bbclass
rename {classes => classes-global}/xilinx-tool-check.bbclass (100%)
delete mode 100644 classes/xsct_baremetal_app.bbclass
delete mode 100644 classes/xsct_freertos_app.bbclass
create mode 100644 conf/distro/include/meta-xilinx-tools-default-versions.inc
create mode 100644 conf/xsct-tarball.inc
create mode 100644 recipes-bsp/base-pdi/base-pdi_xsct.inc
create mode 100644 recipes-bsp/bootbin/xilinx-bootbin_1.0-xsct.inc
create mode 100644 recipes-bsp/device-tree/device-tree_xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-firmware_2022.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-firmware_2022.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-firmware_2023.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-firmware_2023.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-firmware_2024.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/fsbl-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plm-firmware_2022.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plm-firmware_2022.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plm-firmware_2023.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plm-firmware_2023.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plm-firmware_2024.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/plmfw-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmu-firmware_2022.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmu-firmware_2022.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmu-firmware_2023.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmu-firmware_2023.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmu-firmware_2024.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/pmufw-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psm-firmware_2022.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psm-firmware_2022.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psm-firmware_2023.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psm-firmware_2023.2-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psm-firmware_2024.1-xsct.inc
create mode 100644 recipes-bsp/embeddedsw/psmfw-xsct.inc
diff --git a/classes-global/meta-xilinx-tools-cfg.bbclass
b/classes-global/meta-xilinx-tools-cfg.bbclass
new file mode 100644
index 0000000..a9cc69b
--- /dev/null
+++ b/classes-global/meta-xilinx-tools-cfg.bbclass
@@ -0,0 +1,6 @@
+# We need to load the ESW and related config components, only if
XILINX_WITH_ESW
+# is in defined in some way. Since we don't know the configuration during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_XILINX_STANDLONE_CONFIG_PATH file.
+
+include ${@'${META_XILINX_TOOLS_CONFIG_PATH}' if d.getVar('XILINX_WITH_ESW')
== 'xsct' else ''}
diff --git a/classes-global/sanity-meta-xilinx-tools.bbclass
b/classes-global/sanity-meta-xilinx-tools.bbclass
new file mode 100644
index 0000000..85d9a38
--- /dev/null
+++ b/classes-global/sanity-meta-xilinx-tools.bbclass
@@ -0,0 +1,10 @@
+addhandler security_bbappend_distrocheck
+security_bbappend_distrocheck[eventmask] = "bb.event.SanityCheck"
+python security_bbappend_distrocheck() {
+ skip_check = e.data.getVar('SKIP_META_XILINX_TOOLS_SANITY_CHECK') == "1"
+ if e.data.getVar('XILINX_WITH_ESW') != 'xsct' and not skip_check:
+ bb.warn("You have included the meta-xilinx-tools layer, but \
+it has not been enabled using XILINX_WITH_ESW in your configuration. Some \
+bbappend files and preferred version setting may not take effect. See the \
+meta-security README for details on enabling security support.")
+}
diff --git a/classes/xilinx-tool-check.bbclass
b/classes-global/xilinx-tool-check.bbclass
similarity index 100%
rename from classes/xilinx-tool-check.bbclass
rename to classes-global/xilinx-tool-check.bbclass
diff --git a/classes-global/xsct-tarball.bbclass
b/classes-global/xsct-tarball.bbclass
index f4c3442..8781379 100644
--- a/classes-global/xsct-tarball.bbclass
+++ b/classes-global/xsct-tarball.bbclass
@@ -5,67 +5,14 @@
# SPDX-License-Identifier: MIT
#
-TOOL_VER_MAIN ?= "${XILINX_XSCT_VERSION}"
-TOOL_VER_MAIN[doc] = "XSCT version, usually the same as XILINX_XSCT_VERSION"
-
-XILINX_SDK_TOOLCHAIN ??= "${XSCT_STAGING_DIR}/Vitis/${TOOL_VER_MAIN}"
-XSCT_LOADER ?= "${XILINX_SDK_TOOLCHAIN}/bin/xsct"
-
-XSCT_URL[2022.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2022/xsct-trim/xsct-2022-1.tar.xz"
-XSCT_URL[2022.2] =
"http://petalinux.xilinx.com/sswreleases/rel-v2022/xsct-trim/xsct-2022-2.tar.xz"
-XSCT_URL[2023.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2023/xsct-trim/xsct-2023-1_0425.tar.xz"
-XSCT_URL[2023.2] =
"http://petalinux.xilinx.com/sswreleases/rel-v2023/xsct-trim/xsct-2023-2_1002.tar.xz"
-XSCT_URL[2024.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2024/xsct-trim/xsct-2024-1_0515.tar.xz"
-XSCT_URL ?= "${@d.getVarFlag('XSCT_URL', d.getVar('TOOL_VER_MAIN'))}"
-XSCT_TARBALL ?= "xsct_${TOOL_VER_MAIN}.tar.xz"
-XSCT_DLDIR ?= "${DL_DIR}/xsct/"
-XSCT_STAGING_DIR ?= "${TOPDIR}/xsct"
-BB_HASHEXCLUDE_COMMON += "XSCT_STAGING_DIR"
-
-XSCT_CHECKSUM[2022.1] =
"e343a8b386398e292f636f314a057076e551a8173723b8ea0bc1bbd879c05259"
-XSCT_CHECKSUM[2022.2] =
"8a3272036ca61f017f357bf6ad9dfbdec6aebb39f43c3ca0cee7ec86ea4c066f"
-XSCT_CHECKSUM[2023.1] =
"b23f1bca2bf2205912797e90061708e228ec76809c5765f5955d12e4b31f82aa"
-XSCT_CHECKSUM[2023.2] =
"903c8853320e40ed0b23fdf735f88c5a14f945bf92b363f097b8290b523f4016"
-XSCT_CHECKSUM[2024.1] =
"b73be5f07312e48aa3ceb96d947a5c7b347caf2dd23c85c3db12893c319235d5"
-XSCT_CHECKSUM ?= "${@d.getVarFlag('XSCT_CHECKSUM', d.getVar('TOOL_VER_MAIN'))}"
-VALIDATE_XSCT_CHECKSUM ?= '1'
-
-USE_XSCT_TARBALL ?= '1'
-USE_XSCT_TARBALL[doc] = "Flag to determine whether or not to use the
xsct-tarball class. \
-If enabled, the tarball from path EXTERNAL_XSCT_TARBALL is copied to
downloads/xsct, and extracted \
-to tmp/sysroots-xsct. XILINX_SDK_TOOLCHAIN is set accordingly to use xsct from
this path."
-
-COPY_XSCT_TO_ESDK ?= "0"
-COPY_XSCT_TO_ESDK[doc] = "Flag to determine whether or not to copy the
xsct-tarball to the eSDK"
-
-EXTERNAL_XSCT_TARBALL ?= ""
-EXTERNAL_XSCT_TARBALL[doc] = "Variable that defines where the xsct tarball is
stored"
+require ${@'conf/xsct-tarball.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct'
else ''}
addhandler xsct_event_extract
xsct_event_extract[eventmask] = "bb.event.DepTreeGenerated"
-# Specify which targets actually need to call xsct
-XSCT_TARGETS ?= "\
- base-pdi \
- bitstream-extraction \
- device-tree \
- extract-cdo \
- fsbl-firmware \
- fs-boot \
- imgrcry \
- imgsel \
- openamp-fw-echo-testd \
- openamp-fw-mat-muld \
- openamp-fw-rpc-demo \
- plm-firmware \
- pmu-firmware \
- psm-firmware \
- uboot-device-tree \
- esw-bsp \
- xsct-native \
- "
-
python xsct_event_extract() {
+ if d.getVar('XILINX_WITH_ESW') != 'xsct':
+ return
def check_xsct_version():
xsct_path = d.getVar("XILINX_SDK_TOOLCHAIN")
diff --git a/classes-recipe/xsctapp.bbclass b/classes-recipe/xsctapp.bbclass
index 8da6cac..48275c2 100644
--- a/classes-recipe/xsctapp.bbclass
+++ b/classes-recipe/xsctapp.bbclass
@@ -29,7 +29,11 @@ do_compile[lockfiles] = "${TMPDIR}/xsct-invoke.lock"
do_compile() {
cd ${B}/${XSCTH_PROJ}
- export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${XILINX_SDK_TOOLCHAIN}/tps/lnx64/cmake-3.3.2/libs/Ubuntu/x86_64-linux-gnu/:
+ case ${XILINX_XSCT_VERSION} in
+ 2022.1 | 2022.2 | 2023.1 | 2023.2 | 2024.1)
+ export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${XILINX_SDK_TOOLCHAIN}/tps/lnx64/cmake-3.3.2/libs/Ubuntu/x86_64-linux-gnu/:
+ ;;
+ esac
oe_runmake
if [ ! -e ${B}/${XSCTH_PROJ}/${XSCTH_EXECUTABLE} ]; then
bbfatal_log "${XSCTH_PROJ} compile failed."
diff --git a/classes/xsct_baremetal_app.bbclass
b/classes/xsct_baremetal_app.bbclass
deleted file mode 100644
index 80a5111..0000000
--- a/classes/xsct_baremetal_app.bbclass
+++ /dev/null
@@ -1,49 +0,0 @@
-# This bbclass provides build infrastructure for Baremetal Application for both
-# APU and RPU.
-
-inherit xsctapp xsctyaml deploy
-
-DEPENDS = "esw-bsp"
-
-# For ZynqMP DR device Baremetal app depends on libmetal.
-DEPENDS:append:zynqmp-dr = " libmetal"
-
-# recipes that inherit from this class need to use an appropriate machine
-# override for COMPATIBLE_MACHINE to build successfully; don't allow building
-# for microblaze MACHINE
-COMPATIBLE_MACHINE ?= "^$"
-COMPATIBLE_MACHINE:microblaze = "^$"
-
-# Use "standalone" template for Baremetal application.
-BAREMETAL_SUPPORTED_OS_NAME ?= "standalone"
-BAREMETAL_DEPENDS_LIBRARIES ?= "xiltimer"
-XSCTH_MISC:append = " -osname ${BAREMETAL_SUPPORTED_OS_NAME} -lib
${BAREMETAL_DEPENDS_LIBRARIES}"
-
-# Set default target processor and user can override this from recipe.
-XSCTH_PROC_IP:versal ?= "psv_cortexr5"
-XSCTH_PROC_IP:zynqmp ?= "psu_cortexr5"
-XSCTH_PROC:zynq ?= "ps7_cortexa9_1"
-
-# Configurable params for Baremetal BSP such as UART, Clocking etc.
-# TODO - Define params.
-
-# The makefile does not handle parallelization
-PARALLEL_MAKE = "-j1"
-
-XSCTH_APP_COMPILER_FLAGS:append:zynqmp = " -mfloat-abi=hard "
-XSCTH_APP_COMPILER_FLAGS:append:versal = " -mfloat-abi=hard "
-
-# Disable arch QA check errors.
-INSANE_SKIP:${PN} = "arch"
-
-# Disable buildpaths QA check warnings.
-INSANE_SKIP:${PN} += "buildpaths"
-
-do_install() {
- install -d ${D}${nonarch_base_libdir}/firmware/xilinx/${PN}/
- if [ -f ${B}/${XSCTH_PROJ}/${XSCTH_EXECUTABLE} ]; then
- install -Dm 0644 ${B}/${XSCTH_PROJ}/${XSCTH_EXECUTABLE}
${D}${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.elf
- fi
-}
-
-FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}"
diff --git a/classes/xsct_freertos_app.bbclass
b/classes/xsct_freertos_app.bbclass
deleted file mode 100644
index 2c92370..0000000
--- a/classes/xsct_freertos_app.bbclass
+++ /dev/null
@@ -1,48 +0,0 @@
-# This bbclass provides build infrastructure for FreeRTOS Application for both
-# APU and RPU.
-
-inherit xsctapp xsctyaml deploy
-
-DEPENDS = "esw-bsp"
-
-# For ZynqMP DR device FreeRTOS app depends on libmetal.
-DEPENDS:append:zynqmp-dr = " libmetal"
-
-# recipes that inherit from this class need to use an appropriate machine
-# override for COMPATIBLE_MACHINE to build successfully; don't allow building
-# for microblaze MACHINE
-COMPATIBLE_MACHINE ?= "^$"
-COMPATIBLE_MACHINE:microblaze = "^$"
-
-# Use "freertos10_xilinx" template for FreeRTOS application.
-FREERTOS_DEPENDS_LIBRARIES ?= "xiltimer"
-XSCTH_MISC:append = " -osname freertos10_xilinx -lib
${FREERTOS_DEPENDS_LIBRARIES}"
-
-# Set default target processor and user can override this from recipe.
-XSCTH_PROC_IP:versal ?= "psv_cortexr5"
-XSCTH_PROC_IP:zynqmp ?= "psu_cortexr5"
-XSCTH_PROC:zynq ?= "ps7_cortexa9_1"
-
-# Configurable params for FreeRTOS BSP such as UART, Clocking etc.
-# TODO - Define params.
-
-# The makefile does not handle parallelization
-PARALLEL_MAKE = "-j1"
-
-XSCTH_APP_COMPILER_FLAGS:append:zynqmp = " -mfloat-abi=hard "
-XSCTH_APP_COMPILER_FLAGS:append:versal = " -mfloat-abi=hard "
-
-# Disable arch QA check errors.
-INSANE_SKIP:${PN} = "arch"
-
-# Disable buildpaths QA check warnings.
-INSANE_SKIP:${PN} += "buildpaths"
-
-do_install() {
- install -d ${D}${nonarch_base_libdir}/firmware/xilinx/${PN}/
- if [ -f ${B}/${XSCTH_PROJ}/${XSCTH_EXECUTABLE} ]; then
- install -Dm 0644 ${B}/${XSCTH_PROJ}/${XSCTH_EXECUTABLE}
${D}${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.elf
- fi
-}
-
-FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}"
\ No newline at end of file
diff --git a/conf/distro/include/meta-xilinx-tools-default-versions.inc
b/conf/distro/include/meta-xilinx-tools-default-versions.inc
new file mode 100644
index 0000000..f8b5120
--- /dev/null
+++ b/conf/distro/include/meta-xilinx-tools-default-versions.inc
@@ -0,0 +1,13 @@
+XILINX_XSCT_VERSION ??=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}"
+ESDK_LOCALCONF_ALLOW:append = " XILINX_XSCT_VERSION"
+
+HOSTTOOLS += "ps"
+
+BUILDCFG_VARS:append = " XILINX_XSCT_VERSION"
+
+# Default to XSCT version matching XILINX_RELEASE_VERSION
+PREFERRED_VERSION_external-hdf ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}"
+
+PREFERRED_VERSION_openamp-fw-echo-testd ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
+PREFERRED_VERSION_openamp-fw-mat-muld ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
+PREFERRED_VERSION_openamp-fw-rpc-demo ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
diff --git a/conf/layer.conf b/conf/layer.conf
index c876d0e..24b1824 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -14,21 +14,24 @@ BBFILE_PATTERN_xilinx-tools = "^${LAYERDIR}/"
LAYERDEPENDS_xilinx-tools = "core xilinx xilinx-standalone"
-XLNX_SCRIPTS_DIR = "${LAYERDIR}/scripts/"
+LAYERSERIES_COMPAT_xilinx-tools = "scarthgap"
-# Default to XSCT version matching XILINX_RELEASE_VERSION
-XILINX_XSCT_VERSION ??=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}"
-ESDK_LOCALCONF_ALLOW:append = " XILINX_SDK_TOOLCHAIN XILINX_XSCT_VERSION"
+# Set this to enable this layer
+#XILINX_WITH_ESW = "xsct"
-HOSTTOOLS += "ps"
-INHERIT += "xsct-tarball"
+# Sanity check for meta-xilinx-standalone layer.
+# Setting SKIP_META_XILINX_STANDALONE_SANITY_CHECK to "1" would skip the
bbappend files check.
+INHERIT += "sanity-meta-xilinx-tools"
-LAYERSERIES_COMPAT_xilinx-tools = "scarthgap"
+# Temporary. USER_CLASSES is evaluted too late.
+INHERIT += "xsct-tarball"
-BUILDCFG_VARS:append = " XILINX_XSCT_VERSION"
+# We need to load the ESW and related config components, only if
XILINX_WITH_ESW
+# is in defined in some way. Since we don't know the configuration during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_XILINX_STANDLONE_CONFIG_PATH file.
+META_XILINX_TOOLS_CONFIG_PATH =
"${LAYERDIR}/conf/distro/include/meta-xilinx-tools-default-versions.inc"
-PREFERRED_VERSION_external-hdf ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}"
+USER_CLASSES:append = " meta-xilinx-tools-cfg"
-PREFERRED_VERSION_openamp-fw-echo-testd ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
-PREFERRED_VERSION_openamp-fw-mat-muld ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
-PREFERRED_VERSION_openamp-fw-rpc-demo ?=
"${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
+XLNX_SCRIPTS_DIR = "${LAYERDIR}/scripts/"
diff --git a/conf/xsct-tarball.inc b/conf/xsct-tarball.inc
new file mode 100644
index 0000000..4776226
--- /dev/null
+++ b/conf/xsct-tarball.inc
@@ -0,0 +1,68 @@
+#
+# Copyright (C) 2016-2022, Xilinx, Inc. All rights reserved.
+# Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved.
+#
+# SPDX-License-Identifier: MIT
+#
+TOOL_VER_MAIN ?= "${XILINX_XSCT_VERSION}"
+TOOL_VER_MAIN[doc] = "XSCT version, usually the same as XILINX_XSCT_VERSION"
+
+XILINX_SDK_TOOLCHAIN ??= "${XSCT_STAGING_DIR}/Vitis/${TOOL_VER_MAIN}"
+XSCT_LOADER ?= "${XILINX_SDK_TOOLCHAIN}/bin/xsct"
+
+ESDK_LOCALCONF_ALLOW:append = " XILINX_SDK_TOOLCHAIN"
+
+XSCT_URL[2022.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2022/xsct-trim/xsct-2022-1.tar.xz"
+XSCT_URL[2022.2] =
"http://petalinux.xilinx.com/sswreleases/rel-v2022/xsct-trim/xsct-2022-2.tar.xz"
+XSCT_URL[2023.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2023/xsct-trim/xsct-2023-1_0425.tar.xz"
+XSCT_URL[2023.2] =
"http://petalinux.xilinx.com/sswreleases/rel-v2023/xsct-trim/xsct-2023-2_1002.tar.xz"
+XSCT_URL[2024.1] =
"http://petalinux.xilinx.com/sswreleases/rel-v2024/xsct-trim/xsct-2024-1_0515.tar.xz"
+XSCT_URL[2024.2] =
"http://petalinux.xilinx.com/sswreleases/rel-v2024/xsct-trim/xsct-2024-2_XXXX.tar.xz"
+XSCT_URL ?= "${@d.getVarFlag('XSCT_URL', d.getVar('TOOL_VER_MAIN'))}"
+XSCT_TARBALL ?= "xsct_${TOOL_VER_MAIN}.tar.xz"
+XSCT_DLDIR ?= "${DL_DIR}/xsct/"
+XSCT_STAGING_DIR ?= "${TOPDIR}/xsct"
+BB_HASHEXCLUDE_COMMON += "XSCT_STAGING_DIR"
+
+XSCT_CHECKSUM[2022.1] =
"e343a8b386398e292f636f314a057076e551a8173723b8ea0bc1bbd879c05259"
+XSCT_CHECKSUM[2022.2] =
"8a3272036ca61f017f357bf6ad9dfbdec6aebb39f43c3ca0cee7ec86ea4c066f"
+XSCT_CHECKSUM[2023.1] =
"b23f1bca2bf2205912797e90061708e228ec76809c5765f5955d12e4b31f82aa"
+XSCT_CHECKSUM[2023.2] =
"903c8853320e40ed0b23fdf735f88c5a14f945bf92b363f097b8290b523f4016"
+XSCT_CHECKSUM[2024.1] =
"b73be5f07312e48aa3ceb96d947a5c7b347caf2dd23c85c3db12893c319235d5"
+XSCT_CHECKSUM[2024.2] = "UNDEFINED"
+XSCT_CHECKSUM ?= "${@d.getVarFlag('XSCT_CHECKSUM', d.getVar('TOOL_VER_MAIN'))}"
+
+VALIDATE_XSCT_CHECKSUM ?= '1'
+VALIDATE_XSCT_CHECKSUM[doc] = "Ignore the checksum when set to 0"
+
+USE_XSCT_TARBALL ?= '1'
+USE_XSCT_TARBALL[doc] = "Flag to determine whether or not to use the
xsct-tarball class. \
+If enabled, the tarball from path EXTERNAL_XSCT_TARBALL is copied to
downloads/xsct, and extracted \
+to tmp/sysroots-xsct. XILINX_SDK_TOOLCHAIN is set accordingly to use xsct from
this path."
+
+COPY_XSCT_TO_ESDK ?= "0"
+COPY_XSCT_TO_ESDK[doc] = "Flag to determine whether or not to copy the
xsct-tarball to the eSDK"
+
+EXTERNAL_XSCT_TARBALL ?= ""
+EXTERNAL_XSCT_TARBALL[doc] = "Variable that defines where the xsct tarball is
stored"
+
+# Specify which targets actually need to call xsct
+XSCT_TARGETS ?= "\
+ base-pdi \
+ bitstream-extraction \
+ device-tree \
+ extract-cdo \
+ fsbl-firmware \
+ fs-boot \
+ imgrcry \
+ imgsel \
+ openamp-fw-echo-testd \
+ openamp-fw-mat-muld \
+ openamp-fw-rpc-demo \
+ plm-firmware \
+ pmu-firmware \
+ psm-firmware \
+ uboot-device-tree \
+ esw-bsp \
+ xsct-native \
+ "
diff --git a/recipes-bsp/base-pdi/base-pdi_%.bbappend
b/recipes-bsp/base-pdi/base-pdi_%.bbappend
index 834bc99..9bab766 100644
--- a/recipes-bsp/base-pdi/base-pdi_%.bbappend
+++ b/recipes-bsp/base-pdi/base-pdi_%.bbappend
@@ -1,34 +1 @@
-SRC_URI = ""
-
-DEPENDS += "virtual/hdf"
-
-HDF_EXT ?= "xsa"
-PDI_HDF ?= "${DEPLOY_DIR_IMAGE}/Xilinx-${MACHINE}.${HDF_EXT}"
-
-BASE_PDI_NAME ?= "project_1.pdi"
-
-# We generate the PDI with XSCT, so don't verify the user provided one
-PDI_SKIP_CHECK = '1'
-
-inherit xsctbit
-
-XSCTH_MISC = "-hwpname ${XSCTH_PROJ}_hwproj -hdf_type ${HDF_EXT}"
-
-do_install() {
- install -d ${D}/boot
-
- if [ `ls ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi | wc -l` -eq 1 ]; then
- install -m 0644 ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi
${D}/boot/base-design.pdi
- elif [ `ls ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi | wc -l` -gt 1 ]; then
- # In Segmented Configuration design vivado tools will generate both
- # "_boot" and "_pld.pdi" embedded in single xsa and Hence use
*_boot.pdi
- # packaged to Boot.bin.
- if [ -f ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*_boot.pdi ]; then
- install -m 0644 ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*_boot.pdi
${D}/boot/base-design.pdi
- else
- bbfatal "Multiple PDI found in xsa, Use BASE_PDI_NAME to pick from
the following:\n$(basename -a ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi)"
- fi
- else
- bbfatal "No pdi found in xsa"
- fi
-}
+require ${@'base-pdi_xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct' else
''}
diff --git a/recipes-bsp/base-pdi/base-pdi_xsct.inc
b/recipes-bsp/base-pdi/base-pdi_xsct.inc
new file mode 100644
index 0000000..834bc99
--- /dev/null
+++ b/recipes-bsp/base-pdi/base-pdi_xsct.inc
@@ -0,0 +1,34 @@
+SRC_URI = ""
+
+DEPENDS += "virtual/hdf"
+
+HDF_EXT ?= "xsa"
+PDI_HDF ?= "${DEPLOY_DIR_IMAGE}/Xilinx-${MACHINE}.${HDF_EXT}"
+
+BASE_PDI_NAME ?= "project_1.pdi"
+
+# We generate the PDI with XSCT, so don't verify the user provided one
+PDI_SKIP_CHECK = '1'
+
+inherit xsctbit
+
+XSCTH_MISC = "-hwpname ${XSCTH_PROJ}_hwproj -hdf_type ${HDF_EXT}"
+
+do_install() {
+ install -d ${D}/boot
+
+ if [ `ls ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi | wc -l` -eq 1 ]; then
+ install -m 0644 ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi
${D}/boot/base-design.pdi
+ elif [ `ls ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi | wc -l` -gt 1 ]; then
+ # In Segmented Configuration design vivado tools will generate both
+ # "_boot" and "_pld.pdi" embedded in single xsa and Hence use
*_boot.pdi
+ # packaged to Boot.bin.
+ if [ -f ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*_boot.pdi ]; then
+ install -m 0644 ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*_boot.pdi
${D}/boot/base-design.pdi
+ else
+ bbfatal "Multiple PDI found in xsa, Use BASE_PDI_NAME to pick from
the following:\n$(basename -a ${XSCTH_WS}/${XSCTH_PROJ}_hwproj/*.pdi)"
+ fi
+ else
+ bbfatal "No pdi found in xsa"
+ fi
+}
diff --git a/recipes-bsp/bootbin/xilinx-bootbin_1.0-xsct.inc
b/recipes-bsp/bootbin/xilinx-bootbin_1.0-xsct.inc
new file mode 100644
index 0000000..e5b8f5c
--- /dev/null
+++ b/recipes-bsp/bootbin/xilinx-bootbin_1.0-xsct.inc
@@ -0,0 +1,19 @@
+BIF_BITSTREAM_ATTR ?= "${@bb.utils.contains('MACHINE_FEATURES',
'fpga-overlay', '', ' bitstream', d)}"
+
+DEPENDS += 'u-boot-xlnx-scr'
+
+# Only adjust the depends when on versal
+BOOTSCR_DEP = ''
+BOOTSCR_DEP:versal = 'u-boot-xlnx-scr:do_deploy'
+do_compile[depends] .= " ${BOOTSCR_DEP}"
+
+do_compile:append:versal() {
+ dd if=/dev/zero bs=256M count=1 > ${B}/QEMU_qspi.bin
+ dd if=${B}/BOOT.bin of=${B}/QEMU_qspi.bin bs=1 seek=0 conv=notrunc
+ dd if=${DEPLOY_DIR_IMAGE}/boot.scr of=${B}/QEMU_qspi.bin bs=1
seek=66584576 conv=notrunc
+}
+
+do_deploy:append:versal () {
+ install -m 0644 ${B}/QEMU_qspi.bin ${DEPLOYDIR}/${QEMUQSPI_BASE_NAME}.bin
+ ln -sf ${QEMUQSPI_BASE_NAME}.bin ${DEPLOYDIR}/QEMU_qspi-${MACHINE}.bin
+}
diff --git a/recipes-bsp/bootbin/xilinx-bootbin_1.0.bbappend
b/recipes-bsp/bootbin/xilinx-bootbin_1.0.bbappend
index 074f4c7..6669408 100644
--- a/recipes-bsp/bootbin/xilinx-bootbin_1.0.bbappend
+++ b/recipes-bsp/bootbin/xilinx-bootbin_1.0.bbappend
@@ -1,21 +1 @@
-BIF_BITSTREAM_ATTR ?= "${@bb.utils.contains('MACHINE_FEATURES',
'fpga-overlay', '', ' bitstream', d)}"
-
-DEPENDS += 'u-boot-xlnx-scr'
-
-S = "${UNPACKDIR}"
-
-# Only adjust the depends when on versal
-BOOTSCR_DEP = ''
-BOOTSCR_DEP:versal = 'u-boot-xlnx-scr:do_deploy'
-do_compile[depends] .= " ${BOOTSCR_DEP}"
-
-do_compile:append:versal() {
- dd if=/dev/zero bs=256M count=1 > ${B}/QEMU_qspi.bin
- dd if=${B}/BOOT.bin of=${B}/QEMU_qspi.bin bs=1 seek=0 conv=notrunc
- dd if=${DEPLOY_DIR_IMAGE}/boot.scr of=${B}/QEMU_qspi.bin bs=1
seek=66584576 conv=notrunc
-}
-
-do_deploy:append:versal () {
- install -m 0644 ${B}/QEMU_qspi.bin ${DEPLOYDIR}/${QEMUQSPI_BASE_NAME}.bin
- ln -sf ${QEMUQSPI_BASE_NAME}.bin ${DEPLOYDIR}/QEMU_qspi-${MACHINE}.bin
-}
+require ${@'xilinx-bootbin_1.0-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/device-tree/device-tree.bbappend
b/recipes-bsp/device-tree/device-tree.bbappend
index 36fa764..868a439 100644
--- a/recipes-bsp/device-tree/device-tree.bbappend
+++ b/recipes-bsp/device-tree/device-tree.bbappend
@@ -1,57 +1 @@
-DESCRIPTION = "Device Tree generation and packaging for BSP Device Trees using
DTG from Xilinx"
-
-LICENSE = "GPL-2.0-or-later"
-LIC_FILES_CHKSUM =
"file://xadcps/data/xadcps.mdd;md5=d2baf2c4690cd90d3c2c2efabfde5fd4"
-
-require recipes-bsp/device-tree/device-tree.inc
-inherit xsctdt xsctyaml
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
-
-S = "${UNPACKDIR}/git"
-B = "${UNPACKDIR}/${BPN}-build"
-
-DT_VERSION_EXTENSION ?= "xilinx-${XILINX_RELEASE_VERSION}"
-PV = "${DT_VERSION_EXTENSION}+git"
-
-XSCTH_BUILD_CONFIG = ""
-YAML_COMPILER_FLAGS ?= ""
-XSCTH_APP = "device-tree"
-XSCTH_MISC = " -hdf_type ${HDF_EXT}"
-
-DT_FILES_PATH = "${XSCTH_WS}/${XSCTH_PROJ}"
-DT_RELEASE_VERSION ?= "${XILINX_XSCT_VERSION}"
-DT_INCLUDE:append = " ${WORKDIR}
${S}/device_tree/data/kernel_dtsi/${DT_RELEASE_VERSION}/BOARD/"
-DT_INCLUDE:append = "
${S}/device_tree/data/kernel_dtsi/${DT_RELEASE_VERSION}/include/"
-DT_PADDING_SIZE = "0x1000"
-DTC_FLAGS:append = "${@['', ' -@'][d.getVar('YAML_ENABLE_DT_OVERLAY') == '1']}"
-
-COMPATIBLE_MACHINE:zynq = ".*"
-COMPATIBLE_MACHINE:zynqmp = ".*"
-COMPATIBLE_MACHINE:microblaze = ".*"
-COMPATIBLE_MACHINE:versal = ".*"
-
-do_configure[cleandirs] += "${DT_FILES_PATH} ${B}"
-do_deploy[cleandirs] += "${DEPLOYDIR}"
-
-do_compile:prepend() {
- listpath = d.getVar("DT_FILES_PATH")
- try:
- os.remove(os.path.join(listpath, "system.dts"))
- except OSError:
- pass
-}
-
-do_install:append:microblaze () {
- for DTB_FILE in `ls *.dtb`; do
- dtc -I dtb -O dts -o ${D}/boot/devicetree/mb.dts ${B}/${DTB_FILE}
- done
-}
-
-FILES:${PN}:append:microblaze = " /boot/devicetree/*.dts"
-
-EXTERNALSRC_SYMLINKS = ""
-
-# This will generate the DTB, no need to check
-def check_devicetree_variables(d):
- return
+require ${@'device-tree_xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct'
else ''}
diff --git a/recipes-bsp/device-tree/device-tree_xsct.inc
b/recipes-bsp/device-tree/device-tree_xsct.inc
new file mode 100644
index 0000000..c6853d6
--- /dev/null
+++ b/recipes-bsp/device-tree/device-tree_xsct.inc
@@ -0,0 +1,61 @@
+DESCRIPTION = "Device Tree generation and packaging for BSP Device Trees using
DTG from Xilinx"
+
+PV = '${XILINX_XSCT_VERSION}'
+
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM =
"file://xadcps/data/xadcps.mdd;md5=d2baf2c4690cd90d3c2c2efabfde5fd4"
+
+# This file is shared with uboot-device-tree
+require device-tree.inc
+
+inherit xsctdt xsctyaml
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+S = "${UNPACKDIR}/git"
+B = "${UNPACKDIR}/${BPN}-build"
+
+DT_VERSION_EXTENSION ?= "xilinx-${XILINX_RELEASE_VERSION}"
+PV = "${DT_VERSION_EXTENSION}+git"
+
+XSCTH_BUILD_CONFIG = ""
+YAML_COMPILER_FLAGS ?= ""
+XSCTH_APP = "device-tree"
+XSCTH_MISC = " -hdf_type ${HDF_EXT}"
+
+DT_FILES_PATH = "${XSCTH_WS}/${XSCTH_PROJ}"
+DT_RELEASE_VERSION ?= "${XILINX_XSCT_VERSION}"
+DT_INCLUDE:append = " ${UNPACKDIR}
${S}/device_tree/data/kernel_dtsi/${DT_RELEASE_VERSION}/BOARD/"
+DT_INCLUDE:append = "
${S}/device_tree/data/kernel_dtsi/${DT_RELEASE_VERSION}/include/"
+DT_PADDING_SIZE = "0x1000"
+DTC_FLAGS:append = "${@['', ' -@'][d.getVar('YAML_ENABLE_DT_OVERLAY') == '1']}"
+
+COMPATIBLE_MACHINE:zynq = ".*"
+COMPATIBLE_MACHINE:zynqmp = ".*"
+COMPATIBLE_MACHINE:microblaze = ".*"
+COMPATIBLE_MACHINE:versal = ".*"
+
+do_configure[cleandirs] += "${DT_FILES_PATH} ${B}"
+do_deploy[cleandirs] += "${DEPLOYDIR}"
+
+do_compile:prepend() {
+ listpath = d.getVar("DT_FILES_PATH")
+ try:
+ os.remove(os.path.join(listpath, "system.dts"))
+ except OSError:
+ pass
+}
+
+do_install:append:microblaze () {
+ for DTB_FILE in `ls *.dtb`; do
+ dtc -I dtb -O dts -o ${D}/boot/devicetree/mb.dts ${B}/${DTB_FILE}
+ done
+}
+
+FILES:${PN}:append:microblaze = " /boot/devicetree/*.dts"
+
+EXTERNALSRC_SYMLINKS = ""
+
+# This will generate the DTB, no need to check
+def check_devicetree_variables(d):
+ return
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2022.1-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-firmware_2022.1-xsct.inc
new file mode 100644
index 0000000..2745069
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2022.1-xsct.inc
@@ -0,0 +1,75 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match fsbl.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+B:zynq = "${S}/${XSCTH_PROJ}"
+B:zynqmp = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
+
+XSCTH_APP:zynq = "Zynq FSBL"
+XSCTH_APP:zynqmp = "Zynq MP FSBL"
+
+# Building for zynq does work here
+COMPATIBLE_MACHINE:zynq = ".*"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynq = "${HOST_SYS}"
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+EXTRA_OEMAKE:linux-gnueabi = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+XSCT_PATH_ADD:append:eabi = "\
+${UNPACKDIR}/bin:"
+
+do_compile:prepend:elf:aarch64() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
+}
+
+ARM_INSTRUCTION_SET:eabi:arm = "arm"
+do_compile:prepend:eabi:arm() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
+}
+
+# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
+do_install() {
+ :
+}
+
+# Override the default with the specific component name and path XSCT puts out
+# this path is within the B directory
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
+ ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
+}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bbappend
b/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bbappend
index 2745069..d9ca992 100644
--- a/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bbappend
@@ -1,75 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match fsbl.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-B:zynq = "${S}/${XSCTH_PROJ}"
-B:zynqmp = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
-
-XSCTH_APP:zynq = "Zynq FSBL"
-XSCTH_APP:zynqmp = "Zynq MP FSBL"
-
-# Building for zynq does work here
-COMPATIBLE_MACHINE:zynq = ".*"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynq = "${HOST_SYS}"
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-EXTRA_OEMAKE:linux-gnueabi = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-XSCT_PATH_ADD:append:eabi = "\
-${UNPACKDIR}/bin:"
-
-do_compile:prepend:elf:aarch64() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
-}
-
-ARM_INSTRUCTION_SET:eabi:arm = "arm"
-do_compile:prepend:eabi:arm() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
-}
-
-# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
-do_install() {
- :
-}
-
-# Override the default with the specific component name and path XSCT puts out
-# this path is within the B directory
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
- ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
-}
+require ${@'fsbl-firmware_2022.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2022.2-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-firmware_2022.2-xsct.inc
new file mode 100644
index 0000000..2745069
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2022.2-xsct.inc
@@ -0,0 +1,75 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match fsbl.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+B:zynq = "${S}/${XSCTH_PROJ}"
+B:zynqmp = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
+
+XSCTH_APP:zynq = "Zynq FSBL"
+XSCTH_APP:zynqmp = "Zynq MP FSBL"
+
+# Building for zynq does work here
+COMPATIBLE_MACHINE:zynq = ".*"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynq = "${HOST_SYS}"
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+EXTRA_OEMAKE:linux-gnueabi = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+XSCT_PATH_ADD:append:eabi = "\
+${UNPACKDIR}/bin:"
+
+do_compile:prepend:elf:aarch64() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
+}
+
+ARM_INSTRUCTION_SET:eabi:arm = "arm"
+do_compile:prepend:eabi:arm() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
+}
+
+# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
+do_install() {
+ :
+}
+
+# Override the default with the specific component name and path XSCT puts out
+# this path is within the B directory
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
+ ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
+}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bbappend
b/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bbappend
index 2745069..eb72e83 100644
--- a/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bbappend
@@ -1,75 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match fsbl.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-B:zynq = "${S}/${XSCTH_PROJ}"
-B:zynqmp = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
-
-XSCTH_APP:zynq = "Zynq FSBL"
-XSCTH_APP:zynqmp = "Zynq MP FSBL"
-
-# Building for zynq does work here
-COMPATIBLE_MACHINE:zynq = ".*"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynq = "${HOST_SYS}"
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-EXTRA_OEMAKE:linux-gnueabi = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-XSCT_PATH_ADD:append:eabi = "\
-${UNPACKDIR}/bin:"
-
-do_compile:prepend:elf:aarch64() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
-}
-
-ARM_INSTRUCTION_SET:eabi:arm = "arm"
-do_compile:prepend:eabi:arm() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
-}
-
-# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
-do_install() {
- :
-}
-
-# Override the default with the specific component name and path XSCT puts out
-# this path is within the B directory
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
- ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
-}
+require ${@'fsbl-firmware_2022.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2023.1-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-firmware_2023.1-xsct.inc
new file mode 100644
index 0000000..32736ba
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2023.1-xsct.inc
@@ -0,0 +1,76 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match fsbl.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+B:zynq = "${S}/${XSCTH_PROJ}"
+B:zynqmp = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
+
+XSCTH_APP:zynq = "Zynq FSBL"
+XSCTH_APP:zynqmp = "Zynq MP FSBL"
+
+# Building for zynq does work here
+COMPATIBLE_MACHINE:zynq = ".*"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynq = "${HOST_SYS}"
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+EXTRA_OEMAKE:linux-gnueabi = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+XSCT_PATH_ADD:append:eabi = "\
+${UNPACKDIR}/bin:"
+
+do_compile:prepend:elf:aarch64() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
+}
+
+ARM_INSTRUCTION_SET:eabi:arm = "arm"
+do_compile:prepend:eabi:arm() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
+}
+
+# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
+do_install() {
+ :
+}
+
+# Override the default with the specific component name and path XSCT puts out
+# this path is within the B directory
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
+ ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
+}
+
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2023.1.bbappend
b/recipes-bsp/embeddedsw/fsbl-firmware_2023.1.bbappend
index 32736ba..a2aa3a9 100644
--- a/recipes-bsp/embeddedsw/fsbl-firmware_2023.1.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2023.1.bbappend
@@ -1,76 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match fsbl.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-B:zynq = "${S}/${XSCTH_PROJ}"
-B:zynqmp = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
-
-XSCTH_APP:zynq = "Zynq FSBL"
-XSCTH_APP:zynqmp = "Zynq MP FSBL"
-
-# Building for zynq does work here
-COMPATIBLE_MACHINE:zynq = ".*"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynq = "${HOST_SYS}"
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-EXTRA_OEMAKE:linux-gnueabi = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-XSCT_PATH_ADD:append:eabi = "\
-${UNPACKDIR}/bin:"
-
-do_compile:prepend:elf:aarch64() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
-}
-
-ARM_INSTRUCTION_SET:eabi:arm = "arm"
-do_compile:prepend:eabi:arm() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
-}
-
-# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
-do_install() {
- :
-}
-
-# Override the default with the specific component name and path XSCT puts out
-# this path is within the B directory
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
- ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
-}
-
+require ${@'fsbl-firmware_2023.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2023.2-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-firmware_2023.2-xsct.inc
new file mode 100644
index 0000000..32736ba
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2023.2-xsct.inc
@@ -0,0 +1,76 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match fsbl.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+B:zynq = "${S}/${XSCTH_PROJ}"
+B:zynqmp = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
+
+XSCTH_APP:zynq = "Zynq FSBL"
+XSCTH_APP:zynqmp = "Zynq MP FSBL"
+
+# Building for zynq does work here
+COMPATIBLE_MACHINE:zynq = ".*"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynq = "${HOST_SYS}"
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+EXTRA_OEMAKE:linux-gnueabi = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+XSCT_PATH_ADD:append:eabi = "\
+${UNPACKDIR}/bin:"
+
+do_compile:prepend:elf:aarch64() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
+}
+
+ARM_INSTRUCTION_SET:eabi:arm = "arm"
+do_compile:prepend:eabi:arm() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
+}
+
+# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
+do_install() {
+ :
+}
+
+# Override the default with the specific component name and path XSCT puts out
+# this path is within the B directory
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
+ ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
+}
+
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bbappend
b/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bbappend
index 32736ba..7be869e 100644
--- a/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bbappend
@@ -1,76 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match fsbl.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-B:zynq = "${S}/${XSCTH_PROJ}"
-B:zynqmp = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
-
-XSCTH_APP:zynq = "Zynq FSBL"
-XSCTH_APP:zynqmp = "Zynq MP FSBL"
-
-# Building for zynq does work here
-COMPATIBLE_MACHINE:zynq = ".*"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynq = "${HOST_SYS}"
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-EXTRA_OEMAKE:linux-gnueabi = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-XSCT_PATH_ADD:append:eabi = "\
-${UNPACKDIR}/bin:"
-
-do_compile:prepend:elf:aarch64() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
-}
-
-ARM_INSTRUCTION_SET:eabi:arm = "arm"
-do_compile:prepend:eabi:arm() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
-}
-
-# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
-do_install() {
- :
-}
-
-# Override the default with the specific component name and path XSCT puts out
-# this path is within the B directory
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
- ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
-}
-
+require ${@'fsbl-firmware_2023.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2024.1-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-firmware_2024.1-xsct.inc
new file mode 100644
index 0000000..32736ba
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2024.1-xsct.inc
@@ -0,0 +1,76 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match fsbl.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+B:zynq = "${S}/${XSCTH_PROJ}"
+B:zynqmp = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
+
+XSCTH_APP:zynq = "Zynq FSBL"
+XSCTH_APP:zynqmp = "Zynq MP FSBL"
+
+# Building for zynq does work here
+COMPATIBLE_MACHINE:zynq = ".*"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynq = "${HOST_SYS}"
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+EXTRA_OEMAKE:linux-gnueabi = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+XSCT_PATH_ADD:append:eabi = "\
+${UNPACKDIR}/bin:"
+
+do_compile:prepend:elf:aarch64() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
+ chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
+}
+
+ARM_INSTRUCTION_SET:eabi:arm = "arm"
+do_compile:prepend:eabi:arm() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
+ chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
+}
+
+# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
+do_install() {
+ :
+}
+
+# Override the default with the specific component name and path XSCT puts out
+# this path is within the B directory
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
+ ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
+}
+
diff --git a/recipes-bsp/embeddedsw/fsbl-firmware_2024.1.bbappend
b/recipes-bsp/embeddedsw/fsbl-firmware_2024.1.bbappend
index 32736ba..9e33d1d 100644
--- a/recipes-bsp/embeddedsw/fsbl-firmware_2024.1.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl-firmware_2024.1.bbappend
@@ -1,76 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match fsbl.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-B:zynq = "${S}/${XSCTH_PROJ}"
-B:zynqmp = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = " -DFSBL_DEBUG_INFO"
-
-XSCTH_APP:zynq = "Zynq FSBL"
-XSCTH_APP:zynqmp = "Zynq MP FSBL"
-
-# Building for zynq does work here
-COMPATIBLE_MACHINE:zynq = ".*"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynq = "${HOST_SYS}"
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-EXTRA_OEMAKE:linux-gnueabi = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-XSCT_PATH_ADD:append:eabi = "\
-${UNPACKDIR}/bin:"
-
-do_compile:prepend:elf:aarch64() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/aarch64-none-elf-ar
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-gcc
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-as
- chmod 0755 ${UNPACKDIR}/bin/aarch64-none-elf-ar
-}
-
-ARM_INSTRUCTION_SET:eabi:arm = "arm"
-do_compile:prepend:eabi:arm() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/arm-none-eabi-ar
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-gcc
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-as
- chmod 0755 ${UNPACKDIR}/bin/arm-none-eabi-ar
-}
-
-# xsctapp sets it's own do_install, replace it with the real one (from
meta-xilinx-standalone)
-do_install() {
- :
-}
-
-# Override the default with the specific component name and path XSCT puts out
-# this path is within the B directory
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_deploy, replace it with the real one (from
meta-xilinx-standalone)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf
- ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf
-}
-
+require ${@'fsbl-firmware_2024.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/fsbl-xsct.inc
b/recipes-bsp/embeddedsw/fsbl-xsct.inc
new file mode 100644
index 0000000..b15c1f2
--- /dev/null
+++ b/recipes-bsp/embeddedsw/fsbl-xsct.inc
@@ -0,0 +1,11 @@
+# Whent his layer is included, we hard code how to build the firmware
+FSBL_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw', '',
'fsbl-firmware:do_deploy', d)}"
+FSBL_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw',
'mc::fsbl-fw:fsbl-firmware:do_deploy', '', d)}"
+FSBL_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw',
'${TOPDIR}/tmp-fsbl-fw/deploy/images/${MACHINE}', '${DEPLOY_DIR_IMAGE}', d)}"
+
+# This needs to match the value in fsbl-firmware.bbappend
+FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
+
+# We can skip the check, as we will build this
+def check_pmu_vars(d):
+ return
diff --git a/recipes-bsp/embeddedsw/fsbl.bbappend
b/recipes-bsp/embeddedsw/fsbl.bbappend
index b15c1f2..5446691 100644
--- a/recipes-bsp/embeddedsw/fsbl.bbappend
+++ b/recipes-bsp/embeddedsw/fsbl.bbappend
@@ -1,11 +1 @@
-# Whent his layer is included, we hard code how to build the firmware
-FSBL_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw', '',
'fsbl-firmware:do_deploy', d)}"
-FSBL_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw',
'mc::fsbl-fw:fsbl-firmware:do_deploy', '', d)}"
-FSBL_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG', 'fsbl-fw',
'${TOPDIR}/tmp-fsbl-fw/deploy/images/${MACHINE}', '${DEPLOY_DIR_IMAGE}', d)}"
-
-# This needs to match the value in fsbl-firmware.bbappend
-FSBL_IMAGE_NAME = "fsbl-${MACHINE}"
-
-# We can skip the check, as we will build this
-def check_pmu_vars(d):
- return
+require ${@'fsbl-xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2022.1-xsct.inc
b/recipes-bsp/embeddedsw/plm-firmware_2022.1-xsct.inc
new file mode 100644
index 0000000..65cb8d2
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plm-firmware_2022.1-xsct.inc
@@ -0,0 +1,57 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in plmfw.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_pmc"
+XSCTH_APP = "versal PLM"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2022.1.bbappend
b/recipes-bsp/embeddedsw/plm-firmware_2022.1.bbappend
index 65cb8d2..555d853 100644
--- a/recipes-bsp/embeddedsw/plm-firmware_2022.1.bbappend
+++ b/recipes-bsp/embeddedsw/plm-firmware_2022.1.bbappend
@@ -1,57 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in plmfw.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_pmc"
-XSCTH_APP = "versal PLM"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
- ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
- ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
-}
+require ${@'plm-firmware_2022.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2022.2-xsct.inc
b/recipes-bsp/embeddedsw/plm-firmware_2022.2-xsct.inc
new file mode 100644
index 0000000..3c47295
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plm-firmware_2022.2-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in plmfw.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_pmc"
+XSCTH_PROC_IP:versal-net = "psx_pmc"
+XSCTH_APP = "versal PLM"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2022.2.bbappend
b/recipes-bsp/embeddedsw/plm-firmware_2022.2.bbappend
index 3c47295..f131df9 100644
--- a/recipes-bsp/embeddedsw/plm-firmware_2022.2.bbappend
+++ b/recipes-bsp/embeddedsw/plm-firmware_2022.2.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in plmfw.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_pmc"
-XSCTH_PROC_IP:versal-net = "psx_pmc"
-XSCTH_APP = "versal PLM"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
- ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
- ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
-}
+require ${@'plm-firmware_2022.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2023.1-xsct.inc
b/recipes-bsp/embeddedsw/plm-firmware_2023.1-xsct.inc
new file mode 100644
index 0000000..3c47295
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plm-firmware_2023.1-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in plmfw.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_pmc"
+XSCTH_PROC_IP:versal-net = "psx_pmc"
+XSCTH_APP = "versal PLM"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2023.1.bbappend
b/recipes-bsp/embeddedsw/plm-firmware_2023.1.bbappend
index 3c47295..cd72cba 100644
--- a/recipes-bsp/embeddedsw/plm-firmware_2023.1.bbappend
+++ b/recipes-bsp/embeddedsw/plm-firmware_2023.1.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in plmfw.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_pmc"
-XSCTH_PROC_IP:versal-net = "psx_pmc"
-XSCTH_APP = "versal PLM"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
- ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
- ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
-}
+require ${@'plm-firmware_2023.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2023.2-xsct.inc
b/recipes-bsp/embeddedsw/plm-firmware_2023.2-xsct.inc
new file mode 100644
index 0000000..3c47295
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plm-firmware_2023.2-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in plmfw.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_pmc"
+XSCTH_PROC_IP:versal-net = "psx_pmc"
+XSCTH_APP = "versal PLM"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2023.2.bbappend
b/recipes-bsp/embeddedsw/plm-firmware_2023.2.bbappend
index 3c47295..2e12594 100644
--- a/recipes-bsp/embeddedsw/plm-firmware_2023.2.bbappend
+++ b/recipes-bsp/embeddedsw/plm-firmware_2023.2.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in plmfw.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_pmc"
-XSCTH_PROC_IP:versal-net = "psx_pmc"
-XSCTH_APP = "versal PLM"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
- ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
- ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
-}
+require ${@'plm-firmware_2023.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2024.1-xsct.inc
b/recipes-bsp/embeddedsw/plm-firmware_2024.1-xsct.inc
new file mode 100644
index 0000000..3c47295
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plm-firmware_2024.1-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in plmfw.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_pmc"
+XSCTH_PROC_IP:versal-net = "psx_pmc"
+XSCTH_APP = "versal PLM"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/plm-firmware_2024.1.bbappend
b/recipes-bsp/embeddedsw/plm-firmware_2024.1.bbappend
index 3c47295..e3d3240 100644
--- a/recipes-bsp/embeddedsw/plm-firmware_2024.1.bbappend
+++ b/recipes-bsp/embeddedsw/plm-firmware_2024.1.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in plmfw.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_pmc"
-XSCTH_PROC_IP:versal-net = "psx_pmc"
-XSCTH_APP = "versal PLM"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PLM_BASE_NAME}.elf
- ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${PLM_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PLM_BASE_NAME}.bin
- ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${PLM_IMAGE_NAME}.bin
-}
+require ${@'plm-firmware_2024.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/plmfw-xsct.inc
b/recipes-bsp/embeddedsw/plmfw-xsct.inc
new file mode 100644
index 0000000..e7652d4
--- /dev/null
+++ b/recipes-bsp/embeddedsw/plmfw-xsct.inc
@@ -0,0 +1,11 @@
+# Whent his layer is included, we hard code how to build the firmware
+PLM_DEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '',
'plm-firmware:do_deploy', d)}"
+PLM_MCDEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'mc::versal-fw:plm-firmware:do_deploy', '', d)}"
+PLM_DEPLOY_DIR ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
+
+# This needs to match the value in plm-firmware.bbappend
+PLM_IMAGE_NAME = "plm-${MACHINE}"
+
+# We can skip the check, as we will build this
+def check_plm_vars(d):
+ return
diff --git a/recipes-bsp/embeddedsw/plmfw.bbappend
b/recipes-bsp/embeddedsw/plmfw.bbappend
index e7652d4..a5c6514 100644
--- a/recipes-bsp/embeddedsw/plmfw.bbappend
+++ b/recipes-bsp/embeddedsw/plmfw.bbappend
@@ -1,11 +1 @@
-# Whent his layer is included, we hard code how to build the firmware
-PLM_DEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '',
'plm-firmware:do_deploy', d)}"
-PLM_MCDEPENDS ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'mc::versal-fw:plm-firmware:do_deploy', '', d)}"
-PLM_DEPLOY_DIR ?= "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
-
-# This needs to match the value in plm-firmware.bbappend
-PLM_IMAGE_NAME = "plm-${MACHINE}"
-
-# We can skip the check, as we will build this
-def check_plm_vars(d):
- return
+require ${@'plmfw-xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2022.1-xsct.inc
b/recipes-bsp/embeddedsw/pmu-firmware_2022.1-xsct.inc
new file mode 100644
index 0000000..4057353
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2022.1-xsct.inc
@@ -0,0 +1,59 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match pmufw.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
+XSCTH_PROC_IP = "psu_pmu"
+XSCTH_APP = "ZynqMP PMU Firmware"
+
+YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bbappend
b/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bbappend
index 4057353..0f64693 100644
--- a/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bbappend
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bbappend
@@ -1,59 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match pmufw.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
-XSCTH_PROC_IP = "psu_pmu"
-XSCTH_APP = "ZynqMP PMU Firmware"
-
-YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'pmu-firmware_2022.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2022.2-xsct.inc
b/recipes-bsp/embeddedsw/pmu-firmware_2022.2-xsct.inc
new file mode 100644
index 0000000..4057353
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2022.2-xsct.inc
@@ -0,0 +1,59 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match pmufw.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
+XSCTH_PROC_IP = "psu_pmu"
+XSCTH_APP = "ZynqMP PMU Firmware"
+
+YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bbappend
b/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bbappend
index 4057353..970f96d 100644
--- a/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bbappend
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bbappend
@@ -1,59 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match pmufw.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
-XSCTH_PROC_IP = "psu_pmu"
-XSCTH_APP = "ZynqMP PMU Firmware"
-
-YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'pmu-firmware_2022.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2023.1-xsct.inc
b/recipes-bsp/embeddedsw/pmu-firmware_2023.1-xsct.inc
new file mode 100644
index 0000000..4057353
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2023.1-xsct.inc
@@ -0,0 +1,59 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match pmufw.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
+XSCTH_PROC_IP = "psu_pmu"
+XSCTH_APP = "ZynqMP PMU Firmware"
+
+YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2023.1.bbappend
b/recipes-bsp/embeddedsw/pmu-firmware_2023.1.bbappend
index 4057353..56b90b7 100644
--- a/recipes-bsp/embeddedsw/pmu-firmware_2023.1.bbappend
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2023.1.bbappend
@@ -1,59 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match pmufw.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
-XSCTH_PROC_IP = "psu_pmu"
-XSCTH_APP = "ZynqMP PMU Firmware"
-
-YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'pmu-firmware_2023.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2023.2-xsct.inc
b/recipes-bsp/embeddedsw/pmu-firmware_2023.2-xsct.inc
new file mode 100644
index 0000000..4057353
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2023.2-xsct.inc
@@ -0,0 +1,59 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match pmufw.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
+XSCTH_PROC_IP = "psu_pmu"
+XSCTH_APP = "ZynqMP PMU Firmware"
+
+YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bbappend
b/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bbappend
index 4057353..02a58c9 100644
--- a/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bbappend
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bbappend
@@ -1,59 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match pmufw.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
-XSCTH_PROC_IP = "psu_pmu"
-XSCTH_APP = "ZynqMP PMU Firmware"
-
-YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'pmu-firmware_2023.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2024.1-xsct.inc
b/recipes-bsp/embeddedsw/pmu-firmware_2024.1-xsct.inc
new file mode 100644
index 0000000..4057353
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2024.1-xsct.inc
@@ -0,0 +1,59 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match pmufw.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
+
+XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
+XSCTH_PROC_IP = "psu_pmu"
+XSCTH_APP = "ZynqMP PMU Firmware"
+
+YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
+do_deploy() {
+ install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/pmu-firmware_2024.1.bbappend
b/recipes-bsp/embeddedsw/pmu-firmware_2024.1.bbappend
index 4057353..35ad688 100644
--- a/recipes-bsp/embeddedsw/pmu-firmware_2024.1.bbappend
+++ b/recipes-bsp/embeddedsw/pmu-firmware_2024.1.bbappend
@@ -1,59 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match pmufw.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_MISC:append:zynqmp-dr = " -lib libmetal"
-
-XSCTH_COMPILER_DEBUG_FLAGS = "-DDEBUG_MODE -DXPFW_DEBUG_DETAILED"
-XSCTH_PROC_IP = "psu_pmu"
-XSCTH_APP = "ZynqMP PMU Firmware"
-
-YAML_COMPILER_FLAGS:append = " -DENABLE_SCHEDULER "
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:zynqmp = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-ESW_COMPONENT = "${XSCTH_PROJ}/executable.elf"
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-# Duplicate from pmu-firmware.inc in meta-xilinx-standalone (replaces the
version from xsctapp.bbclass)
-do_deploy() {
- install -Dm 0644 ${B}/${ESW_COMPONENT}
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${ESW_COMPONENT}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PMU_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'pmu-firmware_2024.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/pmufw-xsct.inc
b/recipes-bsp/embeddedsw/pmufw-xsct.inc
new file mode 100644
index 0000000..5c125fb
--- /dev/null
+++ b/recipes-bsp/embeddedsw/pmufw-xsct.inc
@@ -0,0 +1,11 @@
+# Whent his layer is included, we hard code how to build the firmware
+PMU_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', '',
'pmu-firmware:do_deploy', d)}"
+PMU_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw',
'mc::zynqmp-pmufw:pmu-firmware:do_deploy', '', d)}"
+PMU_FIRMWARE_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG',
'zynqmp-pmufw',
'${TOPDIR}/tmp-microblaze-zynqmp-pmufw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
+
+# This needs to match the value in pmu-firmware.bbappend
+PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
+
+# We can skip the check, as we will build this
+def check_pmu_vars(d):
+ return
diff --git a/recipes-bsp/embeddedsw/pmufw.bbappend
b/recipes-bsp/embeddedsw/pmufw.bbappend
index 5c125fb..c8ec525 100644
--- a/recipes-bsp/embeddedsw/pmufw.bbappend
+++ b/recipes-bsp/embeddedsw/pmufw.bbappend
@@ -1,11 +1 @@
-# Whent his layer is included, we hard code how to build the firmware
-PMU_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw', '',
'pmu-firmware:do_deploy', d)}"
-PMU_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'zynqmp-pmufw',
'mc::zynqmp-pmufw:pmu-firmware:do_deploy', '', d)}"
-PMU_FIRMWARE_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG',
'zynqmp-pmufw',
'${TOPDIR}/tmp-microblaze-zynqmp-pmufw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
-
-# This needs to match the value in pmu-firmware.bbappend
-PMU_FIRMWARE_IMAGE_NAME = "pmu-firmware-${MACHINE}"
-
-# We can skip the check, as we will build this
-def check_pmu_vars(d):
- return
+require ${@'pmufw-xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2022.1-xsct.inc
b/recipes-bsp/embeddedsw/psm-firmware_2022.1-xsct.inc
new file mode 100644
index 0000000..4e27091
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psm-firmware_2022.1-xsct.inc
@@ -0,0 +1,57 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in psmfw.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_psm"
+XSCTH_APP = "versal PSM Firmware"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2022.1.bbappend
b/recipes-bsp/embeddedsw/psm-firmware_2022.1.bbappend
index 4e27091..5a58e48 100644
--- a/recipes-bsp/embeddedsw/psm-firmware_2022.1.bbappend
+++ b/recipes-bsp/embeddedsw/psm-firmware_2022.1.bbappend
@@ -1,57 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in psmfw.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_psm"
-XSCTH_APP = "versal PSM Firmware"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'psm-firmware_2022.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2022.2-xsct.inc
b/recipes-bsp/embeddedsw/psm-firmware_2022.2-xsct.inc
new file mode 100644
index 0000000..61d42e6
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psm-firmware_2022.2-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in psmfw.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_psm"
+XSCTH_PROC_IP:versal-net = "psx_psm"
+XSCTH_APP = "versal PSM Firmware"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2022.2.bbappend
b/recipes-bsp/embeddedsw/psm-firmware_2022.2.bbappend
index 61d42e6..b85835c 100644
--- a/recipes-bsp/embeddedsw/psm-firmware_2022.2.bbappend
+++ b/recipes-bsp/embeddedsw/psm-firmware_2022.2.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in psmfw.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_psm"
-XSCTH_PROC_IP:versal-net = "psx_psm"
-XSCTH_APP = "versal PSM Firmware"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'psm-firmware_2022.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2023.1-xsct.inc
b/recipes-bsp/embeddedsw/psm-firmware_2023.1-xsct.inc
new file mode 100644
index 0000000..61d42e6
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psm-firmware_2023.1-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in psmfw.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_psm"
+XSCTH_PROC_IP:versal-net = "psx_psm"
+XSCTH_APP = "versal PSM Firmware"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2023.1.bbappend
b/recipes-bsp/embeddedsw/psm-firmware_2023.1.bbappend
index 61d42e6..ea953e4 100644
--- a/recipes-bsp/embeddedsw/psm-firmware_2023.1.bbappend
+++ b/recipes-bsp/embeddedsw/psm-firmware_2023.1.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in psmfw.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_psm"
-XSCTH_PROC_IP:versal-net = "psx_psm"
-XSCTH_APP = "versal PSM Firmware"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'psm-firmware_2023.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2023.2-xsct.inc
b/recipes-bsp/embeddedsw/psm-firmware_2023.2-xsct.inc
new file mode 100644
index 0000000..61d42e6
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psm-firmware_2023.2-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in psmfw.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_psm"
+XSCTH_PROC_IP:versal-net = "psx_psm"
+XSCTH_APP = "versal PSM Firmware"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2023.2.bbappend
b/recipes-bsp/embeddedsw/psm-firmware_2023.2.bbappend
index 61d42e6..2532241 100644
--- a/recipes-bsp/embeddedsw/psm-firmware_2023.2.bbappend
+++ b/recipes-bsp/embeddedsw/psm-firmware_2023.2.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in psmfw.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_psm"
-XSCTH_PROC_IP:versal-net = "psx_psm"
-XSCTH_APP = "versal PSM Firmware"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'psm-firmware_2023.2-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2024.1-xsct.inc
b/recipes-bsp/embeddedsw/psm-firmware_2024.1-xsct.inc
new file mode 100644
index 0000000..61d42e6
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psm-firmware_2024.1-xsct.inc
@@ -0,0 +1,58 @@
+# Should not need any external patches
+SRC_URI = "${EMBEDDEDSW_SRCURI}"
+
+# We WANT to default to this version when available
+DEFAULT_PREFERENCE = "100"
+
+inherit xsctapp xsctyaml
+
+# This needs to match the value in psmfw.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+B = "${S}/${XSCTH_PROJ}"
+
+XSCTH_PROC_IP = "psv_psm"
+XSCTH_PROC_IP:versal-net = "psx_psm"
+XSCTH_APP = "versal PSM Firmware"
+
+# XSCT version provides it's own toolchain, so can build in any environment
+COMPATIBLE_HOST:versal = "${HOST_SYS}"
+
+# Clear this for a Linux build, using the XSCT toolchain
+EXTRA_OEMAKE:linux = ""
+
+# Workaround for hardcoded toolchain items
+XSCT_PATH_ADD:append:elf = "\
+${UNPACKDIR}/bin:"
+
+MB_OBJCOPY = "mb-objcopy"
+
+do_compile:prepend:elf() {
+ mkdir -p ${UNPACKDIR}/bin
+ echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
+ echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
+ echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
+ echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc
+ chmod 0755 ${UNPACKDIR}/bin/mb-as
+ chmod 0755 ${UNPACKDIR}/bin/mb-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
+ chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
+}
+
+do_compile:append() {
+ ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
+}
+
+# xsctapp sets it's own do_install, replace it with the real one
+do_install() {
+ :
+}
+
+do_deploy() {
+ install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
+ install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
+}
diff --git a/recipes-bsp/embeddedsw/psm-firmware_2024.1.bbappend
b/recipes-bsp/embeddedsw/psm-firmware_2024.1.bbappend
index 61d42e6..3e9a109 100644
--- a/recipes-bsp/embeddedsw/psm-firmware_2024.1.bbappend
+++ b/recipes-bsp/embeddedsw/psm-firmware_2024.1.bbappend
@@ -1,58 +1 @@
-# Should not need any external patches
-SRC_URI = "${EMBEDDEDSW_SRCURI}"
-
-# We WANT to default to this version when available
-DEFAULT_PREFERENCE = "100"
-
-inherit xsctapp xsctyaml
-
-# This needs to match the value in psmfw.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-B = "${S}/${XSCTH_PROJ}"
-
-XSCTH_PROC_IP = "psv_psm"
-XSCTH_PROC_IP:versal-net = "psx_psm"
-XSCTH_APP = "versal PSM Firmware"
-
-# XSCT version provides it's own toolchain, so can build in any environment
-COMPATIBLE_HOST:versal = "${HOST_SYS}"
-
-# Clear this for a Linux build, using the XSCT toolchain
-EXTRA_OEMAKE:linux = ""
-
-# Workaround for hardcoded toolchain items
-XSCT_PATH_ADD:append:elf = "\
-${UNPACKDIR}/bin:"
-
-MB_OBJCOPY = "mb-objcopy"
-
-do_compile:prepend:elf() {
- mkdir -p ${UNPACKDIR}/bin
- echo "#! /bin/bash\n${CC} \$@" > ${UNPACKDIR}/bin/mb-gcc
- echo "#! /bin/bash\n${AS} \$@" > ${UNPACKDIR}/bin/mb-as
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-ar
- echo "#! /bin/bash\n${AR} \$@" > ${UNPACKDIR}/bin/mb-gcc-ar
- echo "#! /bin/bash\n${OBJCOPY} \$@" > ${UNPACKDIR}/bin/mb-objcopy
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc
- chmod 0755 ${UNPACKDIR}/bin/mb-as
- chmod 0755 ${UNPACKDIR}/bin/mb-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-gcc-ar
- chmod 0755 ${UNPACKDIR}/bin/mb-objcopy
-}
-
-do_compile:append() {
- ${MB_OBJCOPY} -O binary ${B}/${XSCTH_PROJ}/executable.elf
${B}/${XSCTH_PROJ}/executable.bin
-}
-
-# xsctapp sets it's own do_install, replace it with the real one
-do_install() {
- :
-}
-
-do_deploy() {
- install -Dm 0644 ${B}/${XSCTH_PROJ}/executable.elf
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.elf
- install -m 0644 ${B}/${XSCTH_PROJ}/executable.bin
${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin
${DEPLOYDIR}/${PSM_FIRMWARE_IMAGE_NAME}.bin
-}
+require ${@'psm-firmware_2024.1-xsct.inc' if d.getVar('XILINX_WITH_ESW') ==
'xsct' else ''}
diff --git a/recipes-bsp/embeddedsw/psmfw-xsct.inc
b/recipes-bsp/embeddedsw/psmfw-xsct.inc
new file mode 100644
index 0000000..88f8f2e
--- /dev/null
+++ b/recipes-bsp/embeddedsw/psmfw-xsct.inc
@@ -0,0 +1,11 @@
+# Whent his layer is included, we hard code how to build the firmware
+PSM_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '',
'psm-firmware:do_deploy', d)}"
+PSM_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'mc::versal-fw:psm-firmware:do_deploy', '', d)}"
+PSM_FIRMWARE_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
+
+# This needs to match the value in psm-firmware.bbappend
+PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
+
+# We can skip the check, as we will build this
+def check_psm_vars(d):
+ return
diff --git a/recipes-bsp/embeddedsw/psmfw.bbappend
b/recipes-bsp/embeddedsw/psmfw.bbappend
index 88f8f2e..fa7f40d 100644
--- a/recipes-bsp/embeddedsw/psmfw.bbappend
+++ b/recipes-bsp/embeddedsw/psmfw.bbappend
@@ -1,11 +1 @@
-# Whent his layer is included, we hard code how to build the firmware
-PSM_DEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw', '',
'psm-firmware:do_deploy', d)}"
-PSM_MCDEPENDS = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'mc::versal-fw:psm-firmware:do_deploy', '', d)}"
-PSM_FIRMWARE_DEPLOY_DIR = "${@bb.utils.contains('BBMULTICONFIG', 'versal-fw',
'${TOPDIR}/tmp-microblaze-versal-fw/deploy/images/${MACHINE}',
'${DEPLOY_DIR_IMAGE}', d)}"
-
-# This needs to match the value in psm-firmware.bbappend
-PSM_FIRMWARE_IMAGE_NAME = "psm-firmware-${MACHINE}"
-
-# We can skip the check, as we will build this
-def check_psm_vars(d):
- return
+require ${@'psmfw-xsct.inc' if d.getVar('XILINX_WITH_ESW') == 'xsct' else ''}
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#5410):
https://lists.yoctoproject.org/g/meta-xilinx/message/5410
Mute This Topic: https://lists.yoctoproject.org/mt/106610001/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-xilinx/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-