diff options
Diffstat (limited to 'script')
| -rwxr-xr-x | script/roms | 30 | ||||
| -rwxr-xr-x | script/trees | 30 | 
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 | 
