meta-xilinx: subtree update:757bac706c..bef2bf9b15
Alejandro Enedino Hernandez Samaniego (76):
libmali-xlnx: Use update-alternatives to switch between GL backends
libmali-xlnx: modify REQUIRED_DISTRO_FEATURES
libmali-xlnx: only use and install dependencies that the DISTRO supports
libmali-xlnx: fix x11 headers
libmali-xlnx: Dont provide KHR headers
libmali-xlnx: Change version on gbm.pc to be compatible with mesa
libmali-xlnx: modify version on egl.pc for compatibility
run-postinsts: Pass the output of the scripts run to kmsg
zynqmp-pmu.conf: Upgrade tune to use Microblaze v10.0
zynqmp-pmu.conf: Update to Microblaze v11.0
newlib: export CC_FOR_TARGET as CC
gcc-cross: Dont override EXTRA_OECONF unless DISTRO is xilinx-standalone
Adds MACHINE.conf containing default tune for Cortex R5
Adds MACHINE.conf containing default tune for Cortex A53
toolchain: Provide specific configuration for cross(-canadian) gcc and binutils
Adds MACHINE.conf containing default tune for Cortex A72
xilinx-standalone: switch override and append
xilinx-standalone: Add staticdev packages for newlib and libgloss to dependencies
xilinx-standalone: Reorganize toolchain configure options
toolchain: add cortex-A9 options for gcc and binutils
gcc-cross-microblazeel: disable multilib
gcc: Separate binutils options
gcc: Add multilib-list=aprofile configure option for cortex A9
gcc-runtime: Enable bulding libsdtc++ for baremetal applications
gcc-runtime: Set correct overrides now that the build has been fixed in oe-core
gcc-xilinx-standalone: Enable multilib builds for baremetal microblaze
gcc-microblaze: Remove multilib builds that arent working (m64)
meta-xilinx-standalone: Restructure layer properly, gcc and binutils belong on recipes-devtools
newlib: Keep version numbers on bbappends
meta-xilinx-standalone: Restructure layer properly, newlib belongs to recipes-bsp
gcc-runtime: Move gcc-runtime to GCCs directory
layer.conf: Include recipe files from a pattern with no directory required
Create machines that use SOC_FAMILY
Microblaze-pmu: Change overrides to reflect machine name changes from zynqmp-pmu to microblaze-pmu
cortexr5: Change overrides to reflect machine name changes from cortexr5 to zynqmp and versal variants
cortexa72: To keep up with a standard rename cortexa72 to add its SOC_FAMILY to its name
meta-xilinx-bsp: Unify machine confs
cortexr5-versal.conf: Include the tune inc file from the correct path
cortexr5-zynqmp.conf: Include the tune inc file from the correct path
tune-cortexrm: Include PACKAGE_EXTRA_ARCHS to avoid parsing errors
esw: first step to move everything into an embeddedsw class
pmufw: Install and hence package and strip the pmufw elf file
fix license and compatible host for now
pmufw: fix filename on elf file and fix task order to get stripped elf file deployed
libxil: add flow for a53 using dtg
device-tree.bbappend: add appent to support cortexa53 MACHINE
device-tree: switch to AUTOREV to keep up with the repo changes for now
zynqmp-fsbl: Sync flow with pmufw
libxil: fix device tree flags for a53
libxil: Fix DTB and DTG flow to make it more transparent for the user
Fix XILINX_RELEASE_VERSION
Increase layer priority
device-tree: the Flags used from device tree have to be set on the device tree recipe, not in the libxil one
esw.bbclass: Fix devtool and externalsrc flow
esw.bbclass: Install artifacts from the build directory vs WORKDIR
pmufw: Install artifacts from the build directory vs WORKDIR
esw.bbclass: Make it possible for packages to use the cmake ncurses gui
libxil: Unify flow and get DTB using the device-tree recipe instead of creating it manually
SOC_FAMILY: Change overrides
Microblaze-pmu: Change overrides to reflect machine name chanches from zynqmp-pmu to microblaze-pmu
device-tree: Install psu_init files as well
fsbl: avoid using underscore in the directory filename
meta-xilinx-standalone: Restructure layer properly, pmufw and fsbl belong on recipes-applications
meta-xilinx-standalone: device-tree belongs on recipes-bsp
meta-xilinx-standalone: Restructure layer properly, move existing libraries from decoupling to recipes-libraries
zynqmp-fsbl: Fix race condition on copy_psu_init
device-tree: Fix install directory
meta-xilinx-standalone: clean up layer
libraries: Add inherit on python3native on libraries that were invoking nativepython3
meta-xilinx: Include templates for local.conf and bblayers.conf
esw: fix machines that have been renamed
libgloss: Dont install libgloss as libxil since we actually have libxil
esw: Switch release version to 2020.1
xilinx-standalone: Add buildhistory to the DISTRO to avoid cooker errors
device-tree: Override repo for supported machines
system-zcu102: Create heterogeneous machine configuration for ZCU102 evaluation board.
Anirudha Sarangi (4):
meta-xilinx-standalone: conf: distro: Add new distro for freertos
meta-xilinx-standalone: classes: Update CMAKE_SYSTEM_NAME for Freertos
meta-xilinx-standalone: recipes-libraries: Add recipe for freertos
meta-xilinx-standalone: recipes-applications: freertos-hello-world: Add recipe for freertos hello world
Appana Durga Kedareswara rao (82):
libxil: Add recipes for libxil and xilstandalone
pmufw: recipes for pmufw app generation in decoupled flow
Add recipes for xilffs and xilpm libraries
Add recipes for building zynqmp fsbl application
meta-xilinx-standalone: Add support for PLM and dependent library recipes
zynqmp-fsbl: Copy psu_init files to source code
meta-xilinx: meta-xilinx-standalone: Update source url path
meta-xilinx: meta-xilinx-standalone: comment flto flags by default
meta-xilinx-standalone: Using S instead of WORKDIR
meta-xilinx-standalone: classes: Add bbclass for building esw examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling csudma driver examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling emacps driver examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axiethernet driver examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axicdma driver examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling axidma driver examples
meta-xilinx-standalone: recipes-drivers: Add recipe for compiling llfifo driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mcdma driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling zdma driver examples
meta-xilinx-standalone: recipes-applications: Add recipe for compiling hello world application
meta-xilinx-standalone: classes: Update md5 checksum as per latest license
meta-xilinx-standalone: Add support for cortexa72 processor
meta-xilinx-standalone: recipes-libraries: xilstandalone: Cleanup the recipe
meta-xilinx-standalone: recipes-libraries: libxil: Cleanup the recipe
meta-xilinx-standalone: classes: cleanup the class
meta-xilinx-standalone: recipes-applications: hello-world: Remove dependency on esw_examples class
meta-xilinx-standalone: recipes-libraries: Add recipe for xilmailbox
cortexa72: Update cortexa72 machine variable naming
meta-xilinx: Add support for cortexr5 processor
meta-xilinx-standalone: Add dependencies on python3-dtc-native
meta-xilinx-standalone: recipes-libraries: xiltimer: Add task for generating cmake meta-data
meta-xilinx-standalone: recipes-libraries: lwip: Add recipe for lwip
meta-xilinx-standalone: recipes-applications: lwip-echo-server: Add recipe for compiling lwip echo server application
meta-xilinx-standalone: Add support for versal cortexr5 processor
meta-xilinx-standalone: recipes-applications: lwip-tcp-perf-client: Add recipe for compiling lwip tcp perf client application
meta-xilinx-standalone: recipes-applications: lwip-tcp-perf-server: Add recipe for compiling lwip tcp perf server application
meta-xilinx-standalone: recipes-applications: lwip-udp-perf-server: Add recipe for compiling lwip udp perf server application
meta-xilinx-standalone: recipes-applications: lwip-udp-perf-client: Add recipe for compiling lwip udp perf client application
meta-xilinx-standalone: recipes-applications: freertos-lwip-echo-server: Add recipe for compiling freertos lwip echo server application
meta-xilinx-standalone: recipes-applications: freertos-lwip-tcp-perf-client: Add recipe for compiling freertos lwip tcp perf client application
meta-xilinx-standalone: recipes-applications: freertos-lwip-tcp-perf-server: Add recipe for compiling freertos lwip tcp perf server application
meta-xilinx-standalone: recipes-applications: freertos-lwip-udp-perf-client: Add recipe for compiling freertos lwip udp perf client application
meta-xilinx-standalone: recipes-applications: freertos-lwip-udp-perf-server: Add recipe for compiling freertos lwip udp perf server application
meta-xilinx-standalone: recipes-libraries: Update depends list for socket mode
meta-xilinx-standalone: recipes-libraries: Add recipe for xilpuf
meta-xilinx-standalone: recipes-libraries: Fix workarounds
meta-xilinx-standalone: recipes-libraries: xilloader: Update depends list
meta-xilinx-standalone: recipes-applications: freertos-hello-world: Fix do_deploy elf variable name
meta-xilinx-standalone: classes: esw: Remove unneeded DISTRO check
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling dmaps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling usbpsu driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling axivdma driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling emaclite driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling xxvethernet driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling scugic driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ttcps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling tmrctr driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling qspipsu driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ospipsv driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling resetps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling clockps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling canfd driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling canps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling can driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling wdtps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling rtcpsu driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling gpiops driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling sdps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling ipipsu driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling nandpsu driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling devcfg driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mbox driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling mutex driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling uartlite driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling uartps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling gpio driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling spips driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling qspips driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling xadcps driver examples
meta-xilinx-standalone: recipe-drivers: Add recipe for compiling sysmon driver examples
device-tree: Install psu_init files as well for zynqmp machines
meta-xilinx-standalone: recipes-applications: zynqmp-fsbl: Correct cflags based on the machine type
meta-xilinx-standalone: recipes-bsp: device-tree: Install psu_init* files only for standalone configuration
Bruce Ashfield (1):
linux-xlnx: cleanup and make yocto-kernel-cache available
Himanshu Choudhary (8):
xrt_git:zocl_git: added package_class for generating rpm
zocl_git: added post install script
xrt_git: added veral flags and dependencies
xrt_git:zocl_git: license and PV update from meta-xilinx-internal
xrt,zocl:Update commit id for 2020.1 release
xrt_git:zocl_git: updated commitid > CR-1063204
xrt_git:zocl_git: update commitid for 2020.1 release
xrt_git:zocl_git: update commitid for 2020.1 release
Jaewon Lee (28):
Update recipes for 2019.2 release
u-boot-zynq-scr: reworking boot.scr recipe to work for zynq and zynqmp
u-boot-zynq-scr: Setting sd as default bootmode for versal
zynq/zynqmp confs: Adding boot.scr to IMAGE_BOOT_FILES
bootgen_1.0.bb: Adding initial bootgen recipe to build bootgen
flashstrip utility: Build and ship flash strip utility needed for qemu
machine-xilinx-default.inc: Adding required dependencies to image_wic
**TEMPORARY**: Removing preferred provider overrides for mali backend
meson: Adding patch to add microblaze as supported CPU
glibc-locale_%.bbappend: Fix directory installed but not shipped issue
Revert "**TEMPORARY**: Removing preferred provider overrides for mali backend"
arm-trusted-firmware.inc: Changing generic DEBUG to DEBUG_ATF
gcc-cross-canadian_%.bbappend:temporary hack to build gcc cross canadian
gcc-source: Adding microblaze patch to fix compiler crash with -freg-struct-return
newlib: Adding xilinx specific patches on top of newlib/libgloss 3.1.0
cortexa*.conf: Change arch-armv8.inc to arch-armv8a.inc
gdb: Switching microblaze to use upstream gdb version 8.3.1
microblaze gdb/binutils: Adding necessary patches for microblaze
Using tune-cortexa72-cortexa53.inc for versal and zynqmp tunes
qemu-system-aarch64-multiarch: Adding comment for future fix
xilinx-standalone.conf: Adding qemu to TOOLCHAIN_HOST_TASK
arm-trusted-firmware.inc: installing elf with standard name
u-boot-xlnx:Updating defconfig for all zynq machines
Correcting ':' placement for appending file paths
Add older version of OpenCV 3.4.3
opencv_3.4.3.bb: Removing tiny-dnn from SRC_URI
versal confs: Upping RAM in runqemu command to 8G for versal boards
versal confs: cleaning up unnecessary file loading in runqemu command
Jean-Francois Dagenais (3):
libmali-xlnx: clean and fix FILESXTRAPATHS
libmali-xlnx: make version recognizable
kernel-module-mali: add patch to check dma_map_page error
Jeegar Patel (1):
kernel-module-vcu.bb : Autoload dmaproxy module on boot
Madhurkiran Harikrishnan (14):
libmali-xlnx: MALI will not provide wayland-egl
libmali-xlnx.bb: ABIs are made consistent for all backends
libmali-xlnx: Squash all monolithic library name into a variable
libmali-xlnx: Upgrade the userspace driver to r9p0
kernel-module-mali: Upgrade the kernel space driver to r9p0
weston: Migrate ZynqMP specific patches for weston to meta-xilinx
weston: Remove opaque substitute for ARGB8888 as ZynqMP DP does not support
kernel-module-mali: Make the driver compatible with kernel 5.4
Revert "libmali-xlnx: Dont provide KHR headers"
mesa: Do not provide KHR headers
cairo: For ZynqMP enable glesv2 packageconfig
libglu: Add build time dependency on glesv2 for zynqmp
xf86-video-armsoc: Bypass the exa layer to free the root pixmap
libmali: Fetch mali binaries from rel-v2020.1 branch
Manjukumar Matha (17):
libmali-xlnx: upgrade MALI recipe for 2019.2
xrt_git.bb: Fix xrt recipe for externalsrc
zocl_git.bb: Update the S path for zocl
kernel-module-hdmi_git.bb: New Yocto recipe for Xilinx HDMI drivers
machine-xilinx-default.inc: Add qemu-xilinx-helper-native as preferred provider
zynq-generic.conf: Add qemu wiring to generic conf
meta-xilinx-pynq: Add layer to support PYNQ
image-types-xilinx-qemu.bbclass: Add sector size as 512K
ultra96-zynqmp.conf: Add support for Ultra96 evaluation board
linux-firmware_git.bbappend: Add hook for wl18xx and bts file
vc-p-a2197-00-versal.conf:Add versal Tenzing +SE1 board configuration
kc705-microblaze: Update u-boot patch for kc705
layer.conf: Update XILINX_RELEASE_VERSION to v2020.1
libgpg-error: Add microblaze platform specific gpg-error.h file
qemu-xilinx-native: Enable packageconfig option for libgcrypt
qemu-xilinx.inc: Remove stale packageconfig options
qemu-xilinx.inc: Configure qemu-xilinx with gcrypt
Mark Hatle (82):
binutils/gcc: Refactor the oeconf
Revert "binutils/gcc: Refactor the oeconf"
gcc-runtime: Make the baremetal changes specific to class-target
binutils/gcc: Refactor the oeconf
gcc: Remove cortexa53 errata fixes
binutils: Merge latest binutils work
Revert "gcc-microblaze: Remove multilib builds that arent working (m64)"
gcc-cross-canadian: Fix issue being unable to find stdio.h
Enable multilib baremetal toolchains
gcc-runtime: Fix C++ multilib headers
Limit multilib toolchains to symlinks to the main toolchain
Create new baremetal toolchain machines
Fix arm cortex r/m profiles
microblaze-tc: Minor update and corrections
Adjust the microblaze standalone toolchain to match vitis expectations.
newlib: Adjust configuration for standalone to allow BSP library
qemu-xilinx: Point to master branch by default
distro/xilinx-standalone: Make LTO optional
distr/xilinx-standalone: Switch default optimization from ESW to Distro
cortex-r5: Add cortexr5f configuration
xilinx-standalone: When building for cortexr5, add -DARMR5 for CCARGS
newlib: Move microblaze support
newlib: Cleanup and merge the two newlib bbappends into a single append
python3-dtc: Add python3 dtc module
Ensure that bbappends do not affect task hashes
xlnx-compatible-os.bbclass: Class to allow recipes to list OS compatibility
Remove hardcoded XILINX_RELEASE_VERSION in recipes
meta-xilinx-standalone: Add dependencies on python3-dtc
meta-xilinx-standalone/device-tree: remove duplicate internal references
lopper: Add lopper utility
xilinx-standalone: sync distros
xilinx-standalone.inc: Replace qemu dependency with mingw32 specific recipe
lopper: Add runtime dependency of python3-dtc
cortexa53-zynqmp/cortexa72-versal: Fix cortex based BSPs
README.md: revise README.md based
README.md: Add information about the new embeddedsw support
microblaze_dtb.py: Convert a dtb to one or more microblaze TUNE_FEATURES
linux-xlnx: Use new default defconfigs
meta-xilinx-bsp: Rename soc configuration masquerading as a tune file
meta-xilinx-bsp: Remove default values
machine-xilinx-overrides: Make this generic
meta-xilinx-bsp: Update recipes to use SOC_FAMILY_ARCH and SOC_VARIANT_ARCH
meta-xilinx-bsp: rename machine-xilinx-override to xilinx-soc-family.inc
meta-xilinx-standalone: Move soc overrides from meta-xilinx-default
meta-xilinx-bsp: Adjust soc to permit multiple CPU/TUNES
libmali-xlnx: Remove virtual provides
meta-xilinx-bsp: remove redundant PREFERRED_PROVIDER
Revert "libmali-xlnx: Remove virtual provides"
meta-xilinx-bsp: machine-xilinx-default.inc allow empty WIC_DEPENDS
microblaze_dtb.py: Move to scripts subdir
zc706-zynq7: Add qemu wiring for zc706 machine
qemu-zynq7: Add qemu wiring for zc706 machine
meta-xilinx-bsp: cleanup qemu references
xilinx-qemu: Move -multiarch extension to the machine-xilinx-qemu
*-generic.conf: Add QEMU support to each of the generic BSPs
versal-generic: Move from vck190 to vc-p-a2197-00-versal
esw.bbclass: Adjust get_xlnx_cmake_process to use both tune and machine
Revise COMPATIBLE_MACHINE settings
esw.bbclass: Move DTBFILE to a single definition
xilinx-standalone.conf: Add workaround for microblaze -Os bug
Revert "linux-xlnx: Use new default defconfigs"
qemu-xilinx.inc: Move the URL to 'gitsm' and disable compile time submodules
esw.bbclass: Only work with xilinx-standalone distro
Rename plm_git.bb to plm-standalong_git.bb
meta-xilinx-standalone esw.bbclass: Allow SRCREV and SRC_URI to be overwritten
esw.bbclass: Change 'or' to 'and' to verify EXTERNALSRC is defined
Revert "xlnx-compatible-os.bbclass: Class to allow recipes to list OS compatibility"
Define COMPATIBLE_HOST to prevent mix of Linux and Baremetal recipes
device-tree.bbappend: Move to COMPATIBLE_HOST
machines: Move from SERIAL_CONSOLE (deprecated) to SERIAL_CONSOLES
machines: Move from SERIAL_CONSOLE (deprecated) to SERIAL_CONSOLES
machines: Allow the user to override SERIAL_CONSOLES
machines: Remove default SERIAL_CONSOLES_CHECK
machines: Allow user to override SERIAL_CONSOLE
microblaze machines: Set LINKER_HASH_STYLE defaults
kernel-module-mali: WIP
libcma: Fix SRC_URI definition
binutils: Microblaze integrate fix from upstream
init-ifupdown: Fix BSPs that were setting partial overrides
zynq-generic.conf: Remove the qemu overrides, not needed
meta-xilinx-standalone gcc: Fix microblaze crtend.o
lopper: Fix python3 reference in lopper_sanity.py
Min Ma (1):
xrt_git.bb: update XRT dependency
Mubin Usman Sayyed (3):
meta-xilinx-bsp: conf: machine: Add standalone based machine for zynq
meta-xilinx-standalone: Add support for zynq
meta-xilinx-standalone: classes: esw: Update ESW_CFLAGS with spec file
Mukund PVVN (3):
zcu1275-zynqmp.conf: Rename zc1275 to zcu1275
zcu1285-zynqmp.conf: Update UBOOT_MACHINE
v350-versal.conf:Add versal board configuration
Peter Ogden (1):
python3-pynq.bb: Update PYNQ to 2.5.1
Sai Hari Chandana Kalluri (54):
u-boot-xlnx_2019.2.bb: Rename zc1275 to zcu1275 board name
ultra96-zynqmp.conf: Include mipi as MACHINE_FEATURE
linux-xlnx.inc: Add MIPI kernel configuration for Ultra96
pynq-ultra96-*: Add Ultra96 specific pynq example demo:
vck-sc-zynqmp: Machine configuration for vck190 system controller
v350-versal.conf: Enforce system.dtb name when using virtual/dtb
vmk180-versal.conf: Add machine configuration for vmk180-versal
tune-versal.inc: Set default SOC_VARIANT = s80
arm-trusted-firmware_2019.2.bbappend: Update compilation flag
u-boot-xlnx: Add the platform init file for zcu216-zynqmp
plm_2019.2.bb: recipe to build plm standalone
psm-firmware_2019.2.bb: Create psm-firmware recipe for standalone build
versal-mb.conf: Add machine configuration to support standalone build for versal components like plm, psm-firmware
vck190-versal.conf: Add deploy dir for psm and plm firmware
tune-versal.inc: Rename include file from arch-armv8 to arch-armv8a
Move recipes to use _%.bb instead of version
qemu-*: Upgrade QEMU version 2.11 -> 4.1.5
Upgrade recipes to 2020.1
libmali-xlnx: Provide single shlib provider for libMali.so.9
"**TEMPORARY**" linux-xlnx.inc: Trim PV variable expansion
Revert "Revert "**TEMPORARY**: Removing preferred provider overrides for mali backend""
versal-generic: Add versal-generic machine configuration
Revert "**TEMPORARY**: Removing preferred provider overrides for mali backend"""
qemu-xilinx*: Enable qemu-xilinx-native as PROVIDER for qemu-native
u-boot-zyqn-scr.bb: Update DEVICETREE and KERNEL LOAD ADDRESS for zynqmp machines
u-boot-xlnx:Update UBOOT-MACHINE to xilinx_zynqmp_virt_defconfig for all zynqmp machines
qemu-xilinx: Enable qemu-xilinx to provide nativesdk-qemu
zedboard-zynq7.conf:update u-boot binary name
qemu-system-aarch64-multiarch: Update the binpath for qemu targets
zcu102-zynqmp.conf: Modify PMU_FIRMWARE_DEPLOY_DIR and PMU_FIRMWARE_IMAGE_NAME
Update KERNEL_VERSION to 5.4
zcu102-zynqmp.conf: Pass dtb and dtb load address as QB_OPT args for qemuboot
Enable kernel configurations for viruatlization distro feature
zc702-zynq7: Add qemu wiring for zc702 machine
qemu-xilinx-multiarch-helper-native_1.0.bb: Move multiarch wrapper script to bindir
qemuboot-xilinx.bbclass: Remove the subdir added to the qemu target path
external-hdf.bbappend: move to meta-xilinx-tools layer
xrt: Remove references to PACKAGE_CLASSES from xrt recipes
kernel-module-hdmi: Update LICENSE_CHECKSUM for kenrel-module-hdmi
xilinx-kmeta: Upstream xen and ocicontainer configs to YP kernel-cache
Update commit ids for 2020.1 release
arm-trusted-firmware.inc: Update package version
Update commit ids for 2020.1 release
lopper: Update commit id for 2020.1 release
layer.conf: Set layer compat to dunfell & gatesgarth
qemu-xilinx-native.inc: Fix the patch file names for dunfell Fix patch file names for dunfell
libmali-xlnx: Inherit features_check instead of distro_features_check
gcc-9*: Upgrade gcc from 9.2->10.1
libgloss, newlib: Upgrade version from 3.1 -> 3.3
meson_%.bbappend: Remove bbappend from layer
qemu-xilinx.inc: Add patch to enable/disbable libudev in qemu configure
python3-dtc_1.5.1.bb: Explicitly set the path to run make during configure
qemu-devicetrees: Use python3 instead of python
u-boot-xlnx.inc: Explicitly set builddir path
Sandeep Gundlupet Raju (2):
conf/machine/kc705-microbalzeel.conf: Fix U-boot defconfig
local.conf.sample: Updating XILINX_VER_MAIN
Swagath Gadde (4):
u-boot-zynq-scr: Add pxeboot support in u-boot-scr
zcu216-zynqmp: Add support for zcu216 board
u-boot-zynq-scr:Add initrd label to pxe config
zcu208-zynqmp: Add support for zcu208 board
Varalaxmi Bingi (4):
Update XILINX_RELEASE_VERSION to v2020.1
zcu1285-zynqmp.conf:using common u-boot defconfig
u-boot-xlnx.inc:u-boot-xlnx_2020.1.bb: kc705 patch
removing kc705 patch
Vishal Sagar (3):
kernel-module-hdmi_git.bb: Add versal support
kernel-module-hdmi: Update for 2020.1 release
kernel-module-hdmi: Update commit id and license md5sum for 2020.1
ch vamshi krishna (1):
xrt_git.bb: Add icd support for edge platforms
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I71ace4a7992c023b84c864abd45e634b5e48f751
diff --git a/meta-xilinx/meta-xilinx-standalone/README.md b/meta-xilinx/meta-xilinx-standalone/README.md
index c7bdeb6..50ac9ad 100644
--- a/meta-xilinx/meta-xilinx-standalone/README.md
+++ b/meta-xilinx/meta-xilinx-standalone/README.md
@@ -1,21 +1,28 @@
meta-xilinx-standalone
======================
-This layer is meant to augment Yocto/OE functionality to provide a Baremetal/Standalone Toolchain.
+This layer is meant to augment Yocto/OE functionality to provide a
+Baremetal/Standalone Toolchain as well as the foundation for building
+the embeddedsw components that enable non-Linux software required for
+Xilinx based FPGA/SOCs.
+
+Note, the non-Linux software components are still in development and
+this should be considered to be a preview release only. For instance,
+some components may not be buildable, expect APIs to change on various
+parts and pieces.
Maintainers, Mailing list, Patches
==================================
-Please send any patches, pull requests, comments or questions for this layer to
-the [meta-xilinx mailing list](https://lists.yoctoproject.org/listinfo/meta-xilinx):
+Please send any patches, pull requests, comments or questions for this
+layer to the [meta-xilinx mailing list]
+(https://lists.yoctoproject.org/listinfo/meta-xilinx):
meta-xilinx@lists.yoctoproject.org
Maintainers:
- Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
- Manjukumar Harthikote Matha <manjukumar.harthikote-matha@xilinx.com>
Sai Hari Chandana Kalluri <chandana.kalluri@xilinx.com>
Mark Hatle <mark.hatle@xilinx.com>
@@ -37,13 +44,12 @@
3.- Add this layer to BBLAYERS on conf/bblayers.conf
-4.- Add the following to your conf/local.conf to build for the microblaze architecture:
+4.- Add the following to your conf/local.conf to build for the
+microblaze architecture:
DISTRO="xilinx-standalone"
-MACHINE="zynqmp-pmu"
-
-GCCVERSION="7.%"
+MACHINE="microblaze-pmu"
5.- Build a package:
diff --git a/meta-xilinx/meta-xilinx-standalone/classes/esw.bbclass b/meta-xilinx/meta-xilinx-standalone/classes/esw.bbclass
new file mode 100644
index 0000000..c500149
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/classes/esw.bbclass
@@ -0,0 +1,107 @@
+inherit pkgconfig cmake
+
+LICENSE = "Proprietary"
+LICFILENAME = "license.txt"
+LIC_FILES_CHKSUM = "file://${S}/${LICFILENAME};md5=39ab6ab638f4d1836ba994ec6852de94"
+
+# We should move to an actual SRCREV eventually
+include conf/xilinx/esw-srcrev.inc
+
+EMBEDDEDSW_SRCREV ?= "${AUTOREV}"
+SRCREV = "${EMBEDDEDSW_SRCREV}"
+PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
+EMBEDDEDSW_REPO ?= "git://github.com/xilinx/embeddedsw.git;protocol=https"
+EMBEDDEDSW_BRANCH ?= "master"
+SRC_URI = "${EMBEDDEDSW_REPO};branch=${EMBEDDEDSW_BRANCH}"
+
+SRCREV_FORMAT = "src_decouple"
+
+S = "${WORKDIR}/git/"
+B = "${WORKDIR}/build/"
+OECMAKE_SOURCEPATH = "${S}/${ESW_COMPONENT_SRC}"
+
+SPECFILE_PATH_arm = "${S}/scripts/specs/arm/Xilinx.spec"
+SPECFILE_PATH_aarch64 = "${S}/scripts/specs/arm/Xilinx.spec"
+SPECFILE_PATH_microblaze = "${S}/scripts/specs/microblaze/Xilinx.spec"
+
+ESW_CFLAGS += "-specs=${SPECFILE_PATH}"
+
+inherit ccmake
+
+COMPATIBLE_HOST = ".*-elf"
+COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi"
+
+DTBFILE ?= "${RECIPE_SYSROOT}/boot/devicetree/system-top.dtb"
+
+def get_xlnx_cmake_machine(fam, d):
+ cmake_machine = fam
+ if (fam == 'zynqmp'):
+ cmake_machine = 'ZynqMP'
+ elif (fam == 'versal'):
+ cmake_machine = 'Versal'
+ elif (fam == 'zynq'):
+ cmake_machine = 'Zynq'
+ return cmake_machine
+
+def get_xlnx_cmake_processor(tune, machine, d):
+ cmake_processor = tune
+ if tune.startswith('microblaze'):
+ if (machine == 'microblaze-pmu'):
+ cmake_processor = 'pmu_microblaze'
+ elif (machine == 'microblaze-plm'):
+ cmake_processor = 'plm_microblaze'
+ else:
+ cmake_processor = 'microblaze'
+ elif (tune in [ 'cortexr5', 'cortexr5f' ]):
+ cmake_processor = 'cortexr5'
+ elif tune.startswith('cortexa9'):
+ cmake_processor = 'cortexa9'
+ elif (tune in [ 'cortexa53', 'cortexa72-cortexa53' ]):
+ cmake_processor = 'cortexa53'
+ elif tune == 'cortexa72':
+ cmake_processor = 'cortexa72'
+ return cmake_processor
+
+XLNX_CMAKE_MACHINE = "${@get_xlnx_cmake_machine(d.getVar('SOC_FAMILY'), d)}"
+XLNX_CMAKE_PROCESSOR = "${@get_xlnx_cmake_processor(d.getVar('DEFAULTTUNE'), d.getVar('MACHINE'), d)}"
+XLNX_CMAKE_SYSTEM_NAME ?= "Generic"
+
+cmake_do_generate_toolchain_file_append() {
+ cat >> ${WORKDIR}/toolchain.cmake <<EOF
+ include(CMakeForceCompiler)
+ CMAKE_FORCE_C_COMPILER("${OECMAKE_C_COMPILER}" GNU)
+ CMAKE_FORCE_CXX_COMPILER("${OECMAKE_CXX_COMPILER}" GNU)
+ set( CMAKE_SYSTEM_PROCESSOR "${XLNX_CMAKE_PROCESSOR}" )
+ set( CMAKE_MACHINE "${XLNX_CMAKE_MACHINE}" )
+ # Will need this in the future to make cmake understand esw variables
+ # set( CMAKE_SYSTEM_NAME `echo elf | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` )
+ set( CMAKE_SYSTEM_NAME "${XLNX_CMAKE_SYSTEM_NAME}" )
+EOF
+}
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ install -m 0755 ${B}/${ESW_COMPONENT_NAME} ${D}${libdir}
+ install -m 0644 ${B}/include/*.h ${D}${includedir}
+}
+
+CFLAGS_append = " ${ESW_CFLAGS}"
+
+# We need to find the license file, which vaires depending on the component
+# recurse a maximum of x times, could be fancier but it gets complicated since
+# we dont know for certain we are running devtool or just externalsrc
+python(){
+ import os.path
+ if bb.data.inherits_class('externalsrc', d) and d.getVar('EXTERNALSRC'):
+ externalsrc = d.getVar('EXTERNALSRC')
+ lic_file = d.getVar('LIC_FILES_CHKSUM', False)
+ licpath=externalsrc
+ for i in range(5):
+ if os.path.isfile(licpath + '/' + d.getVar('LICFILENAME',True)):
+ lic_file = lic_file.replace('${S}',licpath)
+ d.setVar('LIC_FILES_CHKSUM', lic_file)
+ return
+ licpath=os.path.dirname(licpath)
+ bb.error("Couldn't find license file: %s, within directory %s or his parent directories" % (d.getVar('LICFILENAME',True), externalsrc))
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/classes/esw_examples.bbclass b/meta-xilinx/meta-xilinx-standalone/classes/esw_examples.bbclass
new file mode 100644
index 0000000..391f388
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/classes/esw_examples.bbclass
@@ -0,0 +1,27 @@
+inherit esw deploy python3native
+
+DEPENDS += "dtc-native python3-dtc-native python3-pyyaml-native xilstandalone libxil xiltimer device-tree"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_eglist () {
+ cd ${S}
+ nativepython3 ${S}/scripts/example.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask generate_eglist before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ install -m 0755 ${B}/*.elf ${D}/${base_libdir}/firmware
+}
+
+do_deploy() {
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/*.elf ${DEPLOYDIR}/
+}
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/*.elf"
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-freertos.conf b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-freertos.conf
new file mode 100644
index 0000000..cba5fd9
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-freertos.conf
@@ -0,0 +1,9 @@
+require conf/distro/xilinx-standalone.inc
+
+DISTRO_NAME_append = " (freertos)"
+
+XLNX_CMAKE_SYSTEM_NAME = "FreeRTOS"
+
+# We need to pass FREERTOS_BSP compliler flag it is consumed
+# esw components.
+ESW_CFLAGS += " -DFREERTOS_BSP"
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone-nolto.conf b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone-nolto.conf
new file mode 100644
index 0000000..315f555
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone-nolto.conf
@@ -0,0 +1 @@
+require conf/distro/xilinx-standalone.inc
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.conf b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.conf
index 7cd23cc..8f53e99 100644
--- a/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.conf
+++ b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.conf
@@ -1,13 +1,14 @@
-DISTRO = "xilinx-standalone"
-DISTRO_NAME = "Xilinx Standalone Distro"
-DISTRO_VERSION = "1.0"
-TARGET_VENDOR = "-xilinx"
+require conf/distro/xilinx-standalone.inc
-TCLIBC = "newlib"
-TCLIBCAPPEND =""
+DISTRO_NAME_append = " (lto)"
-# Change SDK name
-SDK_VERSION = "xilinx-standalone"
+# By default we want to optimize for size.
+FULL_OPTIMIZATION = "-Os -pipe ${DEBUG_FLAGS}"
-require conf/distro/include/yocto-uninative.inc
-INHERIT += "uninative"
+# Workaround for microblaze -Os bug
+FULL_OPTIMIZATION_microblaze = "-O2 -pipe ${DEBUG_FLAGS}"
+
+# We also need to use Link Time Optimization for many items, make this the
+# default.
+ESW_CFLAGS += " -flto -ffat-lto-objects"
+
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc
new file mode 100644
index 0000000..5c8ae67
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc
@@ -0,0 +1,47 @@
+DISTRO_NAME = "Xilinx Standalone Distro"
+DISTRO_VERSION = "1.0"
+TARGET_VENDOR = "-xilinx"
+
+# Make sure any users get the xilinx-standalone distro override
+DISTROOVERRIDES_prepend = "${@'xilinx-standalone:' if d.getVar('DISTRO') != "xilinx-standalone" else ''}"
+
+TCLIBC = "newlib"
+TCLIBCAPPEND =""
+
+# Change SDK name
+SDK_VERSION = "xilinx-standalone"
+
+require conf/distro/include/yocto-uninative.inc
+INHERIT += "uninative"
+
+# Hold this until it gets merged in core, we need libc.a and libgloss.a for cross-canadian
+LIBC_DEPENDENCIES_append = " newlib-staticdev libgloss-staticdev"
+
+ESW_CFLAGS ?= ""
+
+INHERIT += "buildhistory"
+
+# Cortex R5 requires an additional cflag to be passed for compatibility with the embeddedsw
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr5', ' -DARMR5', '', d)}"
+
+# Make sure all regular recipes are excluded from compatibility
+# Avoid using this for native, nativesdk or cross recipes
+COMPATOS = ""
+# Set the regex for target recipes only, follow TARGET_OS default
+COMPATOS_class-target = ".*-linux${LIBCEXTENSION}${ABIEXTENSION}"
+COMPATIBLE_HOST ?= "${COMPATOS}"
+
+# Clear defaults
+DISTRO_FEATURES_BACKFILL_xilinx-standalone = ""
+VIRTUAL-RUNTIME_init_manager_xilinx-standalone = ""
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"
+
+# Hold this until it gets merged in core, we need libc.a and libgloss.a for cross-canadian
+LIBC_DEPENDENCIES_append = " newlib-staticdev libgloss-staticdev"
+
+# No cached configsite files
+TOOLCHAIN_NEED_CONFIGSITE_CACHE = ""
+
+# Workaround for pulling in nativesdk-mingw-w64-winpthreads
+TOOLCHAIN_HOST_TASK_append_sdkmingw32 = " nativesdk-mingw-w64-winpthreads"
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/layer.conf b/meta-xilinx/meta-xilinx-standalone/conf/layer.conf
index 16bfb74..223059a 100644
--- a/meta-xilinx/meta-xilinx-standalone/conf/layer.conf
+++ b/meta-xilinx/meta-xilinx-standalone/conf/layer.conf
@@ -3,12 +3,16 @@
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
+ ${LAYERDIR}/recipes-*/*/*.bbappend \
+ ${LAYERDIR}/recipes-*/*.bb \
+ ${LAYERDIR}/recipes-*/*.bbappend \
+ "
BBFILE_COLLECTIONS += "xilinx-standalone"
BBFILE_PATTERN_xilinx-standalone = "^${LAYERDIR}/"
-BBFILE_PRIORITY_xilinx-standalone = "5"
+BBFILE_PRIORITY_xilinx-standalone = "7"
LAYERDEPENDS_xilinx-standalone = "core xilinx"
-LAYERSERIES_COMPAT_xilinx-standalone = "warrior"
+LAYERSERIES_COMPAT_xilinx-standalone = "dunfell gatesgarth"
+XILINX_RELEASE_VERSION = "v2020.1"
diff --git a/meta-xilinx/meta-xilinx-standalone/conf/machine/zynqmp-pmu.conf b/meta-xilinx/meta-xilinx-standalone/conf/machine/zynqmp-pmu.conf
deleted file mode 100644
index 2f692db..0000000
--- a/meta-xilinx/meta-xilinx-standalone/conf/machine/zynqmp-pmu.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFAULTTUNE ?= "microblaze"
-
-require conf/machine/include/microblaze/arch-microblaze.inc
-
-# Endianess, multiplier, barrel shift, pattern compare, floating point double or single, are the possibilities
-AVAILTUNES += "microblaze"
-TUNE_FEATURES_tune-microblaze = "microblaze v9.2 barrel-shift pattern-compare"
-PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
-SOC_FAMILY = "zynqmp"
-
-TARGET_LINK_HASH_STYLE_microblaze = ""
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-hello-world/freertos-hello-world_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-hello-world/freertos-hello-world_git.bb
new file mode 100644
index 0000000..9b5bb11
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-hello-world/freertos-hello-world_git.bb
@@ -0,0 +1,33 @@
+inherit esw deploy
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_hello_world/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil xilstandalone xiltimer freertos10-xilinx device-tree"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_hello_world* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_HELLO_WORLD_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_HELLO_WORLD_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_hello_world.elf ${DEPLOYDIR}/${FREERTOS_HELLO_WORLD_BASE_NAME}.elf
+ ln -sf ${FREERTOS_HELLO_WORLD_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_hello_world.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_hello_world.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_hello_world.bin ${DEPLOYDIR}/${FREERTOS_HELLO_WORLD_BASE_NAME}.bin
+ ln -sf ${FREERTOS_HELLO_WORLD_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_hello_world*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-echo-server/freertos-lwip-echo-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-echo-server/freertos-lwip-echo-server_git.bb
new file mode 100644
index 0000000..ebfc85a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-echo-server/freertos-lwip-echo-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_lwip_echo_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native freertos10-xilinx"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_lwip_echo* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_LWIP_ECHO_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_LWIP_ECHO_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_echo_server.elf ${DEPLOYDIR}/${FREERTOS_LWIP_ECHO_BASE_NAME}.elf
+ ln -sf ${FREERTOS_LWIP_ECHO_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_echo_server.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_echo_server.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_echo_server.bin ${DEPLOYDIR}/${FREERTOS_LWIP_ECHO_BASE_NAME}.bin
+ ln -sf ${FREERTOS_LWIP_ECHO_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_lwip_echo*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-client/freertos-lwip-tcp-perf-client_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-client/freertos-lwip-tcp-perf-client_git.bb
new file mode 100644
index 0000000..eb199d3
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-client/freertos-lwip-tcp-perf-client_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_lwip_tcp_perf_client/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native freertos10-xilinx"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_lwip_tcp_perf_client* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_client.elf ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_client.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_client.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_client.bin ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_lwip_tcp_perf_client*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-server/freertos-lwip-tcp-perf-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-server/freertos-lwip-tcp-perf-server_git.bb
new file mode 100644
index 0000000..c228259
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-tcp-perf-server/freertos-lwip-tcp-perf-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_lwip_tcp_perf_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native freertos10-xilinx"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_lwip_tcp_perf_server* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_server.elf ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME}.elf
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_server.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_server.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_tcp_perf_server.bin ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME}.bin
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_SERVER_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_lwip_tcp_perf_server*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-client/freertos-lwip-udp-perf-client_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-client/freertos-lwip-udp-perf-client_git.bb
new file mode 100644
index 0000000..ccf8f09
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-client/freertos-lwip-udp-perf-client_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_lwip_udp_perf_client/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native freertos10-xilinx"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_lwip_udp_perf_client* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_client.elf ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_client.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_client.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_client.bin ${DEPLOYDIR}/${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin
+ ln -sf ${FREERTOS_LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_lwip_udp_perf_client*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-server/freertos-lwip-udp-perf-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-server/freertos-lwip-udp-perf-server_git.bb
new file mode 100644
index 0000000..f2c9eae
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/freertos-lwip-udp-perf-server/freertos-lwip-udp-perf-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/freertos_lwip_udp_perf_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native freertos10-xilinx"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/freertos_lwip_udp_perf_server* ${D}/${base_libdir}/firmware
+}
+
+FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_server.elf ${DEPLOYDIR}/${FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME}.elf
+ ln -sf ${FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_server.elf ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_server.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/freertos_lwip_udp_perf_server.bin ${DEPLOYDIR}/${FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME}.bin
+ ln -sf ${FREERTOS_LWIP_UDP_PERF_SERVER_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/freertos_lwip_udp_perf_server*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/hello-world/hello-world_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/hello-world/hello-world_git.bb
new file mode 100644
index 0000000..c67fb5f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/hello-world/hello-world_git.bb
@@ -0,0 +1,35 @@
+inherit esw deploy
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/hello_world/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil xiltimer device-tree"
+
+inherit python3native
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/hello_world* ${D}/${base_libdir}/firmware
+}
+
+HELLO_WORLD_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+HELLO_WORLD_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/hello_world.elf ${DEPLOYDIR}/${HELLO_WORLD_BASE_NAME}.elf
+ ln -sf ${HELLO_WORLD_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/hello_world.elf ${WORKDIR}/package/${base_libdir}/firmware/hello_world.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/hello_world.bin ${DEPLOYDIR}/${HELLO_WORLD_BASE_NAME}.bin
+ ln -sf ${HELLO_WORLD_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/hello_world*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-echo-server/lwip-echo-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-echo-server/lwip-echo-server_git.bb
new file mode 100644
index 0000000..e0d6f13
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-echo-server/lwip-echo-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/lwip_echo_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/lwip_echo* ${D}/${base_libdir}/firmware
+}
+
+LWIP_ECHO_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+LWIP_ECHO_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_echo_server.elf ${DEPLOYDIR}/${LWIP_ECHO_BASE_NAME}.elf
+ ln -sf ${LWIP_ECHO_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/lwip_echo_server.elf ${WORKDIR}/package/${base_libdir}/firmware/lwip_echo.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_echo.bin ${DEPLOYDIR}/${LWIP_ECHO_BASE_NAME}.bin
+ ln -sf ${LWIP_ECHO_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/lwip_echo*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-client/lwip-tcp-perf-client_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-client/lwip-tcp-perf-client_git.bb
new file mode 100644
index 0000000..6f0c9b4
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-client/lwip-tcp-perf-client_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/lwip_tcp_perf_client/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/lwip_tcp_perf_client* ${D}/${base_libdir}/firmware
+}
+
+LWIP_TCP_PERF_CLIENT_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+LWIP_TCP_PERF_CLIENT_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_client.elf ${DEPLOYDIR}/${LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf
+ ln -sf ${LWIP_TCP_PERF_CLIENT_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_client.elf ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_client.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_client.bin ${DEPLOYDIR}/${LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin
+ ln -sf ${LWIP_TCP_PERF_CLIENT_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/lwip_tcp_perf_client*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-server/lwip-tcp-perf-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-server/lwip-tcp-perf-server_git.bb
new file mode 100644
index 0000000..d9f990c
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-tcp-perf-server/lwip-tcp-perf-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/lwip_tcp_perf_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/lwip_tcp_perf_server* ${D}/${base_libdir}/firmware
+}
+
+LWIP_TCP_PERF_SERVER_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+LWIP_TCP_PERF_SERVER_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_server.elf ${DEPLOYDIR}/${LWIP_TCP_PERF_SERVER_BASE_NAME}.elf
+ ln -sf ${LWIP_TCP_PERF_SERVER_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_server.elf ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_server.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_tcp_perf_server.bin ${DEPLOYDIR}/${LWIP_TCP_PERF_SERVER_BASE_NAME}.bin
+ ln -sf ${LWIP_TCP_PERF_SERVER_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/lwip_tcp_perf_server*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-client/lwip-udp-perf-client_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-client/lwip-udp-perf-client_git.bb
new file mode 100644
index 0000000..fc89c13
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-client/lwip-udp-perf-client_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/lwip_udp_perf_client/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/lwip_udp_perf_client* ${D}/${base_libdir}/firmware
+}
+
+LWIP_UDP_PERF_CLIENT_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+LWIP_UDP_PERF_CLIENT_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_client.elf ${DEPLOYDIR}/${LWIP_UDP_PERF_CLIENT_BASE_NAME}.elf
+ ln -sf ${LWIP_UDP_PERF_CLIENT_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_client.elf ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_client.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_client.bin ${DEPLOYDIR}/${LWIP_UDP_PERF_CLIENT_BASE_NAME}.bin
+ ln -sf ${LWIP_UDP_PERF_CLIENT_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/lwip_udp_perf_client*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-server/lwip-udp-perf-server_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-server/lwip-udp-perf-server_git.bb
new file mode 100644
index 0000000..8b9114a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/lwip-udp-perf-server/lwip-udp-perf-server_git.bb
@@ -0,0 +1,41 @@
+inherit esw deploy python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/lwip_udp_perf_server/src/"
+
+DEPENDS += "dtc-native python3-dtc-native libxil lwip xiltimer device-tree python3-pyyaml-native"
+
+do_configure_prepend() {
+ cd ${S}
+ nativepython3 ${S}/scripts/linker_gen.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_generate_app_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+addtask do_generate_app_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/lwip_udp_perf_server* ${D}/${base_libdir}/firmware
+}
+
+LWIP_UDP_PERF_SERVER_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+LWIP_UDP_PERF_SERVER_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_server.elf ${DEPLOYDIR}/${LWIP_UDP_PERF_SERVER_BASE_NAME}.elf
+ ln -sf ${LWIP_UDP_PERF_SERVER_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_server.elf ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_server.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/lwip_udp_perf_server.bin ${DEPLOYDIR}/${LWIP_UDP_PERF_SERVER_BASE_NAME}.bin
+ ln -sf ${LWIP_UDP_PERF_SERVER_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/lwip_udp_perf_server*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/pmufw/pmufw_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/pmufw/pmufw_git.bb
new file mode 100644
index 0000000..19238f9
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/pmufw/pmufw_git.bb
@@ -0,0 +1,30 @@
+inherit esw deploy
+
+COMPATIBLE_MACHINE = "microblaze-pmu"
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/zynqmp_pmufw/src"
+
+DEPENDS += "xilstandalone xiltimer xilfpga xilskey"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/pmufw* ${D}/${base_libdir}/firmware
+}
+
+PMU_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/pmufw.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/pmufw.elf ${WORKDIR}/package/${base_libdir}/firmware/pmufw.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/pmufw.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/pmufw*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-applications/zynqmp-fsbl/zynqmp-fsbl_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-applications/zynqmp-fsbl/zynqmp-fsbl_git.bb
new file mode 100644
index 0000000..a0d2d2b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-applications/zynqmp-fsbl/zynqmp-fsbl_git.bb
@@ -0,0 +1,40 @@
+inherit esw deploy
+
+COMPATIBLE_MACHINE = ".*-zynqmp"
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/zynqmp_fsbl/src"
+
+DEPENDS += "xilstandalone xiltimer xilffs xilsecure xilpm device-tree"
+
+PSU_INIT = "${RECIPE_SYSROOT}/${includedir}/devicetree/psu_init*"
+
+do_configure_prepend() {
+ # Copy psu_init* files to fsbl source code
+ cp ${PSU_INIT} ${S}/${ESW_COMPONENT_SRC}
+}
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/zynqmp_fsbl* ${D}/${base_libdir}/firmware
+}
+
+ZYNQMP_FSBL_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+ZYNQMP_FSBL_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # We need to deploy the stripped elf, hence why not doing it from ${D}
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/zynqmp_fsbl.elf ${DEPLOYDIR}/${ZYNQMP_FSBL_BASE_NAME}.elf
+ ln -sf ${ZYNQMP_FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/zynqmp_fsbl.elf ${WORKDIR}/package/${base_libdir}/firmware/zynqmp_fsbl.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/zynqmp_fsbl.bin ${DEPLOYDIR}/${ZYNQMP_FSBL_BASE_NAME}.bin
+ ln -sf ${ZYNQMP_FSBL_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+CFLAGS_append_aarch64 = " -DARMA53_64"
+CFLAGS_append_armrm = " -DARMR5"
+
+FILES_${PN} = "${base_libdir}/firmware/zynqmp_fsbl*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-bsp/device-tree/device-tree.bbappend
new file mode 100644
index 0000000..2cc088f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-bsp/device-tree/device-tree.bbappend
@@ -0,0 +1,28 @@
+COMPATIBLE_HOST_xilinx-standalone = "${HOST_SYS}"
+
+COMPATIBLE_MACHINE_cortexa53-zynqmp = ".*"
+COMPATIBLE_MACHINE_cortexr5-zynqmp = ".*"
+COMPATIBLE_MACHINE_microblaze-pmu = ".*"
+COMPATIBLE_MACHINE_microblaze-plm = ".*"
+COMPATIBLE_MACHINE_cortexa72-versal = ".*"
+COMPATIBLE_MACHINE_cortexr5-versal = ".*"
+COMPATIBLE_MACHINE_cortexa9-zynq = ".*"
+
+XSCTH_PROC_cortexa53-zynqmp ??= "psu_cortexa53_0"
+XSCTH_PROC_cortexr5-zynqmp ??= "psu_cortexr5_0"
+XSCTH_PROC_microblaze-pmu ??= "psu_pmu_0"
+XSCTH_PROC_cortexa72-versal ??= "psv_cortexa72_0"
+XSCTH_PROC_microblaze-plm ??= "psv_pmc_0"
+XSCTH_PROC_cortexr5-versal ??= "psv_cortexr5_0"
+XSCTH_PROC_cortexa9-zynq ??= "ps7_cortexa9_0"
+
+# Enable @ flag on dtc which is required by libxil
+DTC_FLAGS_append_xilinx-standalone = " -@"
+DT_INCLUDE_append_xilinx-standalone = " ${WORKDIR}/git/device_tree/data/kernel_dtsi/${XILINX_RELEASE_VERSION}/include/"
+
+
+do_install_append_zynqmp_xilinx-standalone() {
+ install -d ${D}${includedir}/devicetree
+ install -m 0644 ${B}/${PN}/psu_init.c ${D}/${includedir}/devicetree/psu_init.c
+ install -m 0644 ${B}/${PN}/psu_init.h ${D}/${includedir}/devicetree/psu_init.h
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/gnu-toolchain-canadian.bb b/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/gnu-toolchain-canadian.bb
new file mode 100644
index 0000000..ca8885b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/gnu-toolchain-canadian.bb
@@ -0,0 +1,25 @@
+inherit cross-canadian
+
+SUMMARY = "Links to the various GNU toolchains for use with the Xilinx multilib toolchain"
+PN = "gnu-toolchain-canadian-${TARGET_SYS}"
+BPN = "gnu-toolchain-canadian"
+
+LICENSE = "MIT"
+
+do_install () {
+ if [ "${TARGET_SYS_MULTILIB_ORIGINAL}" != "" -a "${TARGET_SYS_MULTILIB_ORIGINAL}" != "${TARGET_SYS}" ]; then
+ mkdir -p ${D}${bindir}
+
+ # Create a link for each item references by the environment files
+ for each in gcc g++ as ld gdb strip ranlib objcopy objdump readelf ar nm ; do
+ ln -s ../${TARGET_SYS_MULTILIB_ORIGINAL}/${TARGET_SYS_MULTILIB_ORIGINAL}-${each} ${D}${bindir}/${TARGET_SYS}-$each
+ done
+ fi
+}
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = "${bindir}"
+
+PACKAGES = "${PN}"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend
new file mode 100644
index 0000000..51b7003
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend
@@ -0,0 +1,3 @@
+COMPATIBLE_HOST = "${HOST_SYS}"
+
+TOOLCHAIN_TARGET_TASK_xilinx-standalone = "${@multilib_pkg_extend(d, 'packagegroup-newlib-standalone-sdk-target')}"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend
new file mode 100644
index 0000000..b224502
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend
@@ -0,0 +1,13 @@
+COMPATIBLE_HOST = ".*-elf"
+COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi"
+
+# When building multiple, we need to depend on the multilib newlib
+DEPENDS_append_xilinx-standalone = " ${MLPREFIX}newlib"
+
+EXTRA_OECONF_append_xilinx-standalone = " \
+ --enable-newlib-io-c99-formats \
+ --enable-newlib-io-long-long \
+ --enable-newlib-io-float \
+ --enable-newlib-io-long-double \
+ --disable-newlib-supplied-syscalls \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend
new file mode 100644
index 0000000..536a23a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend
@@ -0,0 +1,21 @@
+COMPATIBLE_HOST = ".*-elf"
+COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi"
+
+EXTRA_OECONF_append_xilinx-standalone = " \
+ --enable-newlib-io-c99-formats \
+ --enable-newlib-io-long-long \
+ --enable-newlib-io-float \
+ --enable-newlib-io-long-double \
+ --disable-newlib-supplied-syscalls \
+"
+
+# Avoid trimmping CCARGS from CC by newlib configure
+do_configure_prepend_xilinx-standalone(){
+ export CC_FOR_TARGET="${CC}"
+}
+
+# Fix for multilib newlib installations
+do_install_prepend_xilinx-standalone() {
+ mkdir -p $(dirname ${D}${libdir})
+ mkdir -p $(dirname ${D}${includedir})
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend
new file mode 100644
index 0000000..456ec6c
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend
@@ -0,0 +1,14 @@
+# Avoid installing all of the alternative toolchains
+# due to multilib enabled in the primary toolchain.
+
+# Create the links to the multilib toolchain components
+GNUTCLINKS = "gnu-toolchain-canadian-${TARGET_SYS}"
+
+# Without the := the eval during do_package is occasionally missing multilibs
+RDEPENDS_${PN}_xilinx-standalone := " \
+ ${@all_multilib_tune_values(d, 'GNUTCLINKS')} \
+ ${BINUTILS} \
+ ${GCC} \
+ ${GDB} \
+ meta-environment-${MACHINE} \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb b/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb
new file mode 100644
index 0000000..b64554d
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb
@@ -0,0 +1,13 @@
+COMPATIBLE_HOST = "${HOST_SYS}"
+
+SUMMARY = "Target packages for the standalone SDK"
+
+PACKAGE_ARCH = "${TUNE_PKGARCH}"
+
+inherit packagegroup
+
+RDEPENDS_${PN} = "\
+ libgcc-dev \
+ libstdc++-dev \
+ ${LIBC_DEPENDENCIES} \
+ "
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross-canadian_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross-canadian_%.bbappend
new file mode 100644
index 0000000..5ba6039
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross-canadian_%.bbappend
@@ -0,0 +1 @@
+require binutils-xilinx-standalone.inc
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross_%.bbappend
new file mode 100644
index 0000000..5ba6039
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-cross_%.bbappend
@@ -0,0 +1 @@
+require binutils-xilinx-standalone.inc
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-xilinx-standalone.inc b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-xilinx-standalone.inc
new file mode 100644
index 0000000..ac56973
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/binutils/binutils-xilinx-standalone.inc
@@ -0,0 +1,19 @@
+LDGOLD_xilinx-standalone = ""
+LDGOLD_ALTS_xilinx-standalone = ""
+
+EXTRA_OECONF_append_xilinx-standalone = " \
+ --disable-gprof \
+ --disable-shared \
+ --enable-lto \
+ --enable-static \
+ --enable-multilib \
+"
+
+# CortexR5 and 32-bit arm are both "arm"
+EXTRA_OECONF_append_xilinx-standalone_arm = " \
+ --enable-interwork \
+"
+
+EXTRA_OECONF_append_xilinx-standalone_microblaze = " \
+ --disable-initfini-array \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch
new file mode 100644
index 0000000..a32045b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch
@@ -0,0 +1,84 @@
+Change the multilib settings to match the expectations of Vitis and related.
+
+The multilib list is as follows:
+
+.;
+le;@mlittle-endian
+bs;@mxl-barrel-shift
+p;@mxl-pattern-compare
+m;@mno-xl-soft-mul
+fpd;@mhard-float
+m/fpd;@mno-xl-soft-mul@mhard-float
+p/m;@mxl-pattern-compare@mno-xl-soft-mul
+p/fpd;@mxl-pattern-compare@mhard-float
+p/m/fpd;@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+bs/p;@mxl-barrel-shift@mxl-pattern-compare
+bs/m;@mxl-barrel-shift@mno-xl-soft-mul
+bs/fpd;@mxl-barrel-shift@mhard-float
+bs/m/fpd;@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
+bs/p/m;@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
+bs/p/fpd;@mxl-barrel-shift@mxl-pattern-compare@mhard-float
+bs/p/m/fpd;@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+le/m64;@mlittle-endian@m64
+le/bs;@mlittle-endian@mxl-barrel-shift
+le/p;@mlittle-endian@mxl-pattern-compare
+le/m;@mlittle-endian@mno-xl-soft-mul
+le/fpd;@mlittle-endian@mhard-float
+le/m/fpd;@mlittle-endian@mno-xl-soft-mul@mhard-float
+le/p/m;@mlittle-endian@mxl-pattern-compare@mno-xl-soft-mul
+le/p/fpd;@mlittle-endian@mxl-pattern-compare@mhard-float
+le/p/m/fpd;@mlittle-endian@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+le/bs/p;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare
+le/bs/m;@mlittle-endian@mxl-barrel-shift@mno-xl-soft-mul
+le/bs/fpd;@mlittle-endian@mxl-barrel-shift@mhard-float
+le/bs/m/fpd;@mlittle-endian@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
+le/bs/p/m;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
+le/bs/p/fpd;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mhard-float
+le/bs/p/m/fpd;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+le/m64/bs;@mlittle-endian@m64@mxl-barrel-shift
+le/m64/p;@mlittle-endian@m64@mxl-pattern-compare
+le/m64/m;@mlittle-endian@m64@mno-xl-soft-mul
+le/m64/fpd;@mlittle-endian@m64@mhard-float
+le/m64/m/fpd;@mlittle-endian@m64@mno-xl-soft-mul@mhard-float
+le/m64/p/m;@mlittle-endian@m64@mxl-pattern-compare@mno-xl-soft-mul
+le/m64/p/fpd;@mlittle-endian@m64@mxl-pattern-compare@mhard-float
+le/m64/p/m/fpd;@mlittle-endian@m64@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+le/m64/bs/p;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare
+le/m64/bs/m;@mlittle-endian@m64@mxl-barrel-shift@mno-xl-soft-mul
+le/m64/bs/fpd;@mlittle-endian@m64@mxl-barrel-shift@mhard-float
+le/m64/bs/m/fpd;@mlittle-endian@m64@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
+le/m64/bs/p/m;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
+le/m64/bs/p/fpd;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mhard-float
+le/m64/bs/p/m/fpd;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
+
+As part of this the order of the multilibs was changes from upstream to make
+it easier to avoid big-endian m64, which is not supported by the toolchain.
+
+Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
+
+diff -ur gcc-9.2.0.orig/gcc/config/microblaze/t-microblaze gcc-9.2.0/gcc/config/microblaze/t-microblaze
+--- gcc-9.2.0.orig/gcc/config/microblaze/t-microblaze 2020-02-07 09:46:48.286261214 -0800
++++ gcc-9.2.0/gcc/config/microblaze/t-microblaze 2020-02-10 17:07:52.440598949 -0800
+@@ -1,16 +1,11 @@
+-MULTILIB_OPTIONS = m64 mxl-barrel-shift mlittle-endian mno-xl-soft-mul mxl-multiply-high
+-MULTILIB_DIRNAMES = m64 bs le m mh
+-MULTILIB_EXCEPTIONS = *m64/mxl-multiply-high mxl-multiply-high
+-MULTILIB_EXCEPTIONS += *m64
+-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift
+-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul
+-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul
+-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul
+-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul/mxl-multiply-high
+-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul/mxl-multiply-high
++MULTILIB_OPTIONS = mlittle-endian m64 mxl-barrel-shift mxl-pattern-compare mno-xl-soft-mul mhard-float
++MULTILIB_DIRNAMES = le m64 bs p m fpd
++MULTILIB_EXCEPTIONS = mxl-multiply-high
+ MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high mxl-multiply-high
+ MULTILIB_EXCEPTIONS += *mlittle-endian/mxl-multiply-high mxl-multiply-high
+-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mlittle-endian/mxl-multiply-high
++MULTILIB_EXCEPTIONS += *mxl-pattern-compare*/*mxl-multiply-high*
++# Big endian m64 is not supported
++MULTILIB_EXCEPTIONS += m64*
+
+ # Extra files
+ microblaze-c.o: $(srcdir)/config/microblaze/microblaze-c.c \
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-configure-xilinx-standalone.inc b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-configure-xilinx-standalone.inc
new file mode 100644
index 0000000..b9bfe83
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-configure-xilinx-standalone.inc
@@ -0,0 +1,7 @@
+# Mimic the file gcc-configure-common from the Yocto Project
+LINKER_HASH_STYLE_xilinx-standalone = ""
+SYMVERS_CONF_xilinx-standalone = ""
+
+EXTRA_OECONF_append_xilinx-standalone_microblaze = " --disable-initfini_array"
+
+EXTRA_OECONF_append_xilinx-standalone_microblaze = " --disable-__cxa_atexit"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross-canadian_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross-canadian_%.bbappend
new file mode 100644
index 0000000..1523484
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross-canadian_%.bbappend
@@ -0,0 +1,20 @@
+require gcc-configure-xilinx-standalone.inc
+require gcc-xilinx-standalone.inc
+
+# We want to use the stock multilib configs, when available
+EXTRACONFFUNCS_xilinx-standalone = ""
+
+EXTRA_OECONF_append_xilinx-standalone = " \
+ --enable-multilib \
+"
+
+# Temporary hack to build gcc cross canadian for tclibc-newlib as --with-sysroot=/not/exist
+# has been removed from TARGET_OS for elf and eabi in gcc-cross-canadian.inc
+
+python() {
+ if 'xilinx-standalone' in d.getVar("DISTROOVERRIDES").split(':'):
+ extraoeconfgcc = d.getVar('EXTRA_OECONF')
+ extraoeconfgcc += " --with-sysroot=/not/exist"
+ d.delVar('EXTRA_OECONF')
+ d.setVar('EXTRA_OECONF', extraoeconfgcc)
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross_%.bbappend
new file mode 100644
index 0000000..22a3e3a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-cross_%.bbappend
@@ -0,0 +1,6 @@
+require gcc-configure-xilinx-standalone.inc
+require gcc-xilinx-standalone.inc
+
+# We want to use the stock multilib configs, when available
+EXTRACONFFUNCS_xilinx-standalone = ""
+
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend
new file mode 100644
index 0000000..7057a05
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend
@@ -0,0 +1,74 @@
+require gcc-configure-xilinx-standalone.inc
+
+COMPATIBLE_HOST = "${HOST_SYS}"
+
+EXTRA_OECONF_append_xilinx-standalone_class-target = " \
+ --disable-libstdcxx-pch \
+ --with-newlib \
+ --disable-threads \
+ --enable-plugins \
+ --with-gnu-as \
+ --disable-libitm \
+"
+
+EXTRA_OECONF_append_xilinx-standalone_aarch64_class-target = " \
+ --disable-multiarch \
+ --with-arch=armv8-a \
+ "
+
+# Both arm and armrm overrides are set w/ cortex r5
+# So only set rmprofile if armrm is defined.
+ARM_PROFILE = "aprofile"
+ARM_PROFILE_armrm = "rmprofile"
+
+EXTRA_OECONF_append_xilinx-standalone_arm_class-target = " \
+ --with-multilib-list=${ARM_PROFILE} \
+ "
+
+EXTRA_OECONF_append_xilinx-standalone_armrm_class-target = " \
+ --disable-tls \
+ --disable-decimal-float \
+ "
+
+EXTRA_OECONF_append_xilinx-standalone_microblaze_class-target = " \
+ --enable-target-optspace \
+ --without-long-double-128 \
+ "
+
+# Changes local to gcc-runtime...
+
+# Dont build libitm, etc.
+RUNTIMETARGET_xilinx-standalone_class-target = "libstdc++-v3"
+
+do_install_append_xilinx-standalone_class-target() {
+ # Fixup what gcc-runtime normally would do, we don't want linux directories!
+ rm -rf ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
+
+ # The multilibs have different headers, so stop combining them!
+ if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then
+ rm -rf ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}
+ fi
+
+ # link the C++ header into the place that multilib gcc expects
+ # C++ compiler looks at usr/include/c++/version/canonical-arch/mlib
+ if [ "${TARGET_SYS_MULTILIB_ORIGINAL}" != "" -a "${TARGET_SYS_MULTILIB_ORIGINAL}" != "${TARGET_SYS}" ]; then
+ mlib=${BASE_LIB_tune-${DEFAULTTUNE}}
+ mlib=${mlib##lib/}
+
+ link_name=${D}${includedir}/c++/${BINV}/${TARGET_SYS_MULTILIB_ORIGINAL}/${mlib}
+ target=${D}${includedir}/c++/${BINV}/${TARGET_SYS}
+
+ echo mkdir -p $link_name
+ mkdir -p $link_name
+ for each in bits ext ; do
+ relpath=$(python3 -c "import os.path; print(os.path.relpath('$target/$each', '$(dirname $link_name/$each)'))")
+
+ echo ln -s $relpath $link_name/$each
+ ln -s $relpath $link_name/$each
+ done
+ fi
+}
+
+FILES_${PN}-dbg_append_xilinx-standalone_class-target = "\
+ ${libdir}/libstdc++.a-gdb.py \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend
new file mode 100644
index 0000000..6a4a8c5
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend
@@ -0,0 +1,7 @@
+COMPATIBLE_HOST = "${HOST_SYS}"
+
+# Add MicroBlaze Patches (only when using MicroBlaze)
+FILESEXTRAPATHS_append_microblaze_xilinx-standalone := ":${THISDIR}/gcc-9"
+SRC_URI_append_microblaze_xilinx-standalone = " \
+ file://additional-microblaze-multilibs.patch \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-xilinx-standalone.inc b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-xilinx-standalone.inc
new file mode 100644
index 0000000..29f67af
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/gcc-xilinx-standalone.inc
@@ -0,0 +1,31 @@
+EXTRA_OECONF_append_xilinx-standalone = " \
+ --disable-libstdcxx-pch \
+ --with-newlib \
+ --disable-threads \
+ --enable-plugins \
+ --with-gnu-as \
+ --disable-libitm \
+"
+
+EXTRA_OECONF_append_xilinx-standalone_aarch64 = " \
+ --disable-multiarch \
+ --with-arch=armv8-a \
+ "
+
+# Both arm and armrm overrides are set w/ cortex r5
+# So only set rmprofile if armrm is defined.
+ARM_PROFILE = "aprofile"
+ARM_PROFILE_armrm = "rmprofile"
+EXTRA_OECONF_append_xilinx-standalone_arm = " \
+ --with-multilib-list=${ARM_PROFILE} \
+ "
+
+EXTRA_OECONF_append_xilinx-standalone_armrm = " \
+ --disable-tls \
+ --disable-decimal-float \
+ "
+
+EXTRA_OECONF_append_xilinx-standalone_microblaze = " \
+ --enable-target-optspace \
+ --without-long-double-128 \
+ "
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend
new file mode 100644
index 0000000..e80b0b7
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend
@@ -0,0 +1,26 @@
+require gcc-configure-xilinx-standalone.inc
+
+COMPATIBLE_HOST = "${HOST_SYS}"
+
+python do_multilib_install_xilinx-standalone_class-target () {
+ pass
+}
+
+standalone_fixup () {
+ (
+ cd ${D}${libdir}
+ for each in ${TARGET_SYS}/*/* ; do
+ ln -s $each $(basename $each)
+ done
+ )
+}
+
+FIXUP_FUNCTION = ""
+FIXUP_FUNCTION_xilinx-standalone_class-target = " standalone_fixup"
+
+do_install[postfuncs] .= "${FIXUP_FUNCTION}"
+
+FILES_${PN}-dev_append_xilinx-standalone_class-target = " \
+ ${libdir}/*.a \
+ ${libdir}/*.o \
+"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh
new file mode 100755
index 0000000..b59dff1
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh
@@ -0,0 +1,16 @@
+#! /bin/bash
+
+# Call using:
+#../microblaze/sysroots/x86_64-oesdk-linux/usr/bin/microblaze-xilinx-elf/microblaze-xilinx-elf-gcc -print-multi-lib | mb-convert-head.sh
+
+# Then copy the output into the special microblaze-tc BSP
+
+sed -e 's,;, ,' |
+ while read mlib args ; do
+ if [ $mlib = '.' ]; then
+ continue
+ fi
+ multilib="libmb$(echo $mlib | sed -e 's,/,,g')"
+
+ echo 'MULTILIBS += "multilib:'${multilib}'"'
+ done
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh
new file mode 100755
index 0000000..e05145e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh
@@ -0,0 +1,60 @@
+#! /bin/bash
+
+# Call using:
+#../microblaze/sysroots/x86_64-oesdk-linux/usr/bin/microblaze-xilinx-elf/microblaze-xilinx-elf-gcc -print-multi-lib | mb-convert.sh
+
+# Then copy the output into the special microblaze-tc BSP
+
+mlib_to_feature() {
+ feature_base="microblaze"
+ feature_endian=" bigendian"
+ feature_barrel=""
+ feature_pattern=""
+ feature_multiply=""
+ feature_multiplyhigh=""
+ feature_sixtyfour=""
+ feature_math=""
+ while read feature ; do
+ case $feature in
+ le) feature_endian="";;
+ bs) feature_barrel=" barrel-shift";;
+ p) feature_pattern=" pattern-compare";;
+ m) if [ -z ${feature_multiplyhigh} ]; then feature_multiply=" multiply-low" ; fi ;;
+ mh) feature_multiply="" ; feature_multiplyhigh=" multiply-high";;
+ m64) feature_sixtyfour=" 64-bit";;
+ fpd) feature_math=" fpu-hard";;
+ *) echo "UNKNOWN $feature";;
+ esac
+ done
+ echo "${feature_base}${feature_sixtyfour}${feature_endian}${feature_barrel}${feature_pattern}${feature_multiply}${feature_multiplyhigh}${feature_math}"
+}
+
+sed -e 's,;, ,' |
+ while read mlib args ; do
+ if [ $mlib = '.' ]; then
+ echo '# Base configuration'
+ echo '# CFLAGS:'
+ echo 'DEFAULTTUNE = "microblaze"'
+ echo
+ echo 'AVAILTUNES += "microblaze"'
+ echo 'BASE_LIB_tune-microblaze = "lib"'
+ echo 'TUNE_FEATURES_tune-microblaze = "microblaze bigendian"'
+ echo 'PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"'
+ continue
+ fi
+
+ cflags=$(echo $args | sed -e 's,@, -,g')
+ multilib="libmb$(echo $mlib | sed -e 's,/,,g')"
+ tune="microblaze$(echo $mlib | sed -e 's,m64,64,' -e 's,/,,g')"
+ features=$(echo $mlib | sed -e 's,/, ,g' | xargs -n 1 echo | mlib_to_feature)
+ echo
+ echo
+ echo "# $mlib"
+ echo "# CFLAGS:${cflags}"
+ echo "DEFAULTTUNE_virtclass-multilib-$multilib = \"$tune\""
+ echo
+ echo "AVAILTUNES += \"$tune\""
+ echo "BASE_LIB_tune-$tune = \"lib/$mlib\""
+ echo "TUNE_FEATURES_tune-$tune = \"${features}\""
+ echo "PACKAGE_EXTRA_ARCHS_tune-$tune = \"\${TUNE_PKGARCH}\""
+ done
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend
new file mode 100644
index 0000000..0d82432
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend
@@ -0,0 +1 @@
+COMPATIBLE_HOST = "${HOST_SYS}"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axicdma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axicdma_git.bb
new file mode 100644
index 0000000..442ffb7
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axicdma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/axicdma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axidma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axidma_git.bb
new file mode 100644
index 0000000..05f4c34
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axidma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/axidma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axiethernet_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axiethernet_git.bb
new file mode 100644
index 0000000..1dc8340
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axiethernet_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/axiethernet/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axivdma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axivdma_git.bb
new file mode 100644
index 0000000..415cb9b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/axivdma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/axivdma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/can_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/can_git.bb
new file mode 100644
index 0000000..3f688c3
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/can_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/can/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canfd_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canfd_git.bb
new file mode 100644
index 0000000..36fa367
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canfd_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/canfd/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canps_git.bb
new file mode 100644
index 0000000..ab6f647
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/canps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/canps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/clockps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/clockps_git.bb
new file mode 100644
index 0000000..b0bb1cc
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/clockps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/clockps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/csudma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/csudma_git.bb
new file mode 100644
index 0000000..f505a8a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/csudma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/csudma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/devcfg_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/devcfg_git.bb
new file mode 100644
index 0000000..0441446
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/devcfg_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/devcfg/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/dmaps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/dmaps_git.bb
new file mode 100644
index 0000000..0891fb8
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/dmaps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/dmaps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emaclite_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emaclite_git.bb
new file mode 100644
index 0000000..927bc93
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emaclite_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/emaclite/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emacps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emacps_git.bb
new file mode 100644
index 0000000..530087a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/emacps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/emacps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpio_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpio_git.bb
new file mode 100644
index 0000000..8302d66
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpio_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/gpio/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpiops_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpiops_git.bb
new file mode 100644
index 0000000..9ece49a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/gpiops_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/gpiops/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ipipsu_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ipipsu_git.bb
new file mode 100644
index 0000000..83a107e
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ipipsu_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/ipipsu/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/llfifo_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/llfifo_git.bb
new file mode 100644
index 0000000..dbc1945
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/llfifo_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/llfifo/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mbox_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mbox_git.bb
new file mode 100644
index 0000000..085a459
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mbox_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/mbox/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mcdma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mcdma_git.bb
new file mode 100644
index 0000000..4b45d00
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mcdma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/mcdma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mutex_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mutex_git.bb
new file mode 100644
index 0000000..6a7b39b
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/mutex_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/mutex/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/nandpsu_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/nandpsu_git.bb
new file mode 100644
index 0000000..8fd7251
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/nandpsu_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/nandpsu/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ospipsv_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ospipsv_git.bb
new file mode 100644
index 0000000..b98f9b5
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ospipsv_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/ospipsv/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspips_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspips_git.bb
new file mode 100644
index 0000000..1f0a124
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspips_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/qspips/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspipsu_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspipsu_git.bb
new file mode 100644
index 0000000..f1c97e9
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/qspipsu_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/qspipsu/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/resetps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/resetps_git.bb
new file mode 100644
index 0000000..51e4eaa
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/resetps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/resetps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/rtcpsu_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/rtcpsu_git.bb
new file mode 100644
index 0000000..19f17f7
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/rtcpsu_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/rtcpsu/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/scugic_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/scugic_git.bb
new file mode 100644
index 0000000..f20c824
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/scugic_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/scugic/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sdps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sdps_git.bb
new file mode 100644
index 0000000..cba4543
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sdps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/sdps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/spips_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/spips_git.bb
new file mode 100644
index 0000000..d1395a1
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/spips_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/spips/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sysmon_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sysmon_git.bb
new file mode 100644
index 0000000..cc10bbc
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/sysmon_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/sysmon/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/tmrctr_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/tmrctr_git.bb
new file mode 100644
index 0000000..2e675fb
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/tmrctr_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/tmrctr/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ttcps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ttcps_git.bb
new file mode 100644
index 0000000..72a2156
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/ttcps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/ttcps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartlite_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartlite_git.bb
new file mode 100644
index 0000000..0f6d688
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartlite_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/uartlite/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartps_git.bb
new file mode 100644
index 0000000..e898f01
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/uartps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/uartps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/usbpsu_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/usbpsu_git.bb
new file mode 100644
index 0000000..9764537
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/usbpsu_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/usbpsu/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/wdtps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/wdtps_git.bb
new file mode 100644
index 0000000..de70d5f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/wdtps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/wdtps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xadcps_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xadcps_git.bb
new file mode 100644
index 0000000..2e60752
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xadcps_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/xadcps/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xxvethernet_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xxvethernet_git.bb
new file mode 100644
index 0000000..66e6bcd
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/xxvethernet_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/xxvethernet/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-drivers/zdma_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/zdma_git.bb
new file mode 100644
index 0000000..584a1b2
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-drivers/zdma_git.bb
@@ -0,0 +1,3 @@
+inherit esw_examples
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/zdma/examples/"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend
new file mode 100644
index 0000000..0d82432
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend
@@ -0,0 +1 @@
+COMPATIBLE_HOST = "${HOST_SYS}"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/freertos10-xilinx_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/freertos10-xilinx_git.bb
new file mode 100644
index 0000000..870524d
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/freertos10-xilinx_git.bb
@@ -0,0 +1,12 @@
+inherit esw python3native
+
+ESW_COMPONENT_SRC = "/ThirdParty/bsp/freertos10_xilinx/src/"
+ESW_COMPONENT_NAME = "libfreertos.a"
+
+DEPENDS += "libxil xilstandalone xilmem dtc-native python3-pyyaml-native python3-dtc-native xiltimer"
+
+do_configure_prepend() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/libxil_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/libxil_git.bb
new file mode 100644
index 0000000..4ac7c11
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/libxil_git.bb
@@ -0,0 +1,27 @@
+inherit esw python3native
+
+ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/"
+ESW_COMPONENT_NAME = "libxil.a"
+
+DEPENDS += "dtc-native python3-dtc-native python3-pyyaml-native xilstandalone xilmem device-tree"
+
+do_configure_prepend() {
+ # This will generate CMakeLists.txt which contains
+ # drivers for the libxil
+ cd ${S}
+ #TODO
+ # This call was initially used to get the list of drivers and libraries required
+ # by the design to the build system to use as dependencies to the application
+ # being built, at this point this is all done in a single cmake build bundling
+ # everything in libxil, which is undesired.
+ DRIVERS_LIST=$(nativepython3 ${S}/scripts/getdrvlist.py -d ${DTBFILE})
+}
+
+do_generate_driver_data() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/generate_drvdata.py -d ${DTBFILE}
+}
+
+addtask do_generate_driver_data before do_configure after do_prepare_recipe_sysroot
+do_prepare_recipe_sysroot[rdeptask] = "do_unpack"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/lwip_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/lwip_git.bb
new file mode 100644
index 0000000..7e31b32
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/lwip_git.bb
@@ -0,0 +1,23 @@
+inherit esw python3native
+
+ESW_COMPONENT_SRC = "/ThirdParty/sw_services/lwip211/src/"
+ESW_COMPONENT_NAME = "liblwip211.a"
+
+DEPENDS += "dtc-native python3-dtc-native libxil python3-pyyaml-native"
+DEPENDS_append_xilinx-freertos = "freertos10-xilinx"
+
+do_configure_prepend() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ install -m 0755 ${B}/${ESW_COMPONENT_NAME} ${D}${libdir}
+ install -m 0644 ${B}/include/*.h ${D}${includedir}
+ cp -r ${B}/include/arch/ ${D}${includedir}
+ cp -r ${B}/include/include/lwip/ ${D}${includedir}
+ cp -r ${B}/include/include/netif/ ${D}${includedir}
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilffs_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilffs_git.bb
new file mode 100644
index 0000000..fdfbb7c
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilffs_git.bb
@@ -0,0 +1,10 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilffs/src/"
+ESW_COMPONENT_NAME = "libxilffs.a"
+
+EXTRA_OECMAKE += "-DXILFFS_use_mkfs=OFF"
+EXTRA_OECMAKE += "-DXILFFS_read_only=ON"
+EXTRA_OECMAKE += "-DXILFFS_word_access=OFF"
+
+DEPENDS += "xilstandalone libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilfpga_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilfpga_git.bb
new file mode 100644
index 0000000..41405fd
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilfpga_git.bb
@@ -0,0 +1,7 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilfpga/src/"
+ESW_COMPONENT_NAME = "libxilfpga.a"
+
+DEPENDS += " libxil xilsecure"
+
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilloader_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilloader_git.bb
new file mode 100644
index 0000000..682908a
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilloader_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilloader/src/"
+ESW_COMPONENT_NAME = "libxilloader.a"
+
+DEPENDS += "xilstandalone libxil xilpm xilpdi xilffs xilsecure xilpuf"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmailbox_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmailbox_git.bb
new file mode 100644
index 0000000..ff61d95
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmailbox_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilmailbox/src/"
+ESW_COMPONENT_NAME = "libxilmailbox.a"
+
+DEPENDS += "xilstandalone libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmem_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmem_git.bb
new file mode 100644
index 0000000..de94254
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilmem_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilmem/src/"
+ESW_COMPONENT_NAME = "libxilmem.a"
+
+DEPENDS += "xilstandalone"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpdi_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpdi_git.bb
new file mode 100644
index 0000000..c008b06
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpdi_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilpdi/src/"
+ESW_COMPONENT_NAME = "libxilpdi.a"
+
+DEPENDS += "xilstandalone libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilplmi_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilplmi_git.bb
new file mode 100644
index 0000000..e866e98
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilplmi_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilplmi/src/"
+ESW_COMPONENT_NAME = "libxilplmi.a"
+
+DEPENDS += "xilstandalone libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpm_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpm_git.bb
new file mode 100644
index 0000000..80132c9
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpm_git.bb
@@ -0,0 +1,7 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilpm/src/"
+ESW_COMPONENT_NAME = "libxilpm.a"
+
+DEPENDS = "libxil"
+DEPENDS_microblaze-plm_append = "xilplmi"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpuf_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpuf_git.bb
new file mode 100644
index 0000000..31f0628
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilpuf_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilpuf/src/"
+ESW_COMPONENT_NAME = "libxilpuf.a"
+
+DEPENDS += "libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsecure_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsecure_git.bb
new file mode 100644
index 0000000..0ad5551
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsecure_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilsecure/src/"
+ESW_COMPONENT_NAME = "libxilsecure.a"
+
+DEPENDS += "libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsem_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsem_git.bb
new file mode 100644
index 0000000..3631d7f
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilsem_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilsem/src/"
+ESW_COMPONENT_NAME = "libxilsem.a"
+
+DEPENDS += "xilstandalone libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilskey_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilskey_git.bb
new file mode 100644
index 0000000..8478255
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilskey_git.bb
@@ -0,0 +1,6 @@
+inherit esw
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xilskey/src/"
+ESW_COMPONENT_NAME = "libxilskey.a"
+
+DEPENDS += "libxil"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilstandalone_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilstandalone_git.bb
new file mode 100644
index 0000000..a4a393c
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xilstandalone_git.bb
@@ -0,0 +1,12 @@
+inherit esw python3native
+
+ESW_COMPONENT_SRC = "/lib/bsp/standalone/src/"
+ESW_COMPONENT_NAME = "libxilstandalone.a"
+
+DEPENDS += "dtc-native python3-dtc-native python3-pyyaml-native libgloss device-tree"
+
+do_configure_prepend() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/generate_libdata.py -d ${DTBFILE}
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xiltimer_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xiltimer_git.bb
new file mode 100644
index 0000000..428fa68
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-libraries/xiltimer_git.bb
@@ -0,0 +1,12 @@
+inherit esw python3native
+
+ESW_COMPONENT_SRC = "/lib/sw_services/xiltimer/src/"
+ESW_COMPONENT_NAME = "libxiltimer.a"
+
+DEPENDS += "dtc-native python3-dtc-native python3-pyyaml-native libxil device-tree"
+
+do_configure_prepend() {
+ # This script should also not rely on relative paths and such
+ cd ${S}
+ nativepython3 ${S}/scripts/lib_parser.py -d ${DTBFILE} -o ${OECMAKE_SOURCEPATH}
+}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/gcc/gcc-cross_%.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/gcc/gcc-cross_%.bbappend
deleted file mode 100644
index bfcda3d..0000000
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/gcc/gcc-cross_%.bbappend
+++ /dev/null
@@ -1,18 +0,0 @@
-# By using tclibc-baremetal we loose sysroot functionality due to some
-# append/override behavior We need to get that back , the following append
-# overrides everything on EXTRA_OECONF for gcc cross target it avoids
-# overlapping with crt0 because of --enable-linker-id from EXTRA_OECONF
-
-EXTRA_OECONF_BASE_pn-gcc-cross-${TARGET_ARCH}_append = " \
- ${LTO} \
- ${SSP} \
- --enable-libitm \
- --disable-bootstrap \
- --disable-libmudflap \
- --with-system-zlib \
- --with-ppl=no \
- --with-cloog=no \
- --enable-checking=release \
- --enable-cheaders=c_global \
- --without-isl \
-"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/libgloss_3.0.0.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/libgloss_3.0.0.bbappend
deleted file mode 100644
index fc4db88..0000000
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/libgloss_3.0.0.bbappend
+++ /dev/null
@@ -1,10 +0,0 @@
-do_configure_prepend_microblaze() {
- # hack for microblaze, which needs xilinx.ld to literally do any linking (its hard coded in its LINK_SPEC)
- export CC="${CC} -L${S}/libgloss/microblaze"
-}
-
-
-# We use libgloss as if it was libxil, to avoid linking issues
-do_install_append_zynqmp-pmu(){
- cp ${D}/${libdir}/libgloss.a ${D}/${libdir}/libxil.a
-}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/newlib_3.0.0.bbappend b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/newlib_3.0.0.bbappend
deleted file mode 100644
index e5249ab..0000000
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/newlib/newlib_3.0.0.bbappend
+++ /dev/null
@@ -1,4 +0,0 @@
-do_configure_prepend_microblaze() {
- # hack for microblaze, which needs xilinx.ld to literally do any linking (its hard coded in its LINK_SPEC)
- export CC="${CC} -L${S}/libgloss/microblaze"
-}
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm-standalone_git.bb b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm-standalone_git.bb
new file mode 100644
index 0000000..25988eb
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm-standalone_git.bb
@@ -0,0 +1,32 @@
+inherit esw deploy
+
+ESW_COMPONENT_SRC = "/lib/sw_apps/versal_plm/src/"
+
+DEPENDS += "xilstandalone xiltimer xilffs xilpdi xilplmi xilloader xilpm xilsecure xilsem"
+
+do_install() {
+ install -d ${D}/${base_libdir}/firmware
+ # Note that we have to make the ELF executable for it to be stripped
+ install -m 0755 ${B}/versal_plm* ${D}/${base_libdir}/firmware
+}
+
+PLM_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+PLM_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
+
+do_deploy() {
+
+ # Not a huge fan of deploying from package but we want the stripped elf to be deployed.
+ # We could, technically create another task that runs after do_install that strips it but it
+ # seems unnecessarily convoluted, unless there's an objection on performing do_install we
+ # should do it this way since it easier to keep up with changes in oe-core.
+
+ install -Dm 0644 ${WORKDIR}/package/${base_libdir}/firmware/versal_plm.elf ${DEPLOYDIR}/${PLM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PLM_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${WORKDIR}/package/${base_libdir}/firmware/versal_plm.elf ${WORKDIR}/package/${base_libdir}/firmware/versal_plm.bin
+ install -m 0644 ${WORKDIR}/package/${base_libdir}/firmware/versal_plm.bin ${DEPLOYDIR}/${PLM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PLM_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+}
+
+addtask deploy before do_build after do_package
+
+FILES_${PN} = "${base_libdir}/firmware/plm*"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm_2020.1.bb
similarity index 62%
copy from meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
copy to meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm_2020.1.bb
index 030de05..c5a68ef 100644
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/plm/plm_2020.1.bb
@@ -1,20 +1,18 @@
inherit deploy
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=e9b6d01d45faccfbf05d8caea53f0a35"
+LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=39ab6ab638f4d1836ba994ec6852de94"
-XILINX_RELEASE_VERSION = "v2019.1"
-SRCREV = "26c14d9861010a0e3a55c73fb79efdb816eb42ca"
+SRCREV = "e8db5fb118229fdc621e0ec7848641a23bf60998"
PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
SRC_URI = "git://github.com/Xilinx/embeddedsw.git;protocol=https;nobranch=1"
COMPATIBLE_HOST = "microblaze.*-elf"
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE_zynqmp-pmu = "zynqmp-pmu"
+COMPATIBLE_MACHINE = "versal-mb"
-S = "${WORKDIR}/git/lib/sw_apps/zynqmp_pmufw/src"
+S = "${WORKDIR}/git/lib/sw_apps/versal_plm/src"
# The makefile does not handle parallelization
PARALLEL_MAKE = ""
@@ -30,8 +28,8 @@
EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects"
ARCHIVER = "${AR}"
-BSP_DIR ?= "${S}/../misc/zynqmp_pmufw_bsp"
-BSP_TARGETS_DIR ?= "${BSP_DIR}/psu_pmu_0/libsrc"
+BSP_DIR ?= "${S}/../misc/versal_plm_bsp"
+BSP_TARGETS_DIR ?= "${BSP_DIR}/psv_pmc_0/libsrc"
def bsp_make_vars(d):
s = ["COMPILER", "CC", "COMPILER_FLAGS", "EXTRA_COMPILER_FLAGS", "ARCHIVER", "AR", "AS"]
@@ -56,15 +54,15 @@
:
}
-PMU_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
+PLM_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+PLM_BASE_NAME[vardepsexclude] = "DATETIME"
do_deploy() {
- install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
- ${OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
- install -m 0644 ${B}/executable.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+ install -Dm 0644 ${B}/plm.elf ${DEPLOYDIR}/${PLM_BASE_NAME}.elf
+ ln -sf ${PLM_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${B}/plm.elf ${B}/plm.bin
+ install -m 0644 ${B}/plm.bin ${DEPLOYDIR}/${PLM_BASE_NAME}.bin
+ ln -sf ${PLM_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
}
addtask deploy before do_build after do_install
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2020.1.bb
similarity index 89%
rename from meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
rename to meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2020.1.bb
index 030de05..3ed9c55 100644
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2020.1.bb
@@ -1,18 +1,15 @@
inherit deploy
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=e9b6d01d45faccfbf05d8caea53f0a35"
+LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=39ab6ab638f4d1836ba994ec6852de94"
-XILINX_RELEASE_VERSION = "v2019.1"
-SRCREV = "26c14d9861010a0e3a55c73fb79efdb816eb42ca"
+SRCREV = "e8db5fb118229fdc621e0ec7848641a23bf60998"
PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
SRC_URI = "git://github.com/Xilinx/embeddedsw.git;protocol=https;nobranch=1"
COMPATIBLE_HOST = "microblaze.*-elf"
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE_zynqmp-pmu = "zynqmp-pmu"
-
+COMPATIBLE_MACHINE = "microblaze-pmu"
S = "${WORKDIR}/git/lib/sw_apps/zynqmp_pmufw/src"
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/psm-firmware/psm-firmware_2020.1.bb
similarity index 63%
copy from meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
copy to meta-xilinx/meta-xilinx-standalone/recipes-standalone/psm-firmware/psm-firmware_2020.1.bb
index 030de05..cd346b1 100644
--- a/meta-xilinx/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2019.1.bb
+++ b/meta-xilinx/meta-xilinx-standalone/recipes-standalone/psm-firmware/psm-firmware_2020.1.bb
@@ -1,20 +1,18 @@
inherit deploy
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=e9b6d01d45faccfbf05d8caea53f0a35"
+LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=39ab6ab638f4d1836ba994ec6852de94"
-XILINX_RELEASE_VERSION = "v2019.1"
-SRCREV = "26c14d9861010a0e3a55c73fb79efdb816eb42ca"
+SRCREV = "e8db5fb118229fdc621e0ec7848641a23bf60998"
PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
SRC_URI = "git://github.com/Xilinx/embeddedsw.git;protocol=https;nobranch=1"
COMPATIBLE_HOST = "microblaze.*-elf"
-COMPATIBLE_MACHINE = "^$"
-COMPATIBLE_MACHINE_zynqmp-pmu = "zynqmp-pmu"
+COMPATIBLE_MACHINE = "versal-mb"
-S = "${WORKDIR}/git/lib/sw_apps/zynqmp_pmufw/src"
+S = "${WORKDIR}/git/lib/sw_apps/versal_psmfw/src"
# The makefile does not handle parallelization
PARALLEL_MAKE = ""
@@ -30,8 +28,8 @@
EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects"
ARCHIVER = "${AR}"
-BSP_DIR ?= "${S}/../misc/zynqmp_pmufw_bsp"
-BSP_TARGETS_DIR ?= "${BSP_DIR}/psu_pmu_0/libsrc"
+BSP_DIR ?= "${S}/../misc/versal_psmfw_bsp"
+BSP_TARGETS_DIR ?= "${BSP_DIR}/psv_psm_0/libsrc"
def bsp_make_vars(d):
s = ["COMPILER", "CC", "COMPILER_FLAGS", "EXTRA_COMPILER_FLAGS", "ARCHIVER", "AR", "AS"]
@@ -56,15 +54,15 @@
:
}
-PMU_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
+PSM_FIRMWARE_BASE_NAME ?= "${BPN}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+PSM_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
do_deploy() {
- install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
- ${OBJCOPY} -O binary ${B}/executable.elf ${B}/executable.bin
- install -m 0644 ${B}/executable.bin ${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.bin
- ln -sf ${PMU_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
+ install -Dm 0644 ${B}/psmfw.elf ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.elf
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${BPN}-${MACHINE}.elf
+ ${OBJCOPY} -O binary ${B}/psmfw.elf ${B}/psmfw.bin
+ install -m 0644 ${B}/psmfw.bin ${DEPLOYDIR}/${PSM_FIRMWARE_BASE_NAME}.bin
+ ln -sf ${PSM_FIRMWARE_BASE_NAME}.bin ${DEPLOYDIR}/${BPN}-${MACHINE}.bin
}
addtask deploy before do_build after do_install
diff --git a/meta-xilinx/meta-xilinx-standalone/scripts/microblaze_dtb.py b/meta-xilinx/meta-xilinx-standalone/scripts/microblaze_dtb.py
new file mode 100644
index 0000000..aba7249
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-standalone/scripts/microblaze_dtb.py
@@ -0,0 +1,174 @@
+import argparse
+import libfdt
+import os
+import sys
+
+# Format: FEATURE : (dtb property, condition_operator, condition_value)
+# If dtb property is None, then the item is always on
+#
+# If the condition_operator is None, then enable if it exists for existance
+#
+# If the condition_operator is '!', and condition_value is None then enable if
+# if is not defined
+#
+# Otherwise 'condition' and value are evaluated by type.
+
+microblaze_tune_features = {
+ 'microblaze' : (None, None, None),
+ 'bigendian': ('xlnx,endianness', '!', 1),
+ '64-bit' : ('xlnx,data-size', '=', 64),
+ 'barrel-shift': ('xlnx,use-barrel', '=', 1),
+ 'pattern-compare': ('xlnx,use-pcmp-instr', '=', 1),
+ 'reorder' : ('xlnx,use-reorder-instr', '!', 0),
+ 'frequency-optimized': ('xlnx,area-optimized', '=', 2),
+ 'multiply-low': ('xlnx,use-hw-mul', '=', 1),
+ 'multiply-high': ('xlnx,use-hw-mul', '=', 2),
+ 'divide-high': ('xlnx,use-div', '=', 1),
+ 'fpu-soft': ('xlnx,use-fpu', '!', [1,2]),
+ 'fpu-hard': ('xlnx,use-fpu', '=', 1),
+ 'fpu-hard-extended':('xlnx,use-fpu', '=', 2),
+}
+
+def processProperties(fdt, node):
+ TUNE_FEATURES = []
+
+ for feature in microblaze_tune_features:
+ (property, cop, cvalue) = microblaze_tune_features[feature]
+
+ if not property:
+ TUNE_FEATURES.append(feature)
+
+ # Special processing to get the version
+ if feature == "microblaze":
+ ver = microblazeVersion(fdt, node)
+ if ver:
+ TUNE_FEATURES.append(ver)
+ continue
+
+ prop_value = fdt.getprop( node, property, libfdt.QUIET_NOTFOUND)
+
+ if not prop_value or prop_value == -1:
+ if cop == '!':
+ if not cvalue:
+ TUNE_FEATURES.append(ver)
+ continue
+ continue
+
+ # If no operator
+ if not cop or (cop == '=' and not cvalue):
+ TUNE_FEATURES.append(feature)
+ continue
+
+ ctype = type(cvalue)
+ if ctype == type(list()):
+ val_list = cvalue
+ else:
+ val_list = [ cvalue ]
+
+ result = False
+ for value in val_list:
+ ctype = type(value)
+ if ctype == type(int()):
+ val = prop_value.as_uint32()
+ else:
+ raise TypeError('Unknown type %s' % ctype)
+
+ if cop == '!':
+ if value != val:
+ result = True
+ else:
+ result = False
+ continue
+
+ if cop == '=':
+ if value == val:
+ result = True
+ else:
+ result = False
+ continue
+
+ if result == True:
+ TUNE_FEATURES.append(feature)
+
+ return TUNE_FEATURES
+
+def microblazeVersion(fdt, node):
+ version = None
+
+ val = fdt.getprop( node, 'model', libfdt.QUIET_NOTFOUND)
+
+ if val and val != -1:
+ val = fdt.getprop( node, 'model' ).as_str()
+ version = val[val.find('microblaze,') + 11:]
+
+ if version.startswith('8'):
+ # Strip 8.xx.y, to just 8.xx
+ v = version.split('.')
+ version = '.'.join(v[0:2])
+
+ version = 'v' + version
+
+ return version
+
+def MicroblazeConfig(dtbfile, out):
+ fdt = libfdt.Fdt(open(dtbfile, mode='rb').read())
+
+ cpu = -1
+ while (True):
+ cpu = cpu + 1
+ try:
+ node = fdt.path_offset('/cpus/cpu@%d' % cpu)
+
+ try:
+ prop = fdt.getprop( node, 'compatible' )
+
+ prop_val = prop[:-1].decode('utf-8').split('\x00')
+
+ microblaze = False
+ for val in prop_val:
+ if "microblaze" in val:
+ microblaze = True
+ break
+
+ if not microblaze:
+ continue
+
+ # Construct TUNE_FEATURE here
+ TUNE_FEATURES = processProperties(fdt, node)
+
+ out.write('AVAILTUNES += "microblaze-cpu%s"\n' % (cpu))
+ out.write('TUNE_FEATURES_tune-microblaze-cpu%s = "%s"\n' % (cpu, ' '.join(TUNE_FEATURES)))
+ out.write('PACKAGE_EXTRA_ARCHS_tune-microblaze-cpu%s = "${TUNE_PKGARCH}"\n' % (cpu))
+
+ except Exception as e:
+ sys.stderr.write("Exception looking at properties: %s\n" % e)
+
+ continue
+
+ except Exception as e:
+ # CPUs SHOULD be consecutive w/o gaps, so no more to search
+ break
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='Generate MicroBlaze TUNE_FEATURES')
+
+ parser.add_argument('-d', '--dtb-file', action='store',
+ help='DTB file to process')
+
+ parser.add_argument('-o', '--output', action='store',
+ help='Output file to store TUNE_FEATURE settings')
+
+ args = parser.parse_args()
+
+ if not args.dtb_file:
+ sys.stderr.write('ERROR: You must specify a DTB_FILE to process.\n')
+ sys.exit(1)
+
+ outputf = sys.stdout
+ if args.output:
+ if os.path.exists(args.output):
+ sys.stderr.write('ERROR: The output file "%s" exists!\n' % args.output)
+ sys.exit(1)
+ outputf = open(args.output, 'w')
+
+ MicroblazeConfig(args.dtb_file, outputf)