#!/usr/bin/env sh # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e . "include/err.sh" elfdir="elf/grub" grubcfgsdir="config/grub" layoutdir="/boot/grub/layouts" . "${grubcfgsdir}/modules.list" main() { handle_dependencies build_keymap_configs build_grub_payload printf "GRUB files now available under directory: %s\n" "${elfdir}" } handle_dependencies() { [ -d "src/grub" ] || x_ ./update trees -f grub [ -f "src/grub/grub-mkstandalone" ] || build_grub_utils x_ mkdir -p "${elfdir}" x_ rm -f "${elfdir}/"* } build_grub_utils() { ( x_ cd "src/grub" [ ! -d Makefile ] || x_ make distclean x_ ./bootstrap --gnulib-srcdir=gnulib/ --no-git x_ ./autogen.sh x_ ./configure --with-platform=coreboot x_ make -j$(nproc) FS_PAYLOAD_MODULES="" ) } build_keymap_configs() { for keylayoutfile in "${grubcfgsdir}/keymap/"*.gkb; do [ -f "${keylayoutfile}" ] || continue keymap="${keylayoutfile##${grubcfgsdir}/keymap/}" keymap="${keymap%.gkb}" x_ printf "keymap %s\n" "${keymap}" > \ "${elfdir}/keymap_${keymap}.cfg" done } build_grub_payload() { ./src/grub/grub-mkstandalone \ --grub-mkimage="src/grub/grub-mkimage" \ -O i386-coreboot \ -o "${elfdir}/grub.elf" \ -d "src/grub/grub-core/" \ --fonts= --themes= --locales= \ --modules="${grub_modules}" \ --install-modules="${grub_install_modules}" \ "${layoutdir}/colemak.gkb=${grubcfgsdir}/keymap/colemak.gkb" \ "${layoutdir}/deqwertz.gkb=${grubcfgsdir}/keymap/deqwertz.gkb" \ "${layoutdir}/esqwerty.gkb=${grubcfgsdir}/keymap/esqwerty.gkb" \ "${layoutdir}/frazerty.gkb=${grubcfgsdir}/keymap/frazerty.gkb" \ "${layoutdir}/frdvbepo.gkb=${grubcfgsdir}/keymap/frdvbepo.gkb" \ "${layoutdir}/itqwerty.gkb=${grubcfgsdir}/keymap/itqwerty.gkb" \ "${layoutdir}/svenska.gkb=${grubcfgsdir}/keymap/svenska.gkb" \ "${layoutdir}/trqwerty.gkb=${grubcfgsdir}/keymap/trqwerty.gkb" \ "${layoutdir}/ukdvorak.gkb=${grubcfgsdir}/keymap/ukdvorak.gkb" \ "${layoutdir}/ukqwerty.gkb=${grubcfgsdir}/keymap/ukqwerty.gkb" \ "${layoutdir}/usdvorak.gkb=${grubcfgsdir}/keymap/usdvorak.gkb" \ "${layoutdir}/usqwerty.gkb=${grubcfgsdir}/keymap/usqwerty.gkb" \ "/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \ "/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" || \ err "build_grub_elf: cannot build grub payload (grub-mkstandalone)" } main $@