summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
Diffstat (limited to 'script')
-rwxr-xr-xscript/roms30
-rwxr-xr-xscript/trees30
2 files changed, 38 insertions, 22 deletions
diff --git a/script/roms b/script/roms
index 1e596192..7e5e1be6 100755
--- a/script/roms
+++ b/script/roms
@@ -12,7 +12,6 @@ set -u -e
seavgabiosrom="elf/seabios/default/libgfxinit/vgabios.bin"
grub_background="background1280x800.png"
-grubelf="elf/grub/grub.elf"
cfgsdir="config/coreboot"
picosrc="src/pico-serprog"
picosdk="src/pico-sdk"
@@ -23,7 +22,7 @@ stm32src="src/stm32-vserprog"
pv="payload_uboot payload_grub_withseabios payload_seabios payload_memtest t"
pv="$pv payload_seabios_withgrub payload_seabios_grubonly payload_grub mt86bin"
v="romdir cbrom initmode displaymode cbcfg targetdir tree keymaps release"
-v="$v grub_timeout ubdir board grub_scan_disk uboot_config"
+v="$v grub_timeout ubdir board grub_scan_disk uboot_config grubtree grubelf"
eval "$(setvars "n" $pv serprog)"
eval "$(setvars "" $v boards _displaymode _payload _keyboard all targets \
serprog_boards_dir _scandisk)"
@@ -172,6 +171,9 @@ configure_target()
[ -z "$_grub_scan_disk" ] && _grub_scan_disk="nvme ahci ata"
grub_scan_disk="${_grub_scan_disk# }"
+ [ -n "$grubtree" ] || grubtree="default"
+ grubelf="elf/grub/$grubtree/payload/grub.elf"
+
[ -z "$tree" ] && $err "$board: tree not defined"
[ "$payload_memtest" != "y" ] && payload_memtest="n"
@@ -225,24 +227,14 @@ build_payloads()
build_grub_payload()
{
- x_ mkdir -p elf/grub
-
- for keymapfile in config/grub/keymap/*.gkb; do
+ for keymapfile in "$grubdata/keymap/"*.gkb; do
[ -f "$keymapfile" ] && keymaps="$keymaps $keymapfile"
done
- [ -z "$_keyboard" ] || [ -f "$grubcfgsdir/keymap/$_keyboard.gkb" ] || \
+ [ -z "$_keyboard" ] || [ -f "$grubdata/keymap/$_keyboard.gkb" ] || \
$err "build_grub_payload: $_keyboard layout not defined"
- [ -n "$_keyboard" ] && keymaps="$grubcfgsdir/keymap/$_keyboard.gkb"
- [ -f "$grubelf" ] && return 0
- [ -f "src/grub/grub-mkstandalone" ] || x_ ./update trees -b grub
-
- ./src/grub/grub-mkstandalone --grub-mkimage="src/grub/grub-mkimage" \
- -O i386-coreboot -o "elf/grub/grub.elf" -d "src/grub/grub-core/" \
- --fonts= --themes= --locales= --modules="$grub_modules" \
- --install-modules="$grub_install_modules" \
- "/boot/grub/grub.cfg=$grubcfgsdir/config/grub_memdisk.cfg" \
- "/boot/grub/grub_default.cfg=$grubcfgsdir/config/grub.cfg" || \
- $err "could not generate grub.elf"
+ [ -n "$_keyboard" ] && keymaps="$grubdata/keymap/$_keyboard.gkb"
+
+ [ -f "$grubelf" ] || x_ ./update trees -b grub $grubtree; return 0
}
build_uboot_payload()
@@ -343,7 +335,7 @@ build_grub_roms()
# we only need insert background.png once, for each coreboot config:
if [ "$displaymode" = "vesafb" ] || \
[ "$displaymode" = "corebootfb" ]; then
- backgroundfile="config/grub/background/$grub_background"
+ backgroundfile="$grubdata/background/$grub_background"
"$cbfstool" "$tmprom" add -f "$backgroundfile" -n \
background.png -t raw || $err "!bg, $backgroundfile"
fi
@@ -376,7 +368,7 @@ build_grub_roms()
if [ "$payload_seabios_withgrub" = "y" ] && \
[ "$payload1" != "grub" ]; then
x_ "$cbfstool" "$tmpgrubrom" add \
- -f "config/grub/bootorder" -n bootorder -t raw
+ -f "$grubdata/bootorder" -n bootorder -t raw
x_ cprom "$tmpgrubrom" "${newrom%.rom}_grubfirst.rom"
if [ "$payload_seabios_grubonly" = "y" ]; then
x_ "$cbfstool" "$tmpgrubrom" add-int -i 0 \
diff --git a/script/trees b/script/trees
index 80037bd8..1075b220 100755
--- a/script/trees
+++ b/script/trees
@@ -178,9 +178,12 @@ check_config()
handle_makefile()
{
- x_ make clean -C "$cdir" && x_ cp "$config" "$cdir/.config"
- [ -n "$mode" ] || make -C "$cdir" silentoldconfig || \
- make -C "$cdir" oldconfig || :
+ [ "$project" = "grub" ] && [ "${mode%config}" != "$mode" ] && return 0
+
+ check_makefile "$cdir" && x_ make clean -C "$cdir"
+ x_ cp "$config" "$cdir/.config"
+ [ -n "$mode" ] || [ "$project" = "grub" ] || make -C "$cdir" \
+ silentoldconfig || make -C "$cdir" oldconfig || :
run_make_command || $err "handle_makefile $cdir: no makefile!"
@@ -204,6 +207,8 @@ run_make_command()
make -C "$cdir" $mode -j$threads $makeargs || $err "!mk $cdir $mode"
+ [ "$project" = "grub" ] && [ -z "$mode" ] && mkpayload_grub
+
[ "$mode" != "clean" ] && return 0
make -C "$cdir" distclean 2>/dev/null || :
}
@@ -232,6 +237,25 @@ check_makefile()
[ -f "$1/GNUmakefile" ] || return 1; return 0
}
+mkpayload_grub()
+{
+ [ -f "$grubdata/module/$tree" ] || $err "$tree: grub modules missing"
+ x_ rm -f "$cdir/grub.elf"
+
+ eval "$(setvars "" grub_modules grub_install_modules)"
+
+ . "$grubdata/module/$tree" || $err "$tree: !source grub modules"
+
+ [ -z "$grub_install_modules" ] && $err "$tree: install modules unset"
+ [ -z "$grub_modules" ] && $err "$tree: modules unset"
+
+ "${cdir}/grub-mkstandalone" --grub-mkimage="${cdir}/grub-mkimage" \
+ -O i386-coreboot -o "${cdir}/grub.elf" -d "${cdir}/grub-core/" \
+ --fonts= --themes= --locales= --modules="$grub_modules" \
+ --install-modules="$grub_install_modules" \
+ "/boot/grub/grub.cfg=${cdir}/.config" || $err "$tree: !mkgrub"
+}
+
copy_elf()
{
while read -r f; do