summaryrefslogtreecommitdiff
path: root/script/build/fw/grub
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-10-07 06:03:51 +0100
committerLeah Rowe <leah@libreboot.org>2023-10-07 06:04:45 +0100
commitba324d8c077fd2a649ae39c62da353d197e53a78 (patch)
treeda759dfe14071efcbca03c04e4e4c630044cec20 /script/build/fw/grub
parent4708da2ca9a72520f39749b3b34b0bdc2fbfa15d (diff)
build/coreboot/grub: move to build/fw/grub
This eliminates an additional subdirectory. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script/build/fw/grub')
-rwxr-xr-xscript/build/fw/grub81
1 files changed, 81 insertions, 0 deletions
diff --git a/script/build/fw/grub b/script/build/fw/grub
new file mode 100755
index 00000000..49b8b416
--- /dev/null
+++ b/script/build/fw/grub
@@ -0,0 +1,81 @@
+#!/usr/bin/env sh
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe <leah@libreboot.org>
+
+[ "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
+}
+
+handle_dependencies()
+{
+ [ -d "src/grub" ] || x_ ./update project repo 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 $@