diff --git a/meta/recipes-support/wic/wic_0.3.1.bb b/meta/recipes-support/wic/wic_0.3.1.bb
index d9b4cc05c4bd..75fa734a9761 100644
--- a/meta/recipes-support/wic/wic_0.3.1.bb
+++ b/meta/recipes-support/wic/wic_0.3.1.bb
@@ -17,4 +17,34 @@ RDEPENDS:${PN} += " \
     python3-misc \
     "
 
+# wic shells out to these host-side tools when it runs, so they must be
+# installed alongside it.
+RDEPENDS:${PN} += " \
+    parted \
+    gptfdisk \
+    dosfstools \
+    mtools \
+    bmaptool \
+    btrfs-tools \
+    squashfs-tools \
+    e2fsprogs \
+    e2fsprogs-resize2fs \
+    util-linux \
+    tar \
+    erofs-utils \
+"
+
+# grub (grub-mkimage) assembles EFI boot images; it is only compatible
+# with, and only used by wic on, x86 and aarch64, so gate it to those
+# hosts. In particular grub is not compatible with arm hard-float, so an
+# unconditional dependency makes wic unbuildable there. syslinux is only
+# available on x86: its installer provides the isohybrid helper wic runs,
+# syslinux-misc carries ldlinux.sys/isohdpfx.bin/ldlinux.c32 and
+# syslinux-isolinux carries isolinux.bin, all of which wic copies into a
+# hybrid ISO.
+RDEPENDS:${PN}:append:x86 = " grub syslinux syslinux-misc syslinux-isolinux"
+RDEPENDS:${PN}:append:x86-64 = " grub syslinux syslinux-misc syslinux-isolinux"
+RDEPENDS:${PN}:append:x86-x32 = " grub syslinux syslinux-misc syslinux-isolinux"
+RDEPENDS:${PN}:append:aarch64 = " grub"
+
 BBCLASSEXTEND = "native nativesdk"
