for i in efi efi32 emu; do
    abinfo "Copy source tree for $i ..."
    cp -rv "$SRCDIR"/grub-${__UPSTREAM_VER} \
        "$SRCDIR"/build-$i
done

abinfo "Entering source tree for GRUB for EFI (32-bit) ..."
cd "$SRCDIR"/build-efi32

abinfo "Configuring GRUB for EFI (32-bit) ..."
./configure \
    --with-platform=efi \
    --target=i386 \
    --disable-efiemu \
    --disable-mm-debug \
    --enable-nls \
    --enable-device-mapper \
    --enable-cache-stats \
    --enable-boot-time \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --prefix=/usr \
    --bindir=/usr/bin \
    --sbindir=/usr/bin \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --datarootdir=/usr/share \
    --sysconfdir=/etc \
    --program-prefix= \
    --with-bootdir=/boot \
    --with-grubdir=grub \
    --enable-build-id \
    --disable-rpm-sort \
    --disable-werror

abinfo "Building GRUB for EFI (32-bit) ..."
make

abinfo "Installing GRUB for EFI (32-bit) ..."
make install \
    DESTDIR="$PKGDIR" \
    bashcompletiondir="/usr/share/bash-completion/completions"

(
    cd grub-core

    abinfo "Generating GRUB EFI image (32-bit) ..."
    grub-mkimage \
        -d . \
        -o "$PKGDIR"/usr/lib/grub/i386-efi/bootia32.efi \
        -O i386-efi \
        -p /boot/grub \
            ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus \
            iso9660 linux keylayouts memdisk minicmd part_apple ext2 \
            extcmd xfs xnu part_bsd part_gpt search search_fs_file \
            chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap \
            msdospart scsi loopback normal configfile gzio all_video efi_gop efi_uga \
            gfxterm gettext echo boot chain eval
)

abinfo "Entering source tree for GRUB for PC BIOS ..."
cd "$SRCDIR"/grub-${__UPSTREAM_VER}

abinfo "Configuring GRUB for PC BIOS ..."
./configure \
    --with-platform=pc \
    --target=i386 \
    --enable-efiemu \
    --disable-mm-debug \
    --enable-nls \
    --enable-device-mapper \
    --enable-cache-stats \
    --enable-boot-time \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --prefix=/usr \
    --bindir=/usr/bin \
    --sbindir=/usr/bin \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --datarootdir=/usr/share \
    --sysconfdir=/etc \
    --program-prefix= \
    --with-bootdir=/boot \
    --with-grubdir=grub \
    --enable-silent-rules \
    --enable-build-id \
    --disable-rpm-sort \
    --disable-werror

abinfo "Building GRUB for PC BIOS ..."
make

abinfo "Installing GRUB for PC BIOS ..."
make install \
    DESTDIR="$PKGDIR" \
    bashcompletiondir="/usr/share/bash-completion/completions"

abinfo "Entering source tree for GRUB for EFI ..."
cd "$SRCDIR"/build-efi

abinfo "Configuring GRUB for EFI ..."
./configure \
    --with-platform=efi \
    --target=x86_64 \
    --disable-efiemu \
    --disable-mm-debug \
    --enable-nls \
    --enable-device-mapper \
    --enable-cache-stats \
    --enable-boot-time \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --prefix=/usr \
    --bindir=/usr/bin \
    --sbindir=/usr/bin \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --datarootdir=/usr/share \
    --sysconfdir=/etc \
    --program-prefix= \
    --with-bootdir=/boot \
    --with-grubdir=grub \
    --enable-build-id \
    --disable-rpm-sort \
    --disable-werror

abinfo "Building GRUB for EFI ..."
make

abinfo "Installing GRUB for EFI ..."
make install \
    DESTDIR="$PKGDIR" \
    bashcompletiondir="/usr/share/bash-completion/completions"

(
    cd grub-core

    abinfo "Creating GRUB EFI image ..."
    grub-mkimage \
        -d . \
        -o "$PKGDIR"/usr/lib/grub/x86_64-efi/bootx64.efi \
        -O x86_64-efi \
        -p /boot/grub \
        ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus \
        iso9660 linux keylayouts memdisk minicmd part_apple ext2 \
        extcmd xfs xnu part_bsd part_gpt search search_fs_file \
        chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap \
        msdospart scsi loopback normal configfile gzio all_video efi_gop efi_uga \
        gfxterm gettext echo boot chain eval
)

abinfo "Entering source tree for GRUB for userspace emulation ..."
cd "$SRCDIR"/build-emu

abinfo "Configuring GRUB for userspace emulation ..."
./configure \
    --with-platform=emu \
    --target=x86_64 \
    --disable-mm-debug \
    --enable-nls \
    --enable-device-mapper \
    --enable-cache-stats \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --enable-grub-emu-usb=no \
    --enable-grub-emu-sdl=no \
    --disable-grub-emu-pci \
    --prefix=/usr \
    --bindir=/usr/bin \
    --sbindir=/usr/bin \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --datarootdir=/usr/share \
    --sysconfdir=/etc \
    --program-prefix= \
    --with-bootdir=/boot \
    --with-grubdir=grub \
    --enable-build-id \
    --disable-rpm-sort \
    --disable-werror

abinfo "Building GRUB for userspace emulation ..."
make

abinfo "Installing GRUB for userspace emulation ..."
make install \
    DESTDIR="$PKGDIR" \
    bashcompletiondir="/usr/share/bash-completion/completions"
