summaryrefslogtreecommitdiff
path: root/resources/scripts/build/payload/u-boot
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-08-17 23:27:30 +0100
committerLeah Rowe <leah@libreboot.org>2023-08-19 23:18:32 +0100
commite5b898f6cb7ddac9dbffd4a2948861b32ffc8ae0 (patch)
tree48543273c35850637a7196a6d08ea7ab4ee323a2 /resources/scripts/build/payload/u-boot
parent673b144a4c2136ad1a17d746e70c0ae8825d8b2c (diff)
consolidate u-boot/seabios/coreboot build scripts
See file: resources/scripts/build/defconfig/for It is based on: resources/scripts/build/payload/u-boot The u-boot payload script has been deleted, as has the seabios payload script; the build/boot/roms logic has been heavily simplified too, by removing the logic for building of elf files based on defconfig. SeaBIOS, U-Boot and coreboot all use defconfig-type infrastructure for their build systems, and they are fundamentally the *same* in how to compile each codebase, at least in an lbmk context, regardless of actual (and very huge) differences in these codebases. Several hundred sources-lines of code have been eliminated by this change, drastically simplifying everything; U-Boot payload compiling also now errors out when a single build fails, instead of continuing. Also: build/boot/roms no longer re-compiles a coreboot target that was already compiled, which is the same behaviour observed for payloads. (this means you must now manually delete a target, when you wish to re-build it; the build/boot/roms logic now more or less just runs cbfstool; blobutil is handled from build/defconfig/for) ALSO: Since crossgcc is now handled by build/defconfig/for, not build/boot/roms, standalone compiling of u-boot is now possible. This has been tested. You compile it like so: ./build defconfig for u-boot or specific trees, e.g. ./build defconfig for u-boot default One other consequence of this patch is that re-building the same ROM image is now much faster, because the same builds are re-used unless deleted. This could be useful when testing grub.cfg changes, for example, if that's all you change. With things like ccache used (not yet used robustly in lbmk), this could speed things up more, depending on the codebase. This patch demonstrates the raw power of lbmk; it is a very simple and highly efficient build system, and now much more so! Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'resources/scripts/build/payload/u-boot')
-rwxr-xr-xresources/scripts/build/payload/u-boot179
1 files changed, 0 insertions, 179 deletions
diff --git a/resources/scripts/build/payload/u-boot b/resources/scripts/build/payload/u-boot
deleted file mode 100755
index a98d133d..00000000
--- a/resources/scripts/build/payload/u-boot
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env sh
-
-# helper script: builds U-Boot source code
-#
-# Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>
-# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
-# Copyright (C) 2023 Leah Rowe <leah@libreboot.org>
-#
-# 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/>.
-
-[ "x${DEBUG+set}" = 'xset' ] && set -v
-set -u -e
-
-RET=0
-pdir="payload/u-boot"
-ubdir=""
-arch=""
-tree=""
-config_name=""
-board_dir=""
-
-our_version="$(cat version)"
-projectname="$(cat projectname)"
-
-export LOCALVERSION="-${projectname}-${our_version}"
-
-main()
-{
- printf "Building U-Boot payloads\n"
-
- # Build for all boards if no argument is given
- if [ "$#" -eq 0 ]; then
- for board_dir in resources/u-boot/*; do
- [ ! -d "${board_dir}/config/" ] && \
- continue
- set -- "$@" "${board_dir#resources/u-boot/}"
- done
- fi
-
- [ ! -d "payload/" ] && \
- mkdir -p payload/
- [ ! -d "${pdir}" ] && \
- mkdir -p ${pdir}/
-
- for board in "$@"; do
- build_uboot_payloads "${board}" || continue
- done
-
- printf "Done! U-Boot files are in %s/\n\n" ${pdir}
- exit $RET
-}
-
-build_uboot_payloads()
-{
- board=${1}
-
- handle_dependencies "${board}" || return 1
-
- for config in "${board_dir}/config"/*; do
- config_name="${config#$board_dir/config/}"
-
- check_config "${board}" "${config}" || continue
- build_uboot_elf "${config}"
-
- printf "build/u-boot %s: build config %s\n" \
- "${board}" "${config_name}"
- done
-}
-
-handle_dependencies()
-{
- board=${1}
-
- board_dir="resources/u-boot/${board}"
- rm -rf "${pdir}/${board}"
- mkdir -p "${pdir}/${board}"
-
- tree="undefined"
- arch="undefined"
-
- if [ ! -f "${board_dir}/target.cfg" ]; then
- printf "build/u-boot %s: Missing target.cfg.\n" \
- "${board}"
- RET=1
- return 1
- fi
-
- # Override the above defaults using target.cfg
- . "${board_dir}/target.cfg" # source
-
- if [ "${tree}" = "undefined" ]; then
- printf "build/u-boot %s: tree undefined\n" \
- "${board}"
- RET=1
- return 1
- fi
- if [ "${arch}" = "undefined" ]; then
- printf "build/u-boot %s: undefined cpu type\n" \
- "${board}"
- RET=1
- return 1
- fi
-
- ubdir="u-boot/${board}"
- if [ "${board}" != "${tree}" ]; then
- ubdir="u-boot/${tree}"
- fi
-
- if [ ! -d "${ubdir}" ]; then
- ./fetch_trees u-boot "$board"
- fi
-
- if [ ! -d "${ubdir}" ]; then
- printf "build/u-boot %s: uboot download failed\n" \
- "${board}"
- RET=1
- return 1
- fi
-}
-
-check_config()
-{
- board=${1}
- config=${2}
-
- if [ ! -f "${config}" ]; then
- printf "build/u-boot %s: configs missing\n" \
- ${board}
- RET=1
- return 1
- fi
-
- if [ "$config_name" = "default" ]; then
- dest_dir="${pdir}/${board}"
- else
- dest_dir="${pdir}/${board}/${config_name}"
- fi
- mkdir -p "${dest_dir}"
-
- printf "build/u-boot %s: building config %s).\n" \
- ${board} ${config_name}
-}
-
-build_uboot_elf()
-{
- config=${1}
-
- make -C "${ubdir}" distclean
-
- cp "${config}" "${ubdir}/.config"
- make -C "${ubdir}" olddefconfig
- make -C "${ubdir}" -j"$(nproc)" all
-
- for f in "${ubdir}"/u-boot "${ubdir}"/u-boot.bin \
- "${ubdir}"/u-boot.dtb \
- "${ubdir}"/u-boot.img \
- "${ubdir}"/u-boot.itb \
- "${ubdir}"/u-boot.elf
- do
- if [ -f "$f" ]; then
- mv "$f" "${dest_dir}/"
- fi
- done
-
- make -C "${ubdir}" distclean
-}
-
-main $@