From 7922b6e0e5b44655c2c59f535fbdf209126dcd3f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 30 Sep 2023 15:03:24 +0100 Subject: 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 --- include/boot.sh | 41 ++++++++++++++++++++++++++++++++ script/build/boot/roms | 55 ++++++++++++------------------------------- script/build/boot/roms_helper | 33 +++++++------------------- 3 files changed, 64 insertions(+), 65 deletions(-) create mode 100755 include/boot.sh diff --git a/include/boot.sh b/include/boot.sh new file mode 100755 index 00000000..526a6024 --- /dev/null +++ b/include/boot.sh @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2022 Caleb La Grange +# SPDX-FileCopyrightText: 2022 Ferass El Hafidi +# SPDX-FileCopyrightText: 2023 Leah Rowe + +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 +} diff --git a/script/build/boot/roms b/script/build/boot/roms index 571e4da3..6f9e7467 100755 --- a/script/build/boot/roms +++ b/script/build/boot/roms @@ -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 } diff --git a/script/build/boot/roms_helper b/script/build/boot/roms_helper index 7c58c977..96b44940 100755 --- a/script/build/boot/roms_helper +++ b/script/build/boot/roms_helper @@ -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() -{ - 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}" +# main() is in include/boot.sh +handle_targets() +{ + 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}" ] || \ -- cgit v1.2.1