build/boot/*: unified main() function

The *same* main() function is now used on both scripts.

However, merging both scripts together would be less efficient
on sloccount, and would be error-prone. The purpose of having
roms_helper is that the variables get re-initialised the same
way each time, for each board, automatically.

Signed-off-by: Leah Rowe <leah@libreboot.org>
btrfsvols
Leah Rowe 2023-09-30 15:03:24 +01:00
parent f3c4f208d0
commit 7922b6e0e5
3 changed files with 64 additions and 65 deletions

41
include/boot.sh Executable file
View File

@ -0,0 +1,41 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
board=""
boards=""
displaymodes=""
payloads=""
keyboard_layouts=""
main()
{
[ $# -lt 1 ] && usage && err "target not specified"
first="${1}"
[ "${first}" = "help" ] && usage && exit 0
[ "${first}" = "list" ] && \
listitems config/coreboot && exit 0
while [ $# -gt 0 ]; do
case ${1} in
-d)
displaymodes="${2} ${displaymodes}"
shift ;;
-p)
payloads="${2} ${payloads}"
shift ;;
-k)
keyboard_layouts="${2} ${keyboard_layouts}"
shift ;;
all)
first="all" ;;
*)
boards="${1} ${boards}" ;;
esac
shift
done
handle_targets
}

View File

@ -10,48 +10,22 @@ set -u -e
. "include/err.sh"
. "include/option.sh"
. "include/boot.sh"
read projectname < projectname
opts=""
boards=
first=""
targets=""
main()
{
[ $# -lt 1 ] && usage && err "target not specified"
first="${1}"
[ "${first}" = "help" ] && usage && exit 0
[ "${first}" = "list" ] && \
listitems config/coreboot && exit 0
while [ $# -gt 0 ]; do
case ${1} in
-d)
opts="${opts} -d ${2}"
shift ;;
-p)
opts="${opts} -p ${2}"
shift ;;
-k)
opts="${opts} -k ${2}"
shift ;;
all)
first="all" ;;
*)
boards="${boards} ${1} " ;;
esac
shift
done
handle_targets
confirm_targets
}
# main() is in include/boot.sh
handle_targets()
{
[ -z ${opts+x} ] && opts=""
[ -z "${displaymodes}" ] || opts="-d \"${displaymodes}\" ${opts}"
[ -z "${payloads}" ] || opts="-p \"${payloads}\" ${opts}"
[ -z "${keyboard_layouts}" ] || \
opts="-k \"${keyboard_layouts}\" ${opts}"
printf "Building %s ROM images\n" "${projectname}"
[ "${first}" != "all" ] || boards="$(listitems config/coreboot)" || \
@ -59,22 +33,23 @@ handle_targets()
check_targets
build_bootroms
confirm_targets
}
check_targets()
{
for board in ${boards}; do
[ -d "config/coreboot/${board}/" ] || \
err "check_targets: target not defined: ${board}"
for x in ${boards}; do
[ -d "config/coreboot/${x}/" ] || \
err "check_targets: target not defined: ${x}"
done
}
build_bootroms()
{
for board in ${boards}; do
./build boot roms_helper ${board}${opts} || \
err "handle_targets ${board}${opts}: build error"
[ -d "bin/${board}" ] && targets="${board} ${targets}"
for x in ${boards}; do
./build boot roms_helper ${opts} ${x} || \
err "handle_targets ${opts} ${x}: build error"
[ -d "bin/${x}" ] && targets="${x} ${targets}"
done
}

View File

@ -10,6 +10,7 @@
set -u -e
. "include/err.sh"
. "include/boot.sh"
read projectname < projectname
@ -17,12 +18,8 @@ cfgsdir="config/coreboot"
blobs_required=""
board=""
ubdir=""
kmapdir="config/grub/keymap"
displaymodes=""
payloads=""
keyboard_layouts=""
grub_timeout=""
grub_scan_disk="undefined"
@ -53,28 +50,11 @@ targetdir=""
grubelf="elf/grub/grub.elf"
main()
# main() is in include/boot.sh
handle_targets()
{
while [ $# -gt 0 ]; do
case ${1} in
-d)
displaymodes="${displaymodes}${2}"
shift ;;
-p)
payloads="${payloads}${2}"
shift ;;
-k)
keyboard_layouts="${keyboard_layouts}${2}"
shift ;;
*)
board=${1} ;;
esac
shift
done
printf "\n\nboard %s, kb %s, displaymode %s, payloads %s\n" \
"${board}" "${keyboard_layouts}" "${displaymodes}" "${payloads}"
board="${boards%% *}"
configure_target
build_dependencies
@ -83,6 +63,9 @@ main()
configure_target()
{
printf "\n\nboard %s, kb %s, displaymode %s, payloads %s\n" \
"${board}" "${keyboard_layouts}" "${displaymodes}" "${payloads}"
targetdir="${cfgsdir}/${board}"
[ -d "${targetdir}" ] || \