Files
lbmk/script/build/boot/roms
T
Leah Rowe cc1642096e Use SPDX license headers on all scripts
This results in much cleaner copyright and license declarations.
SPDX headers are legally recognised and make auditing easier.

Also, remove descriptions of each script, from each script.
Libreboot documentation at docs/maintain/ describes them.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-25 02:19:48 +01:00

98 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env sh
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2014,2015,2016,2020,2021,2023 Leah Rowe <info@minifree.org>
# SPDX-FileCopyrightText: 2015 Klemens Nanni <contact@autoboot.org>
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e
. "include/err.sh"
read projectname < projectname
opts=""
boards=
firstoption=""
targets=""
main()
{
[ $# -lt 1 ] && usage && err "target not specified"
firstoption="${1}"
[ "${firstoption}" = "help" ] && usage && exit 0
[ "${firstoption}" = "list" ] && \
./build command options 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 ;;
*)
boards="${boards} ${1} " ;;
esac
shift
done
[ -z ${opts+x} ] && opts=""
printf "Building %s ROM images\n" "${projectname}"
if [ "${firstoption}" = "all" ]; then
for target in $(./build command options config/coreboot); do
buildrom "${target}" || err "build/roms (1): error"
[ -d "bin/${target}" ] && targets="${target} ${targets}"
done
else
for board in ${boards}; do
buildrom "${board}" || err "build/roms (2): error"
[ -d "bin/${board}" ] && targets="${board} ${targets}"
done
fi
[ -z "${targets}" ] && err "No ROM images were compiled."
printf "\n\nYour ROM images are available in these directories:\n"
for x in ${targets}; do
printf "* bin/%s\n" "${x}"
done
}
usage()
{
cat <<- EOF
USAGE: ./build boot roms target
To build *all* boards, do this: ./build boot roms all
To list *all* boards, do this: ./build boot roms list
Optional Flags:
-d: displaymode
-p: payload
-k: keyboard layout
Example commands:
./build boot roms x60
./build boot roms x200_8mb x60
./build boot roms x60 -p grub -d corebootfb -k usqwerty
possible values for 'target':
$(./build command options "config/coreboot")
Refer to the ${projectname} documentation for more information.
EOF
}
# Build ROM images for supported boards
buildrom() {
[ -d "config/coreboot/${1}/" ] || \
err "build/roms: target not defined: ${1}"
./build boot roms_helper ${1}${opts} || return 1
}
main $@