summaryrefslogtreecommitdiff
path: root/script/build/boot/roms
diff options
context:
space:
mode:
Diffstat (limited to 'script/build/boot/roms')
-rwxr-xr-xscript/build/boot/roms112
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 $@