picoco/scripts/install_picotool.bash
2025-02-19 11:22:12 +01:00

76 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
###############################################
#
# Download and compile `picotool`.
# src: https://github.com/raspberrypi/picotool
#
# The Pico C SDK must be installed before,
# see: `install_sdk.bash`.
#
# ex: ./install_picotool.bash 2.1.0
# NOTE: the version passed must match the SDK
# version installed
#
###############################################
PICOTOOL_VERSION=$1
REGEX_VERSION="^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}$"
if [[ -z ${INSTALL_PATH} ]]
then
INSTALL_PATH=${PWD}
fi
usage() {
echo "usage:"
echo "./install_picotool.bash <version> (ex: ./install_picotool.bash 2.1.0)"
}
if [[ ! "${PICOTOOL_VERSION}" =~ ${REGEX_VERSION} ]]
then
echo "error: unable to parse the picotool version: '${PICOTOOL_VERSION}'"
usage
exit 1
fi
if [[ ! -d ${INSTALL_PATH}/sdk/${PICOTOOL_VERSION} ]]
then
echo "error: SDK ${PICOTOOL_VERSION} must be installed"
exit 1
fi
if [[ ! -d ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION} ]]
then
echo "install dependencies..."
sudo apt install build-essential pkg-config libusb-1.0-0-dev cmake
echo "installing picotool..."
wget https://github.com/raspberrypi/picotool/releases/download/${PICOTOOL_VERSION}/picotool-${PICOTOOL_VERSION}.tar.gz -P ${INSTALL_PATH}
if [[ $? != 0 ]]
then
echo "error: unable to get picotool VERSION: ${PICOTOOL_VERSION}"
exit 1
fi
mkdir -p ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}
tar xzvf ${INSTALL_PATH}/picotool-${PICOTOOL_VERSION}.tar.gz -C ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}
rm ${INSTALL_PATH}/picotool-${PICOTOOL_VERSION}.tar.gz
fi
echo "building picotool..."
mkdir -p ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
PICO_SDK_PATH=${INSTALL_PATH}/sdk/${PICOTOOL_VERSION}
cd ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
cmake ..
make -C ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build
picotool_version=$(${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/build/picotool version)
echo "${picotool_version} compiled successfully"
echo "adding udev picotool rules..."
sudo cp ${INSTALL_PATH}/picotool/${PICOTOOL_VERSION}/udev/99-picotool.rules /etc/udev/rules.d/
echo "picotool installation completed"