diff options
Diffstat (limited to 'resources/scripts/build/boot/roms')
-rwxr-xr-x | resources/scripts/build/boot/roms | 64 |
1 files changed, 58 insertions, 6 deletions
diff --git a/resources/scripts/build/boot/roms b/resources/scripts/build/boot/roms index 2f3d76f3..94215028 100755 --- a/resources/scripts/build/boot/roms +++ b/resources/scripts/build/boot/roms @@ -5,6 +5,7 @@ # # Copyright (C) 2014, 2015, 2016, 2020, 2021 Leah Rowe <info@minifree.org> # Copyright (C) 2015 Klemens Nanni <contact@autoboot.org> +# Copyright (C) 2022 Caleb La Grange <thonkpeasant@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 @@ -42,12 +43,18 @@ help() { USAGE: ./build boot roms boardname To build *all* boards, do this: ./build boot roms all To list *all* boards, do this: ./build boot roms list - - possible values for 'options': - $(listboards) + + Optional Flags: + -d: displaymode + -p: payload + -k: keyboard layout Example: ./build boot roms x60 Example: ./build boot roms x200_8mb x60 + Example: ./build boot roms x230_12mb -p grub -d corebootfb -k usqwerty + + possible values for 'boardname': + $(listboards) Refer to the ${projectname} documentation for more information. EOF @@ -61,13 +68,33 @@ die() { # Build ROM images for supported boards buildrom() { board="$1" + + # Start by building blobs and placing them in the coreboot tree only for boards that need them + ./blobutil download ${board} || exit 1 + + if [ -d "resources/coreboot/${board}/" ]; then + ./build boot roms_helper "${board}${opts}" + else + die "\nbuild/roms: target not defined in the build system: %s\n" "${board}" + fi +} + +buildrom_release() { + board="$1" + if [ -d "resources/coreboot/${board}/" ]; then - ./build boot roms_helper "${board}" + ./build release deblob ${board} + if [ "$?" = 2 ]; then + ./build boot roms_helper "${board}" + else + ./build boot roms_helper deblobbed "${board}" + fi else die "\nbuild/roms: target not defined in the build system: %s\n" "${board}" fi } + if [ $# -gt 0 ]; then firstoption="${1}" if [ "${firstoption}" = "help" ]; then @@ -78,15 +105,40 @@ if [ $# -gt 0 ]; then listboards exit 0 fi + + while [[ $# > 0 ]]; do + case ${1} in + -d) + opts+=" -d ${2}" + shift ;; + -p) + opts+=" -p ${2}" + shift ;; + -k) + opts+=" -k ${2}" + shift ;; + *) + boards+="${1} " ;; + esac + shift + done + +if [ -z ${opts+x} ]; then + opts="" +fi printf "Building %s ROM images\n" "${projectname}" - if [ "${firstoption}" = "all" ]; then + if [ "${firstoption}" = "release" ]; then + for boardname in $(listboards); do + buildrom_release "${boardname}" || die "build/roms: something went wrong" + done + elif [ "${firstoption}" = "all" ]; then for boardname in $(listboards); do buildrom "${boardname}" || die "build/roms: something went wrong" done else - for board in ${@}; do + for board in ${boards}; do buildrom "${board}" || die "build/roms: something went wrong" done fi |