mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-14 15:29:35 +02:00
quackboot (same idea as klompboot), from audit6
this is based directly on the audit6 final revision. same idea as klompboot. remove u-boot and arm support, remove pico-serprog, remove support for making release archives, and basically see how small the build system can possible get. quackboot *beats* the very first klompboot, at 790 lines, because klompboot 1 was just over 800 lines. klompboot 2 was 701 lines. vendor file logic is about 200 sloc so the next klompboot will be about 600 lines. this is the very first quackboot. Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+23
-78
@@ -6,32 +6,12 @@
|
||||
# Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
# Copyright (c) 2023 Riku Viitanen <riku.viitanen@protonmail.com>
|
||||
|
||||
mkserprog()
|
||||
{
|
||||
[ "$_f" = "-d" ] && return 0 # dry run
|
||||
basename -as .h "$serdir/"*.h > "$TMPDIR/ser" || $err "!mk $1 $TMPDIR"
|
||||
|
||||
while read -r sertarget; do
|
||||
[ "$1" = "rp2040" ] && x_ cmake -DPICO_BOARD="$sertarget" \
|
||||
-DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" \
|
||||
&& x_ cmake --build "$sersrc/build"
|
||||
[ "$1" = "stm32" ] && x_ make -C "$sersrc" \
|
||||
libopencm3-just-make BOARD=$sertarget && x_ make -C \
|
||||
"$sersrc" BOARD=$sertarget; x_ mkdir -p "bin/serprog_$1"
|
||||
x_ mv "$serx" "bin/serprog_$1/serprog_$sertarget.${serx##*.}"
|
||||
done < "$TMPDIR/ser"
|
||||
|
||||
[ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/serprog_$1"; return 0
|
||||
}
|
||||
|
||||
mkpayload_grub()
|
||||
{
|
||||
eval `setvars "" grub_modules grub_install_modules`
|
||||
$dry eval `setcfg "$grubdata/module/$tree"`
|
||||
|
||||
$dry x_ rm -f "$srcdir/grub.elf"
|
||||
|
||||
$dry "$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \
|
||||
$dry x_ rm -f "$srcdir/grub.elf"; $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" \
|
||||
@@ -43,68 +23,49 @@ mkpayload_grub()
|
||||
|
||||
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_cbfstool "$tree"; printf "69\n" > "$srcdir/.coreboot-version" \
|
||||
|| $err "!cbver $srcdir"; [ -z "$mode" ] && \
|
||||
[ "$target" != "$tree" ] && x_ ./vendor download $target; return 0
|
||||
}
|
||||
|
||||
check_coreboot_utils()
|
||||
check_cbfstool()
|
||||
{
|
||||
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
|
||||
[ "$badhash" = "n" ] || rm -f "elf/cbfstool/$1/cbfstool" || \
|
||||
$err "!rm badelf elf/cbfstool/$1/cbfstool"
|
||||
e "elf/cbfstool/$1/cbfstool" f && return 0
|
||||
|
||||
utilelfdir="elf/$util/$1"
|
||||
utilsrcdir="src/coreboot/$1/util/$util"
|
||||
utilelfdir="elf/cbfstool/$1"
|
||||
utilsrcdir="src/coreboot/$1/util/cbfstool"
|
||||
|
||||
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
|
||||
utilmode="" && [ -n "$mode" ] && utilmode="clean"
|
||||
x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
|
||||
[ -z "$mode" ] && [ ! -f "$utilelfdir/cbfstool" ] && \
|
||||
x_ mkdir -p "$utilelfdir" && \
|
||||
x_ cp "$utilsrcdir/cbfstool" "elf/cbfstool/$1"
|
||||
[ -z "$mode" ] || x_ rm -Rf "$utilelfdir"; :
|
||||
}
|
||||
|
||||
mkcorebootbin()
|
||||
{
|
||||
[ "$target" = "$tree" ] && return 0
|
||||
|
||||
tmprom="$srcdir/build/coreboot.rom"
|
||||
initmode="${defconfig##*/}"; displaymode="${initmode##*_}"
|
||||
initmode="${initmode%%_*}"
|
||||
tmprom="$srcdir/build/coreboot.rom"; initmode="${defconfig##*/}";
|
||||
displaymode="${initmode##*_}"; initmode="${initmode%%_*}"
|
||||
[ -n "$displaymode" ] && displaymode="_$displaymode"
|
||||
cbfstool="elf/cbfstool/$tree/cbfstool"
|
||||
|
||||
[ -n "$uboot_config" ] || uboot_config="default"
|
||||
[ "$payload_uboot" = "y" ] || payload_seabios="y"
|
||||
[ "$payload_grub" = "y" ] && payload_seabios="y"
|
||||
[ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "y" ] && \
|
||||
$dry $err "$target: U-Boot and SeaBIOS/GRUB are both enabled."
|
||||
|
||||
[ -z "$grub_scan_disk" ] && grub_scan_disk="nvme ahci ata"
|
||||
|
||||
[ -n "$grubtree" ] || grubtree="default"
|
||||
grubelf="elf/grub/$grubtree/payload/grub.elf"
|
||||
|
||||
[ "$payload_memtest" = "y" ] || payload_memtest="n"
|
||||
[ "$(uname -m)" = "x86_64" ] || payload_memtest="n"
|
||||
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
|
||||
|
||||
pname="custom" && grep "CONFIG_PAYLOAD_NONE=y" "$defconfig" && \
|
||||
pname="seabios"; $dry add_seabios
|
||||
|
||||
newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom"
|
||||
$dry x_ mkdir -p "${newrom%/*}"; $dry x_ mv "$tmprom" "$newrom"
|
||||
|
||||
[ "$XBMK_RELEASE" = "y" ] || return 0
|
||||
$dry mksha512sum "$newrom" "vendorhashes"; $dry ./vendor inject \
|
||||
-r "$newrom" -b "$target" -n nuke || $err "!nuke $newrom"
|
||||
}
|
||||
|
||||
add_seabios()
|
||||
@@ -134,19 +95,3 @@ add_grub()
|
||||
cbfs "$tmprom" "$TMPDIR/tmpcfg" scan.cfg raw
|
||||
cbfs "$tmprom" "$grubdata/bootorder" bootorder raw
|
||||
}
|
||||
|
||||
add_uboot()
|
||||
{
|
||||
ubdir="elf/u-boot/$target/$uboot_config"
|
||||
ubootelf="$ubdir/u-boot.elf" && [ ! -f "$ubootelf" ] && \
|
||||
ubootelf="$ubdir/u-boot"
|
||||
[ -f "$ubootelf" ] || $err "cb/$target: Can't find u-boot"
|
||||
|
||||
cbfs "$tmprom" "$ubootelf" "fallback/payload"
|
||||
}
|
||||
|
||||
mkcoreboottar()
|
||||
{
|
||||
[ "$target" = "$tree" ] && return 0; [ "$XBMK_RELEASE" = "y" ] && \
|
||||
[ "$release" != "n" ] && $dry mkrom_tarball "bin/$target"; return 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user