summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-09-30 15:03:24 +0100
committerLeah Rowe <leah@libreboot.org>2023-09-30 15:28:52 +0100
commit7922b6e0e5b44655c2c59f535fbdf209126dcd3f (patch)
tree510331dc4af2f47cd06e502e06a20b71b6364f4d
parentf3c4f208d0ca611cec269aa225e60f463c099d35 (diff)
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>
-rwxr-xr-xinclude/boot.sh41
-rwxr-xr-xscript/build/boot/roms55
-rwxr-xr-xscript/build/boot/roms_helper33
3 files changed, 64 insertions, 65 deletions
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 <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
+}
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}" ] || \