xbmk: cleanup of recent code refactoring

be a bit less pedantic about if else clauses. leave the
big ones still with then on separate lines, where else
is specified.

also unroll a few condensed code lines where i missed
a few.

sloccount 2303 in lbmk. that's still only slightly bigger
than libreboot 20260907 which was 2180, and still much
smaller than libreboot 20230625 which was 3322.

this is *without* the condensed codelines, so now the only
thing that's reduced is the overall amount of logic present
in the build system.

and i should clarify that lbmk is presently much more powerful
than both of those two versions (20160907/20230625).

the 2016 one is useful for comparison historically, since that
was the last major version of libreboot prior to the great
second coming of leah in 2021; and the 2023 june release was
basically the last one before the great audits of 2023 to
2025 began.

not to brag (not much anyway), but all of this means that lbmk
is an insanely efficient build system, considering all the
features it has and what it does.

i unrolled the condensed code style in lbmk, making the scripts
a lot easier to read, because i received complainst about the
condensed style previously used; nicholas chin and alper nebi
yasak both told me that it sucked, and riku viitanen had hinted
at that same fact several months prior.

so hopefully now, lbmk is a bit nicer. those and other people
often find it challenging to challenge me because for reason
they assume i'll get upset and fly off the handle, but it's the
opposite. i want constant criticism, so that i know to improve!

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2025-09-24 13:19:23 +01:00
parent 03bf6c185b
commit 8347e2c85d
7 changed files with 195 additions and 313 deletions
+6 -2
View File
@@ -375,8 +375,12 @@ pybin()
pypath="$(findpath \
"$(command -v "$1" 2>/dev/null)" 2>/dev/null || :)"
[ -e "$pypath" ] && [ ! -d "$pypath" ] && \
[ -x "$pypath" ] && printf "%s\n" "$pypath" && return 0; :
if [ -e "$pypath" ] && [ ! -d "$pypath" ] && \
[ -x "$pypath" ]; then
printf "%s\n" "$pypath"
return 0
fi
fi
# if python venv: fall back to common PATH directories for checking
+2 -3
View File
@@ -94,8 +94,7 @@ setvars()
fi
val="$1"
shift 1
while [ $# -gt 0 ]
do
while [ $# -gt 0 ]; do
printf "%s=\"%s\"\n" "$1" "$val"
shift 1
done
@@ -165,7 +164,7 @@ unpad_one_byte()
err "can't increment file size" "unpad_one_byte" "$@"
if [ $xromsize -lt 524288 ]; then
err "too small, $xromsize: $1" "unpad_one_byte" "$@"
err "too small, $xromsize: $1" "unpad_one_byte" "$@"
fi
unpaddedfile="`mktemp || err "mktemp unpad_one_byte"`" || \
+1 -3
View File
@@ -21,8 +21,7 @@ extract_refcode()
-m x86 -n fallback/refcode -f "$appdir/ref" -r RO_SECTION
# enable the Intel GbE device, if told by offset MRC_refcode_gbe
if [ -n "$MRC_refcode_gbe" ]
then
if [ -n "$MRC_refcode_gbe" ]; then
x_ dd if="config/ifd/hp820g2/1.bin" of="$appdir/ref" bs=1 \
seek=$MRC_refcode_gbe count=1 conv=notrunc; :
fi
@@ -36,7 +35,6 @@ extract_mrc()
SHELLBALL="chromeos-firmwareupdate-$MRC_board"
(
x_ cd "$appdir"
extract_partition "${MRC_url##*/}"
extract_archive "$SHELLBALL" .
+18 -23
View File
@@ -9,22 +9,23 @@ release()
reldir="release"
while getopts m: option
do
if [ -z "$OPTARG" ]
then
while getopts m: option; do
if [ -z "$OPTARG" ]; then
err "empty argument not allowed" "release" "$@"
fi
case "$option" in
m) relmode="$OPTARG" ;;
*) err "invalid option '-$option'" "release" "$@" ;;
m)
relmode="$OPTARG"
;;
*)
err "invalid option '-$option'" "release" "$@"
;;
esac
done
reldest="$reldir/$version"
if [ -e "$reldest" ]
then
if [ -e "$reldest" ]; then
err "already exists: \"$reldest\"" "release" "$@"
fi
@@ -40,8 +41,7 @@ release()
prep_release src
prep_release tarball
if [ "$relmode" != "src" ]
then
if [ "$relmode" != "src" ]; then
prep_release bin
fi
x_ rm -Rf "$rsrc"
@@ -56,9 +56,7 @@ release()
prep_release()
{
(
if [ "$1" != "tarball" ]
then
if [ "$1" != "tarball" ]; then
x_ cd "$rsrc"
fi
@@ -74,19 +72,15 @@ prep_release_src()
fx_ "x_ rm -Rf" x_ find . -name ".git"
fx_ "x_ rm -Rf" x_ find . -name ".gitmodules"
(
fx_ nuke x_ find config -type f -name "nuke.list"
) || err "can't prune project files" "prep_release_src" "$@"; :
( fx_ nuke x_ find config -type f -name "nuke.list" ) || \
err "can't prune project files" "prep_release_src" "$@"; :
}
nuke()
{
r="$rsrc/src/${1#config/}"
if [ -d "${r%/*}" ]
then
if [ -d "${r%/*}" ]; then
x_ cd "${r%/*}"
dx_ "eval [ -L \"\$fx\" ] || x_ rm -Rf" "$rsrc/$1"
@@ -103,7 +97,6 @@ prep_release_tarball()
x_ rm -Rf "$rsrc/cache" "$rsrc/xbmkwd"
(
x_ cd "${rsrc%/*}"
x_ mktarball "${rsrc##*/}" "${rsrc##*/}.tar.xz"
@@ -114,8 +107,10 @@ prep_release_bin()
{
x_ ./mk -d coreboot
fx_ "x_ ./mk -b" printf \
"coreboot\npico-serprog\nstm32-vserprog\npcsx-redux\n"
x_ ./mk -b coreboot
x_ ./mk -b pico-serprog
x_ ./mx -b stm32-vserprog
x_ ./mk -b pcsx-redux
fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*"
+65 -121
View File
@@ -9,13 +9,11 @@ grubdata="config/data/grub"
buildser()
{
if [ "$1" = "pico" ]
then
if [ "$1" = "pico" ]; then
x_ cmake -DPICO_BOARD="$2" \
-DPICO_SDK_PATH="$picosdk" -B "$sersrc/build" "$sersrc" && \
x_ cmake --build "$sersrc/build"
elif [ "$1" = "stm32" ]
then
elif [ "$1" = "stm32" ]; then
x_ make -C "$sersrc" libopencm3-just-make \
BOARD=$2 && x_ make -C "$sersrc" BOARD=$2
fi
@@ -26,8 +24,7 @@ buildser()
copyps1bios()
{
if [ "$dry" = ":" ]
then
if [ "$dry" = ":" ]; then
return 0
fi
@@ -61,8 +58,7 @@ mkpayload_grub()
corebootpremake()
{
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]
then
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then
return 0
fi
@@ -72,16 +68,14 @@ corebootpremake()
printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \
err "!mk $srcdir .coreboot-version" "corebootpremake" "$@"
if [ -z "$mode" ] && [ "$target" != "$tree" ]
then
if [ -z "$mode" ] && [ "$target" != "$tree" ]; then
x_ ./mk download "$target"
fi
}
cook_coreboot_config()
{
if [ -z "$mode" ] && [ -f "$srcdir/.config" ]
then
if [ -z "$mode" ] && [ -f "$srcdir/.config" ]; then
printf "CONFIG_CCACHE=y\n" >> "$srcdir/.config" || \
err "can't cook '$srcdir'" "cook_coreboot_config" "$@"
fi
@@ -89,12 +83,10 @@ cook_coreboot_config()
check_coreboot_util()
{
if [ "$badhash" = "y" ]
then
if [ "$badhash" = "y" ]; then
x_ rm -f "elf/coreboot/$tree/$1"
fi
if e "elf/coreboot/$tree/$1" f
then
if e "elf/coreboot/$tree/$1" f; then
return 0
fi
@@ -102,28 +94,25 @@ check_coreboot_util()
utilsrcdir="src/coreboot/$tree/util/$1"
utilmode=""
if [ -n "$mode" ]
then
if [ -n "$mode" ]; then
utilmode="clean"
fi
x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
if [ -n "$mode" ]
then
x_ rm -Rf "$utilelfdir" # TODO: is this needed?
if [ -n "$mode" ]; then
# TODO: is this rm command needed?
x_ rm -Rf "$utilelfdir"
return 0
fi
if [ -n "$mode" ] || [ -f "$utilelfdir/$1" ]
then
elif [ -n "$mode" ] || [ -f "$utilelfdir/$1" ]; then
return 0
fi
x_ mkdir -p "$utilelfdir"
x_ cp "$utilsrcdir/$1" "$utilelfdir"
if [ "$1" = "cbfstool" ]
then
if [ "$1" = "cbfstool" ]; then
x_ cp "$utilsrcdir/rmodtool" "$utilelfdir"
fi
}
@@ -131,8 +120,7 @@ check_coreboot_util()
coreboot_pad_one_byte()
{
# TODO: why is this if block here? can i remove it?
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]
then
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then
return 0
fi
@@ -141,16 +129,14 @@ coreboot_pad_one_byte()
mkcorebootbin()
{
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]
then
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then
return 0
fi
$dry check_coreboot_util cbfstool
$dry check_coreboot_util ifdtool
for y in "$target_dir/config"/*
do
for y in "$target_dir/config"/*; do
defconfig="$y"
mkcorebootbin_real
done
@@ -160,8 +146,7 @@ mkcorebootbin()
mkcorebootbin_real()
{
if [ "$target" = "$tree" ]
then
if [ "$target" = "$tree" ]; then
return 0
fi
@@ -169,16 +154,16 @@ mkcorebootbin_real()
initmode="${defconfig##*/}"
displaymode="${initmode##*_}"
if [ "$displaymode" = "$initmode" ]
then
displaymode="" # blank it for "normal" configs
if [ "$displaymode" = "$initmode" ]; then
# blank it for "normal" configs:
displaymode=""
fi
initmode="${initmode%%_*}"
cbfstool="elf/coreboot/$tree/cbfstool"
elfrom="elf/coreboot/$tree/$target/$initmode"
if [ -n "$displaymode" ]
then
if [ -n "$displaymode" ]; then
elfrom="${elfrom}_$displaymode"
fi
elfrom="$elfrom/coreboot.rom"
@@ -193,63 +178,50 @@ mkcorebootbin_real()
"mkcorebootbin_real" "$@"
fi
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]
then
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then
payload_seabios="y"
fi
if [ -z "$uboot_config" ]
then
if [ -z "$uboot_config" ]; then
uboot_config="default"
fi
if [ "$payload_grub" = "y" ]
then
if [ "$payload_grub" = "y" ]; then
payload_seabios="y"
fi
if [ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "arm64" ]
then
if [ "$payload_seabios" = "y" ] && [ "$payload_uboot" = "arm64" ]; then
$dry err "$target: U-Boot(arm) and SeaBIOS/GRUB both enabled" \
"mkcorebootbin_real" "$@"
fi
if [ -z "$grub_scan_disk" ]
then
if [ -z "$grub_scan_disk" ]; then
grub_scan_disk="nvme ahci ata"
fi
if [ -z "$grubtree" ]
then
if [ -z "$grubtree" ]; then
grubtree="default"
fi
grubelf="elf/grub/$grubtree/$grubtree/payload/grub.elf"
if [ "$payload_memtest" != "y" ]
then
if [ "$payload_memtest" != "y" ]; then
payload_memtest="n"
fi
if [ "$(uname -m)" != "x86_64" ]
then
if [ "$(uname -m)" != "x86_64" ]; then
payload_memtest="n"
fi
if [ "$payload_grubsea" = "y" ] && [ "$initmode" = "normal" ]
then
if [ "$payload_grubsea" = "y" ] && [ "$initmode" = "normal" ]; then
payload_grubsea="n"
fi
if [ "$payload_grub" != "y" ]
then
if [ "$payload_grub" != "y" ]; then
payload_grubsea="n"
fi
if $dry grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"
then
if [ "$payload_seabios" = "y" ]
then
if $dry grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then
if [ "$payload_seabios" = "y" ]; then
pname="seabios"
$dry add_seabios
fi
if [ "$payload_uboot" = "arm64" ]
then
if [ "$payload_uboot" = "arm64" ]; then
pname="uboot"
$dry add_uboot
fi
@@ -268,8 +240,7 @@ mkcorebootbin_real()
add_seabios()
{
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]
then
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then
# we must add u-boot first, because it's added as a flat
# binary at a specific offset for secondary program loader
@@ -278,8 +249,7 @@ add_seabios()
_seabioself="elf/seabios/default/default/$initmode/bios.bin.elf"
_seaname="fallback/payload"
if [ "$payload_grubsea" = "y" ]
then
if [ "$payload_grubsea" = "y" ]; then
_seaname="seabios.elf"
fi
@@ -288,33 +258,27 @@ add_seabios()
x_ "$cbfstool" "$tmprom" add-int -i 3000 -n etc/ps2-keyboard-spinup
opexec="2"
if [ "$initmode" = "vgarom" ]
then
if [ "$initmode" = "vgarom" ]; then
opexec="0"
fi
x_ "$cbfstool" "$tmprom" add-int -i $opexec -n etc/pci-optionrom-exec
x_ "$cbfstool" "$tmprom" add-int -i 0 -n etc/optionroms-checksum
if [ "$initmode" = "libgfxinit" ]
then
if [ "$initmode" = "libgfxinit" ]; then
cbfs "$tmprom" "$seavgabiosrom" vgaroms/seavgabios.bin raw
fi
if [ "$payload_memtest" = "y" ]
then
if [ "$payload_memtest" = "y" ]; then
# because why not have memtest?
cbfs "$tmprom" \
"elf/memtest86plus/memtest.bin" img/memtest
cbfs "$tmprom" "elf/memtest86plus/memtest.bin" img/memtest
fi
if [ "$payload_grub" = "y" ]
then
if [ "$payload_grub" = "y" ]; then
add_grub
fi
if [ "$payload_grubsea" != "y" ]
then
if [ "$payload_grubsea" != "y" ]; then
# ROM image where SeaBIOS doesn't load grub/u-boot first.
# U-Boot/GRUB available in ESC menu if enabled for the board
@@ -327,14 +291,12 @@ add_seabios()
if [ "$payload_uboot" = "amd64" ] && \
[ "$displaymode" != "txtmode" ] && \
[ "$initmode" != "normal" ] && [ "$payload_grubsea" != "y" ]
then
[ "$initmode" != "normal" ] && [ "$payload_grubsea" != "y" ]; then
pname="seauboot"
cprom "seauboot"
fi
if [ "$payload_grub" = "y" ]
then
if [ "$payload_grub" = "y" ]; then
pname="seagrub"
mkseagrub
fi
@@ -344,8 +306,7 @@ add_grub()
{
# path in CBFS for the GRUB payload
_grubname="img/grub2"
if [ "$payload_grubsea" = "y" ]
then
if [ "$payload_grubsea" = "y" ]; then
_grubname="fallback/payload"
fi
@@ -357,8 +318,7 @@ add_grub()
cbfs "$tmprom" "$xbtmp/tmpcfg" scan.cfg raw
if [ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ]
then
if [ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ]; then
cbfs "$tmprom" "$grubdata/background/background1280x800.png" \
"background.png" raw
fi
@@ -366,8 +326,7 @@ add_grub()
mkseagrub()
{
if [ "$payload_grubsea" = "y" ]
then
if [ "$payload_grubsea" = "y" ]; then
pname="grub"
else
cbfs "$tmprom" "$grubdata/bootorder" bootorder raw
@@ -378,13 +337,11 @@ mkseagrub()
add_uboot()
{
if [ "$displaymode" = "txtmode" ]
then
if [ "$displaymode" = "txtmode" ]; then
printf "cb/%s: Cannot use U-Boot in text mode\n" \
"$target" 1>&2
return 0
elif [ "$initmode" = "normal" ]
then
elif [ "$initmode" = "normal" ]; then
printf "cb/%s: Cannot use U-Boot in normal initmode\n" \
"$target" 1>&2
return 0
@@ -400,8 +357,7 @@ add_uboot()
ubtarget="$target"
# override for x86/x86_64 targets:
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]
then
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then
ubcbfsargs="-l 0x1110000 -e 0x1110000" # 64-bit and 32-bit
# on 64-bit, 0x1120000 is the SPL, with a stub that
# loads it, located at 0x1110000
@@ -422,23 +378,19 @@ add_uboot()
# aarch64 targets:
ubootelf="$ubdir/u-boot.elf"
if [ ! -f "$ubootelf" ]
then
if [ ! -f "$ubootelf" ]; then
ubootelf="$ubdir/u-boot"
fi
# override for x86/x86_64 targets:
if [ "$payload_uboot" = "i386" ]
then
if [ "$payload_uboot" = "i386" ]; then
ubootelf="$ubdir/u-boot-dtb.bin"
elif [ "$payload_uboot" = "amd64" ]
then
elif [ "$payload_uboot" = "amd64" ]; then
ubootelf="$ubdir/u-boot-x86-with-spl.bin" # EFI-compatible
fi
cbfs "$tmprom" "$ubootelf" "$ubpath" $ubcbfsargs
if [ "$payload_seabios" != "y" ]
then
if [ "$payload_seabios" != "y" ]; then
cprom
fi
}
@@ -452,31 +404,26 @@ cprom()
tmpnew=""
newrom="bin/$target/${pname}_${target}_$initmode.rom"
if [ -n "$displaymode" ]
then
if [ -n "$displaymode" ]; then
newrom="${newrom%.rom}_$displaymode.rom"
fi
if [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ]
then
if [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ]; then
tmpnew="${1##*/}"
newrom="${newrom%.rom}_${tmpnew%.gkb}.rom"
fi
irom="$tmprom"
if [ $# -gt 0 ]
then
if [ $# -gt 0 ]; then
irom="$(mktemp || err "!mk irom, $(echo "$@")")" || \
err "can't copy rom" "cprom" "$@"
x_ cp "$tmprom" "$irom" && cpcmd="mv"
if [ "${1%.gkb}" != "$1" ]
then
if [ "${1%.gkb}" != "$1" ]; then
cbfs "$irom" "$grubdata/keymap/$tmpnew" keymap.gkb raw
elif [ "$1" = "seauboot" ]
then
elif [ "$1" = "seauboot" ]; then
cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw
fi
fi
@@ -492,12 +439,10 @@ cbfs()
ccmd="add-payload"
lzma="-c lzma"
if [ $# -gt 3 ] && [ $# -lt 5 ]
then
if [ $# -gt 3 ] && [ $# -lt 5 ]; then
ccmd="add"
lzma="-t $4"
elif [ $# -gt 4 ] && [ "$5" = "0x1110000" ]
then
elif [ $# -gt 4 ] && [ "$5" = "0x1110000" ]; then
ccmd="add-flat-binary" && \
lzma="-c lzma -l 0x1110000 -e 0x1110000"
fi
@@ -510,8 +455,7 @@ cbfs()
mkcoreboottar()
{
if [ "$target" != "$tree" ] && [ "$XBMK_RELEASE" = "y" ] && \
[ "$release" != "n" ]
then
[ "$release" != "n" ]; then
$dry mkrom_tarball "bin/$target" && \
$dry x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke; :
fi
+69 -139
View File
@@ -15,8 +15,7 @@ trees()
while getopts $flags option
do
if [ -n "$_f" ]
then
if [ -n "$_f" ]; then
err "only one flag is permitted" "trees" "$@"
fi
@@ -61,19 +60,16 @@ trees()
shift 2
done
if [ -z "$_f" ]
then
if [ -z "$_f" ]; then
err "missing flag ($flags)" "trees" "$@"
fi
if [ -z "$project" ]
then
if [ -z "$project" ]; then
fx_ "x_ ./mk $_f" x_ ls -1 config/git
return 1
fi
if [ ! -f "config/git/$project/pkg.cfg" ]
then
if [ ! -f "config/git/$project/pkg.cfg" ]; then
err "config/git/$project/pkg.cfg missing" "trees" "$@"
fi
@@ -84,14 +80,12 @@ trees()
dest_dir="$elfdir"
listfile="$datadir/build.list"
if [ ! -f "$listfile" ]
then
if [ ! -f "$listfile" ]; then
listfile="" # build.list is optional on all projects
fi
mkhelpercfg="$datadir/mkhelper.cfg"
if e "$mkhelpercfg" f missing
then
if e "$mkhelpercfg" f missing; then
mkhelpercfg="$xbtmp/mkhelper.cfg"
x_ touch "$mkhelpercfg"
fi
@@ -105,34 +99,28 @@ trees()
build_project()
{
if ! configure_project "$configdir"
then
if ! configure_project "$configdir"; then
return 0
elif [ -f "$listfile" ]
then
elif [ -f "$listfile" ]; then
$dry elfcheck || return 0; :
fi
if [ "$mode" = "distclean" ]
then
if [ "$mode" = "distclean" ]; then
mode="clean"
fi
run_make_command || return 0
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
$dry copy_elf; :
fi
}
build_targets()
{
if [ ! -d "$configdir" ]
then
if [ ! -d "$configdir" ]; then
err "directory '$configdir' doesn't exist" "build_targets" "$@"
elif [ $# -lt 1 ]
then
elif [ $# -lt 1 ]; then
targets="$(ls -1 "$configdir")" || \
err "'$configdir': can't list targets" "build_targets" "$@"
fi
@@ -142,8 +130,7 @@ build_targets()
unset CROSS_COMPILE
export PATH="$xbmkpath"
if [ "$x" = "list" ]
then
if [ "$x" = "list" ]; then
x_ ls -1 "config/$project"
listfile=""
break
@@ -155,8 +142,7 @@ build_targets()
x_ handle_defconfig
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
x_ $postmake
fi
done; :
@@ -166,41 +152,34 @@ handle_defconfig()
{
target_dir="$configdir/$target"
if [ ! -f "CHANGELOG" ]
then
if [ ! -f "CHANGELOG" ]; then
fetch_project "$project"
fi
if ! configure_project "$target_dir"
then
if ! configure_project "$target_dir"; then
return 0
fi
chkvars tree
srcdir="src/$project/$tree"
if [ "$mode" = "${mode%clean}" ] && [ ! -d "$srcdir" ]
then
if [ "$mode" = "${mode%clean}" ] && [ ! -d "$srcdir" ]; then
return 0
fi
for y in "$target_dir/config"/*
do
if [ "$_f" != "-d" ] && [ ! -f "$y" ]
then
if [ "$_f" != "-d" ] && [ ! -f "$y" ]; then
continue
elif [ "$_f" != "-d" ]
then
elif [ "$_f" != "-d" ]; then
defconfig="$y"
fi
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
check_defconfig || continue; :
fi
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
for _xarch in $xarch; do
if [ -n "$_xarch" ]
then
@@ -211,8 +190,7 @@ handle_defconfig()
handle_makefile
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
$dry copy_elf
fi
done; :
@@ -226,15 +204,13 @@ configure_project()
_tcfg="$1/target.cfg"
if [ ! -f "$_tcfg" ]
then
if [ ! -f "$_tcfg" ]; then
btype="auto"
fi
# globally initialise all variables for a source tree / target:
if e "$datadir/mkhelper.cfg" f
then
if e "$datadir/mkhelper.cfg" f; then
eval "`setcfg "$datadir/mkhelper.cfg"`"
fi
@@ -254,21 +230,18 @@ configure_project()
eval "`setvars "" rev tree`"
eval "`setcfg "$_tcfg"`"
if [ "$_f" = "-d" ]
then
if [ "$_f" = "-d" ]; then
build_depend="" # dry run
fi
if [ "$cmd" = "build_project" ]
then
if [ "$cmd" = "build_project" ]; then
# single-tree, so it can't be a target pointing
# to a main source tree
break
fi
if [ "$do_make" != "n" ]
then
if [ "$do_make" != "n" ]; then
# if we're *downloading* a project, then
# we don't need to to change the target.cfg
@@ -287,34 +260,28 @@ configure_project()
done
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]
then
if [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ]; then
return 1
fi
if [ -n "$btype" ] && [ "${mode%config}" != "$mode" ]
then
if [ -n "$btype" ] && [ "${mode%config}" != "$mode" ]; then
return 1
fi
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
$dry build_dependencies; :
fi
mdir="$xbmkpwd/config/submodule/$project"
if [ -n "$tree" ]
then
if [ -n "$tree" ]; then
mdir="$mdir/$tree"
fi
if [ ! -f "CHANGELOG" ]
then
if [ ! -f "CHANGELOG" ]; then
delete_old_project_files
fi
if [ "$do_make" = "n" ]
then
if [ "$do_make" = "n" ]; then
if [ ! -f "CHANGELOG" ]
then
fetch_${cmd#build_}
@@ -336,19 +303,16 @@ build_dependencies()
bd_project="${bd%%/*}"
bd_tree="${bd##*/}"
if [ -z "$bd_project" ]
then
if [ -z "$bd_project" ]; then
$dry err "$project/$tree: !bd '$bd'" \
"build_dependencies" "$@"
fi
if [ "${bd##*/}" = "$bd" ]
then
if [ "${bd##*/}" = "$bd" ]; then
bd_tree=""
fi
if [ -n "$bd_project" ]
then
if [ -n "$bd_project" ]; then
$dry x_ ./mk -b $bd_project $bd_tree; :
fi
done; :
@@ -366,8 +330,7 @@ delete_old_project_files()
{
# delete an entire source tree along with its builds:
if ! project_up_to_date hash "$tree" badhash "$datadir" \
"$configdir/$tree" "$mdir"
then
"$configdir/$tree" "$mdir"; then
x_ rm -Rf "src/$project/$tree" "elf/$project/$tree"
fi
@@ -402,8 +365,7 @@ project_up_to_date()
x_ mkdir -p "$XBMK_CACHE/$hashdir"
if [ -f "$XBMK_CACHE/$hashdir/$project$hashname" ]
then
if [ -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then
read -r old_hash < \
"$XBMK_CACHE/$hashdir/$project$hashname" \
|| err \
@@ -421,8 +383,7 @@ project_up_to_date()
"project_up_to_date" "$hashdir" "$hashname" "$badhashvar" "$@"
if [ "$hash" != "$old_hash" ] || \
[ ! -f "$XBMK_CACHE/$hashdir/$project$hashname" ]
then
[ ! -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then
eval "$badhashvar=\"y\""
fi
@@ -437,19 +398,16 @@ check_cross_compiler()
{
cbdir="src/coreboot/$tree"
if [ "$project" != "coreboot" ]
then
if [ "$project" != "coreboot" ]; then
cbdir="src/coreboot/default"
fi
if [ -n "$xtree" ]
then
if [ -n "$xtree" ]; then
cbdir="src/coreboot/$xtree"
fi
xfix="${1%-*}"
if [ "$xfix" = "x86_64" ]
then
if [ "$xfix" = "x86_64" ]; then
xfix="x64"
fi
@@ -462,13 +420,11 @@ check_cross_compiler()
export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH"
export CROSS_COMPILE="${xarch% *}-"
if [ -n "$xlang" ]
then
if [ -n "$xlang" ]; then
export BUILD_LANGUAGES="$xlang"
fi
if [ -f "$xgccfile" ]
then
if [ -f "$xgccfile" ]; then
return 0 # a build already exists
fi
@@ -485,23 +441,22 @@ check_cross_compiler()
# gnat in PATH never resolves to gnat-14, because gnat-14 was "experimental"
check_gnu_path()
{
if ! command -v "$1" 1>/dev/null
then
if ! command -v "$1" 1>/dev/null; then
err "Host '$1' unavailable" "check_gnu_path" "$@"
fi
eval "`setvars "" gccver gccfull gnatver gnatfull gccdir gnatdir`"
if ! gnu_setver "$1" "$1"
then
if ! gnu_setver "$1" "$1"; then
err "Command '$1' unavailable." "check_gnu_path" "$@"
fi
gnu_setver "$2" "$2" || :
eval "[ -z \"\$$1ver\" ] && err \"Cannot detect host '$1' version\""
if [ "$gnatfull" = "$gccfull" ]
then
return 0 # matching gcc/gnat versions
if [ "$gnatfull" = "$gccfull" ]; then
# matching gcc/gnat versions
return 0
fi
eval "$1dir=\"$(dirname "$(command -v "$1")")\""
@@ -517,16 +472,13 @@ check_gnu_path()
fi
done
if ! gnu_setver "$2" "$_gnudir/$2-$_gnuver"
then
if ! gnu_setver "$2" "$_gnudir/$2-$_gnuver"; then
return 1
elif [ "$gnatfull" != "$gccfull" ]
then
elif [ "$gnatfull" != "$gccfull" ]; then
return 1
fi
(
remkdir "$xbtmp/gnupath"
x_ cd "$xbtmp/gnupath"
@@ -534,8 +486,7 @@ check_gnu_path()
for _gnubin in "$_gnudir/$2"*"-$_gnuver"
do
_gnuutil="${_gnubin##*/}"
if [ -e "$_gnubin" ]
then
if [ -e "$_gnubin" ]; then
x_ ln -s "$_gnubin" "${_gnuutil%"-$_gnuver"}"
fi
done
@@ -556,8 +507,7 @@ gnu_setver()
check_defconfig()
{
if [ ! -f "$defconfig" ]
then
if [ ! -f "$defconfig" ]; then
$dry err "$project/$target: missing defconfig" \
"check_defconfig" "$@"
fi
@@ -571,11 +521,7 @@ elfcheck()
{
# TODO: *STILL* very hacky check. do it properly (based on build.list)
(
fx_ "eval exit 1 && err" find "$dest_dir" -type f
) || return 1; :
( fx_ "eval exit 1 && err" find "$dest_dir" -type f ) || return 1; :
}
handle_makefile()
@@ -583,8 +529,7 @@ handle_makefile()
$dry check_makefile "$srcdir" && \
$dry x_ make -C "$srcdir" $cleanargs clean
if [ -f "$defconfig" ]
then
if [ -f "$defconfig" ]; then
x_ cp "$defconfig" "$srcdir/.config"
fi
@@ -593,27 +538,23 @@ handle_makefile()
_copy=".config"
if [ "$mode" = "savedefconfig" ]
then
if [ "$mode" = "savedefconfig" ]; then
_copy="defconfig"
fi
if [ "${mode%config}" != "$mode" ]
then
if [ "${mode%config}" != "$mode" ]; then
$dry x_ cp "$srcdir/$_copy" "$defconfig"; :
fi
if [ -e "$srcdir/.git" ] && [ "$project" = "u-boot" ] && \
[ "$mode" = "distclean" ]
then
[ "$mode" = "distclean" ]; then
$dry x_ git -C "$srcdir" $cleanargs clean -fdx; :
fi
}
run_make_command()
{
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
x_ $premake
fi
@@ -623,15 +564,13 @@ run_make_command()
$dry x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs
if [ -z "$mode" ]
then
if [ -z "$mode" ]; then
x_ $mkhelper
fi
check_makefile "$srcdir" || return 0
if [ "$mode" = "clean" ]
then
if [ "$mode" = "clean" ]; then
$dry make -C "$srcdir" $cleanargs distclean || \
$dry x_ make -C "$srcdir" $cleanargs clean; :
fi
@@ -639,8 +578,7 @@ run_make_command()
check_cmake()
{
if [ -n "$cmakedir" ]
then
if [ -n "$cmakedir" ]; then
$dry check_makefile "$1" || cmake -B "$1" \
"$1/$cmakedir" || $dry x_ check_makefile "$1"
$dry x_ check_makefile "$1"; :
@@ -650,7 +588,6 @@ check_cmake()
check_autoconf()
{
(
x_ cd "$1"
if [ -f "bootstrap" ]
@@ -674,25 +611,21 @@ check_autoconf()
check_makefile()
{
if [ ! -f "$1/Makefile" ] && [ ! -f "$1/makefile" ] && \
[ ! -f "$1/GNUmakefile" ]
then
[ ! -f "$1/GNUmakefile" ]; then
return 1
fi
}
copy_elf()
{
if [ -f "$listfile" ]
then
if [ -f "$listfile" ]; then
x_ mkdir -p "$dest_dir"
fi
if [ -f "$listfile" ]
then
if [ -f "$listfile" ]; then
while read -r f
do
if [ -f "$srcdir/$f" ]
then
if [ -f "$srcdir/$f" ]; then
x_ cp "$srcdir/$f" "$dest_dir"
fi
@@ -700,9 +633,6 @@ copy_elf()
"cannot read '$listfile'" "copy_elf" "$@"; :
fi
(
x_ make clean -C "$srcdir" $cleanargs
) || err "can't make-clean '$srcdir'" "copy_elf" "$@"; :
( x_ make clean -C "$srcdir" $cleanargs ) || \
err "can't make-clean '$srcdir'" "copy_elf" "$@"; :
}
+34 -22
View File
@@ -277,37 +277,49 @@ apply_deguard_hack()
extract_archive()
{
innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \
"$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1
if innoextract "$1" -d "$2"; then
:
elif python "$pfs_extract" "$1" -e; then
:
elif 7z x "$1" -o"$2"; then
:
elif unar "$1" -o "$2"; then
:
elif unzip "$1" -d "$2"; then
:
else
return 1
fi
[ ! -d "${_dl}_extracted" ] || x_ cp -R "${_dl}_extracted" "$2"; :
if [ -d "${_dl}_extracted" ]; then
x_ cp -R "${_dl}_extracted" "$2"
fi
}
extract_kbc1126ec()
{
(
x_ cd "$appdir/"
x_ cd "$appdir/"
if mv Rompaq/68*.BIN ec.bin; then
:
elif unar -D ROM.CAB Rom.bin; then
:
elif unar -D Rom.CAB Rom.bin; then
:
elif unar -D 68*.CAB Rom.bin; then
:
else
err "!kbc1126 unar" "extract_kbc1126ec" "$@"
fi
if mv Rompaq/68*.BIN ec.bin; then
:
elif unar -D ROM.CAB Rom.bin; then
:
elif unar -D Rom.CAB Rom.bin; then
:
elif unar -D 68*.CAB Rom.bin; then
:
else
err "!kbc1126 unar" "extract_kbc1126ec" "$@"
fi
if [ ! -f "ec.bin" ]; then
x_ mv Rom.bin ec.bin
fi
if [ ! -f "ec.bin" ]; then
x_ mv Rom.bin ec.bin
fi
if x_ e ec.bin f; then
x_ "$kbc1126_ec_dump" ec.bin
fi
if x_ e ec.bin f; then
x_ "$kbc1126_ec_dump" ec.bin
fi
) || err "$board: can't extract kbc1126 fw" "extract_kbc1126ec" "$@"