diff options
Diffstat (limited to 'script/build/boot/roms')
-rwxr-xr-x | script/build/boot/roms | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/script/build/boot/roms b/script/build/boot/roms new file mode 100755 index 00000000..a19d9445 --- /dev/null +++ b/script/build/boot/roms @@ -0,0 +1,112 @@ +#!/usr/bin/env sh + +# +# helper script: build coreboot images with various payloads +# +# Copyright (C) 2014,2015,2016,2020,2021,2023 Leah Rowe +# <info@minifree.org> +# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org> +# Copyright (C) 2022 Caleb La Grange <thonkpeasant@protonmail.com> +# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +# This script assumes that the working directory is the root +# of git or release archive + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +. "include/err.sh" + +projectname="$(cat projectname)" +opts="" +boards= +firstoption="" + +main() +{ + [ $# -lt 1 ] && usage && err "target not specified" + + firstoption="${1}" + [ "${firstoption}" = "help" ] && usage && exit 0 + [ "${firstoption}" = "list" ] && \ + ./build command options resources/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 resources/coreboot); do + buildrom "${target}" || err "build/roms (1): error" + done + else + for board in ${boards}; do + buildrom "${board}" || err "build/roms (2): error" + done + fi + + printf "\n\nDone! Your ROMs are in bin/\n\n" +} + +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 "resources/coreboot") + + Refer to the ${projectname} documentation for more information. + EOF +} + +# Build ROM images for supported boards +buildrom() { + [ -d "resources/coreboot/${1}/" ] || \ + err "build/roms: target not defined: ${1}" + ./build boot roms_helper ${1}${opts} || return 1 +} + +main $@ |