summaryrefslogtreecommitdiff
path: root/include/rom.sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/rom.sh')
-rw-r--r--include/rom.sh66
1 files changed, 48 insertions, 18 deletions
diff --git a/include/rom.sh b/include/rom.sh
index 7ffd685d..ed3dddf2 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -8,6 +8,7 @@
mkserprog()
{
+ [ "$_f" = "-d" ] && return 0 # dry run
basename -as .h "$serdir/"*.h > "$TMPDIR/ser" || $err "!mk $1 $TMPDIR"
while read -r sertarget; do
@@ -26,25 +27,53 @@ mkserprog()
mkpayload_grub()
{
eval `setvars "" grub_modules grub_install_modules`
- eval `setcfg "$grubdata/module/$tree"`
+ $dry eval `setcfg "$grubdata/module/$tree"`
- x_ rm -f "$cdir/grub.elf"
+ $dry x_ rm -f "$srcdir/grub.elf"
- "${cdir}/grub-mkstandalone" --grub-mkimage="${cdir}/grub-mkimage" \
- -O i386-coreboot -o "${cdir}/grub.elf" -d "${cdir}/grub-core/" \
+ $dry "$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \
+ -O i386-coreboot -o "$srcdir/grub.elf" -d "${srcdir}/grub-core/" \
--fonts= --themes= --locales= --modules="$grub_modules" \
--install-modules="$grub_install_modules" \
- "/boot/grub/grub_default.cfg=${cdir}/.config" \
+ "/boot/grub/grub_default.cfg=${srcdir}/.config" \
"/boot/grub/grub.cfg=$grubdata/memdisk.cfg" \
"/background.png=$grubdata/background/background1280x800.png" || \
$err "$tree: cannot build grub.elf"; return 0
}
+mkvendorfiles()
+{
+ check_coreboot_utils "$tree"
+ printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \
+ $err "!mk $srcdir .coreboot-version"
+ [ -z "$mode" ] && [ "$target" != "$tree" ] && \
+ x_ ./vendor download $target; return 0
+}
+
+check_coreboot_utils()
+{
+ for util in cbfstool ifdtool; do
+ [ "$badhash" = "n" ] || rm -f "elf/$util/$1/$util" || \
+ $err "!rm badelf elf/$util/$1/$util"
+ e "elf/$util/$1/$util" f && continue
+
+ utilelfdir="elf/$util/$1"
+ utilsrcdir="src/coreboot/$1/util/$util"
+
+ utilmode="" && [ -n "$mode" ] && utilmode="clean"
+ x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
+ [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ] && \
+ x_ mkdir -p "$utilelfdir" && \
+ x_ cp "$utilsrcdir/$util" "elf/$util/$1"
+ [ -z "$mode" ] || x_ rm -Rf "$utilelfdir"; continue
+ done; return 0
+}
+
mkcorebootbin()
{
[ "$target" = "$tree" ] && return 0
- tmprom="$cdir/build/coreboot.rom"
+ tmprom="$srcdir/build/coreboot.rom"
initmode="${defconfig##*/}"; displaymode="${initmode##*_}"
initmode="${initmode%%_*}"
[ -n "$displaymode" ] && displaymode="_$displaymode"
@@ -54,7 +83,7 @@ mkcorebootbin()
[ "$payload_uboot" = "y" ] || payload_seabios="y"
[ "$payload_grub" = "y" ] && payload_seabios="y"
[ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "y" ] && \
- $err "$target: U-Boot and SeaBIOS/GRUB are both enabled."
+ $dry $err "$target: U-Boot and SeaBIOS/GRUB are both enabled."
[ -z "$grub_scan_disk" ] && grub_scan_disk="nvme ahci ata"
@@ -63,18 +92,19 @@ mkcorebootbin()
[ "$payload_memtest" = "y" ] || payload_memtest="n"
[ "$(uname -m)" = "x86_64" ] || payload_memtest="n"
-
- x_ ./update trees -b coreboot utils $tree
-
- [ "$payload_seabios" = "y" ] && pname="seabios" && add_seabios
- [ "$payload_uboot" = "y" ] && pname="uboot" && add_uboot
-
+ if grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then
+ [ "$payload_seabios" = "y" ] && pname="seabios" && \
+ $dry add_seabios
+ [ "$payload_uboot" = "y" ] && pname="uboot" && $dry add_uboot
+ else
+ pname="custom" # coreboot's build system added payloads
+ fi
newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom"
- x_ mkdir -p "${newrom%/*}"; x_ mv "$tmprom" "$newrom"
+ $dry x_ mkdir -p "${newrom%/*}"; $dry x_ mv "$tmprom" "$newrom"
[ "$XBMK_RELEASE" = "y" ] || return 0
- mksha512sum "$newrom" "vendorhashes"
- ./vendor inject -r "$newrom" -b "$target" -n nuke || $err "!n $newrom"
+ $dry mksha512sum "$newrom" "vendorhashes"; $dry ./vendor inject \
+ -r "$newrom" -b "$target" -n nuke || $err "!nuke $newrom"
}
add_seabios()
@@ -117,6 +147,6 @@ add_uboot()
mkcoreboottar()
{
- [ "$target" = "$tree" ] && return 0
- [ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/$target"; return 0
+ [ "$target" = "$tree" ] && return 0; [ "$XBMK_RELEASE" = "y" ] && \
+ [ "$release" != "n" ] && $dry mkrom_tarball "bin/$target"; return 0
}