Files
pico/build_tzpuPico.sh
2026-03-29 22:05:52 +01:00

130 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
#########################################################################################################
## Copyright (c) 2019-2026 Philip Smart <info@eaw.app>
## Licensed under the GNU General Public License v3. See LICENSE-SOFTWARE.txt.
#########################################################################################################
export PICO_PATH=/dvlp/Projects/pico/
export PICO_SDK_PATH=${PICO_PATH}/pico-sdk/
export PICO_SDK_EXAMPLE_PATH=${PICO_PATH}/pico-examples/
export PICO_SDK_PROJECTS_PATH=${PICO_PATH}/projects/
export PICO_SDK_PROJECTS_PATH_PICO=${PICO_PATH}/projects/tzpuPico
export PICO_SDK_PROJECTS_PATH_PICOESP32=${PICO_PATH}/projects/tzpuPico/esp32
export NAS_DST=/srv2/build/
echo "****************************************************************************"
echo "* Building tzpuPico $1 "
echo "****************************************************************************"
echo ""
#echo "Reverting tiny_usb..."
#cd $PICO_SDK_PATH/lib/
#rm -fr tinyusb
#cp -pr tinyusb.orig tinyusb
OLDVERSION=$(cat ${PICO_SDK_PROJECTS_PATH_PICO}/version.txt)
NEWVERSION=$(perl -e "$(echo "print $(cat ${PICO_SDK_PROJECTS_PATH_PICO}/version.txt)+0.001")")
echo "Building tzpuPico..."
cd ${PICO_SDK_PROJECTS_PATH_PICO}/
echo "Backing up version (${OLDVERSION}) to ${PICO_SDK_PROJECTS_PATH}/versions/pz80_${OLDVERSION}_$(date +'%y%m%d%H%M').tar.gz..."
tar -cvzf ${PICO_SDK_PROJECTS_PATH}/versions/pz80_${OLDVERSION}_$(date +'%y%m%d%H%M').tar.gz \
src pico_sdk_import.cmake pico_extras_import.cmake version.txt CMakeLists.txt
if [[ $? != 0 ]]; then
echo "Backup failure!"
cd ${PICO_PATH}
exit 1
fi
# Ensure our versions of board etc are in the SDK.
cp ${PICO_PATH}/picoZ80.h.tmpl ${PICO_SDK_PATH}/src/boards/include/boards/picoZ80.h
# Prepare build directory.
rm -fr build
mkdir -p build
cd build
#cmake -DPICO_BOARD=pimoroni_pga2350 -DPICO_PLATFORM=rp2350-arm-s -DPICO_COPY_TO_RAM=0 ..
if [[ "$1" == "DEBUG" ]]; then
cmake -DCMAKE_BUILD_TYPE=Debug -DPICO_COPY_TO_RAM=0 -DPICO_PLATFORM=rp2350-arm-s -DPICO_BOARD=picoZ80 ..
else
cmake -DPICO_COPY_TO_RAM=0 -DPICO_PLATFORM=rp2350-arm-s -DPICO_BOARD=picoZ80 ..
fi
if [[ $? != 0 ]]; then
echo "CMAKE failure!"
cd ${PICO_PATH}
exit 2
fi
make clean
#make VERBOSE=1 -j4
make -j4
if [[ $? != 0 ]]; then
echo "Build failure!"
cd ${PICO_PATH}
exit 3
fi
# Update to next version as this version has built without error.
echo ${NEWVERSION} > ${PICO_SDK_PROJECTS_PATH_PICO}/version.txt
cd ..
echo "Copying binaries to project dir..."
echo ""
mkdir -p ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2/
mkdir -p ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/
for f in $(find ${PICO_SDK_PROJECTS_PATH_PICO}/src/model/* -maxdepth 0 -type d)
do
FILE=$(basename $f)
#VERSION=$(cat ${f}/version.txt)
VERSION=$(perl -e "$(echo "print $(cat ${f}/version.txt)-0.001")")
echo "Target: ${FILE}"
if [ -f ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2 ]; then
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2 ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2/${FILE}_${VERSION}.uf2
fi
if [ -f ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.bin ]; then
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.bin ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/${FILE}_${VERSION}.bin
else
for vf in $(ls -1 ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}*.bin 2>/dev/null)
do
VARIANTNAME=$(basename ${vf} .bin | sed "s/${FILE}_//g")
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}_${VARIANTNAME}.bin ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/${FILE}_${VARIANTNAME}_${VERSION}.bin
done
fi
# if [ -f ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2 ]; then
# ${PICO_SDK_PROJECTS_PATH_PICO}/build/_deps/picotool/picotool info -a ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2
# fi
if [ -f ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2 ]; then
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.uf2 ${NAS_DST}/${FILE}_${VERSION}.uf2
fi
if [ -f ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.bin ]; then
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}.bin ${NAS_DST}/${FILE}_${VERSION}.bin
else
for vf in $(ls -1 ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}*.bin 2>/dev/null)
do
VARIANTNAME=$(basename ${vf} .bin | sed "s/${FILE}_//g")
cp ${PICO_SDK_PROJECTS_PATH_PICO}/build/bin/model/${FILE}/${FILE}_${VARIANTNAME}.bin ${NAS_DST}/${FILE}_${VARIANTNAME}_${VERSION}.bin
done
fi
done
ls -lart ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2/ ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/
cp ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2/* /srv2/build/
cp ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/* /srv2/build/
mkdir -p ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2.bak
mkdir -p ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin.bak
mv ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2/* ${PICO_SDK_PROJECTS_PATH_PICO}/fw/uf2.bak/
mv ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin/* ${PICO_SDK_PROJECTS_PATH_PICO}/fw/bin.bak/
if [[ "$1" = "ALL" ]]; then
cd ${PICO_SDK_PROJECTS_PATH_PICOESP32}/
docker run --rm --privileged --volume /dev:/dev --volume /sys:/sys:ro --volume /dev/bus/usb:/dev/bus/usb -v $PWD:/project -w /project -it espressif/idf:release-v5.4 idf.py clean build
fi
# Save the esp32 backups too, out of the main dev tree.
mv ${PICO_SDK_PROJECTS_PATH_PICOESP32}/versions/* ${PICO_SDK_PROJECTS_PATH}/versions/
rsync -ah ${PICO_SDK_PROJECTS_PATH}/versions/ /srv2/dvlp/versions/ 2>/dev/null
echo ""
echo "****************************************************************************"
echo "* End of tzpuPico build... *"
echo "****************************************************************************"