Files
lbmk/script/build/fw/serprog
T
Leah Rowe 1e89264ce3 update/project/*: merge to update/project/trees
Just one script.

Just one!

Well, two, but the 2nd one already existed:
logic in update/project/trees and
update/project/repo was merged into
include/git.sh and update/project/build
was renamed to update/project/trees; an -f
option was added, which calls the functions
under git.sh

so git clones are now handled by the main build
script (for handling makefiles and defconfigs)
but the logic there is a stub, where git.sh
does all the actual heavy lifting

this cuts the file count down by two, and reduces
sloccount a reasonable amount because much of
the logic already exists in the build script, when
it comes to handling targets. git.sh was adjusted
to integrate with this, rather than act standalone

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07 10:26:11 +01:00

83 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env sh
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2023 Riku Viitanen <riku.viitanen@protonmail.com>
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e
. "include/err.sh"
eval "$(setvars "" platform pico_sdk_dir pico_src_dir stm32_src_dir \
boards_dir)"
pico_src_dir=src/pico-serprog
pico_sdk_dir=src/pico-sdk
stm32_src_dir=src/stm32-vserprog
usage="usage: ./build firmware serprog <rp2040|stm32> [board]"
main()
{
[ -z "${1+x}" ] && err "${usage}"
if [ "${1}" = "rp2040" ]; then
platform="rp2040"
boards_dir=${pico_sdk_dir}/src/boards/include/boards
[ -d "${pico_src_dir}/" ] || \
x_ ./update project trees -f "rpi-pico-serprog"
elif [ "${1}" = "stm32" ]; then
platform="stm32"
boards_dir=${stm32_src_dir}/boards
[ -d "${stm32_src_dir}/" ] || \
x_ ./update project trees -f "stm32-vserprog"
else
err "${usage}"
fi
x_ mkdir -p "bin/serprog_${platform}"
if [ $# -gt 1 ] ; then
[ "${2}" = "list" ] && print_boards ${boards_dir} && return 0
build_${platform}_rom "${2}"
else
printf "Building all serprog targets\n"
list_boards "${boards_dir}" | while read board; do
build_${platform}_rom "${board}"
done
fi
}
build_rp2040_rom()
{
board=${1}
printf "Building pico-serprog for ${board}\n"
x_ cmake -DPICO_BOARD="${board}" -DPICO_SDK_PATH="${pico_sdk_dir}" \
-B "${pico_src_dir}/build" "${pico_src_dir}"
x_ cmake --build "${pico_src_dir}/build"
x_ mv ${pico_src_dir}/build/pico_serprog.uf2 \
bin/serprog_rp2040/serprog_${board}.uf2
printf "output to bin/serprog_rp2040/serprog_${board}.uf2\n"
}
build_stm32_rom()
{
board=${1}
printf "Building stm32-vserprog for ${board}\n"
x_ make -C ${stm32_src_dir} libopencm3-just-make BOARD=${board}
x_ make -C ${stm32_src_dir} BOARD=${board}
x_ mv ${stm32_src_dir}/stm32-vserprog.hex \
bin/serprog_stm32/serprog_${board}.hex
printf "output to bin/serprog_stm32/serprog_${board}.hex\n"
}
print_boards()
{
printf "Available boards:\n"
list_boards "${1}"
}
list_boards()
{
basename -a -s .h ${1}/*.h
}
main $@