+ ifneq ($(CONFIG_EFI_IMAGES),)
+
+ define Image/cmdline/efi
+ $(subst $(SIGNATURE)-02,$2,$(call Image/cmdline/$(1)))
+ endef
+
+ define Image/Build/efi
+ # left here because the image builder doesnt need these
+ rm -rf $(KDIR)/root.grub/ || true
+ $(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
+ $(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
+ echo '(hd0) $(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img' > $(KDIR)/grub2/device.map
+ sed \
+ -e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
+ -e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
+ -e 's#@CMDLINE@#$(strip $(call Image/cmdline/efi,$(1),$(EFI_SIGNATURE)) $(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE))#g' \
+ -e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
+ -e 's#set root.*#search --file /boot/grub/$(SIGNATURE).cfg --set=root#g' \
+ ./grub.cfg > $(KDIR)/root.grub/boot/grub/grub.cfg
+ $(CP) $(KDIR)/root.grub/boot/grub/grub.cfg $(KDIR)/root.grub/boot/grub/$(SIGNATURE).cfg
+ grub-mkimage \
+ -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
+ -o $(KDIR)/grub2/core.img \
+ -O i386-pc \
+ -p '(hd0,gpt1)/boot/grub' \
+ -c $(KDIR)/root.grub/boot/grub/grub.cfg \
+ $(GRUB2_MODULES_LEGACY)
+ $(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img $(KDIR)/grub2/
+
+ # Build the efi grub version
+ rm -rf $(KDIR)/grub2.efi/ || true
+ $(INSTALL_DIR) $(KDIR)/grub2.efi/efi/boot/
+
+ # Generate the grub search root config (grub will search for the $(SIGNATURE).cfg file placed on the boot partition as grub does not support search of GPT UUID yet)
+ echo "search --file /boot/grub/$(SIGNATURE).cfg --set=root" > $(KDIR)/grub2.efi/efi/boot/grub.cfg
+ echo "configfile /boot/grub/grub.cfg" >> $(KDIR)/grub2.efi/efi/boot/grub.cfg
+
+ # Create the EFI grub binary
+ grub-mkimage-efi \
+ -d $(STAGING_DIR_HOST)/lib/grub/x86_64-efi \
+ -o $(KDIR)/grub2.efi/efi/boot/bootx64.efi \
+ -O x86_64-efi \
+ -p /efi/boot \
+ -c $(KDIR)/grub2.efi/efi/boot/grub.cfg \
+ $(GRUB2_MODULES_EFI)
+
+ # Generate the EFI VFAT bootfs
+ rm $(KDIR)/kernel.efi || true
+ mkfs.fat -C $(KDIR)/kernel.efi -S 512 1024
+ mcopy -s -i "$(KDIR)/kernel.efi" $(KDIR)/grub2.efi/* ::/
+
+ SIGNATURE="$(SIGNATURE)" PATH="$(TARGET_PATH)" ./gen_image_efi.sh \
+ $(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img \
+ $(CONFIG_TARGET_KERNEL_PARTSIZE) $(KDIR)/root.grub \
+ 1 $(KDIR)/kernel.efi \
+ 1 \
+ $(CONFIG_TARGET_ROOTFS_PARTSIZE) $(KDIR)/root.$(1) \
+ 256
+
+ # Setup legacy bios for hybrid MBR (optional)
+ grub-bios-setup \
+ --device-map="$(KDIR)/grub2/device.map" \
+ -d "$(KDIR)/grub2" \
+ -r "hd0,msdos1" \
+ "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+
+ # Convert the MBR partition to GPT and set EFI ROOTFS signature
+ dd if=/dev/zero of="$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img" bs=512 count=33 conv=notrunc oflag=append
+ sgdisk -g "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+ sgdisk -t 2:EF00 "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+ sgdisk -t 3:EF02 "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+ sgdisk -u 4:$(EFI_SIGNATURE) "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+ sgdisk -h "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+
+ # Setup EFI grub
+ grub-bios-setup-efi \
+ --device-map="$(KDIR)/grub2/device.map" \
+ -d "$(KDIR)/grub2" \
+ -r "hd0,gpt1" \
+ "$(BIN_DIR)/$(IMG_PREFIX)-uefi-gpt-$(1).img"
+ endef
+ endif
+
+ ifneq ($(CONFIG_GRUB_IMAGES),)